Size: a a a

2021 March 30

s

stD in STM32
На Ф407 сталкивался с такой ситуацией. Включаешь приём из УАРТа через ДМА и не срабатывает колбек по приёму всего буфера, по половине срабатывает, а по полному нет. Окозалось что нужно включить прерывание у УАРТА хотя оно там не нужно. Такие дела.
источник

СО

Серега О. in STM32
Alex Bondarenko
Критическое напряжение питания. (Критическое - по нижнему уровню)  можно попробовать.  Можно попробовать сделать так. Это для того, чтоб с подтяжкой ножка правильно мерилась - я правильно понимаю?
Критическое напряжение питания чего(самой меги) , и вы хотите чтобы та же мега вам дрыгнула ногой? Ниче не понимаю. А потом другим процом с помощью АЦП вы хотите это замерять?может обрисуете задачу полностью . Мне уже самому интересно😊
источник

VO

Valeriy Osipov in STM32
Просто получается что есть два флага, у АЦП - ADC_CFGR->DMACFG, а у ДМА - DMA_CCR->CIRC. И чтобы значения писались по кругу нужно установить ИХ ОБА. Хотя здравый смысл подсказывает, что можно было бы обойтись и одним. Чёт перемудрили СТшники
источник

s

stD in STM32
С АЦП там вообще накрутили. От души веселились.
источник

s

stD in STM32
Valeriy Osipov
Просто получается что есть два флага, у АЦП - ADC_CFGR->DMACFG, а у ДМА - DMA_CCR->CIRC. И чтобы значения писались по кругу нужно установить ИХ ОБА. Хотя здравый смысл подсказывает, что можно было бы обойтись и одним. Чёт перемудрили СТшники
Можно пойти от обратного: если вам нужно только один раз заполнить буфер ДМА, тогда вроде бы не нужно включать циркуляр у ДМА. Но, АЦП то не знает как ему работать с ДМА - постоянно дёргать или только несколько раз.
источник

s

stD in STM32
Это же две разные сущности.
источник

s

stD in STM32
АЦП и ДМА я имею в виду.
источник

s

stD in STM32
То есть грубо говоря надо представить себе что ДМА ничего ни о ком не знает, может только сигналы принимать.
источник

s

stD in STM32
И может либо один раз буфер заполнить, либо в цикле крутится.
источник

VO

Valeriy Osipov in STM32
Тогда откуда АЦП знает, сколько раз он может дернуть ДМА? Допустим ДМА не кольцевой, его размер - 20. Но АЦП то всё равно не знает, какой размер буфера ДМА.
источник

s

stD in STM32
Надо подумать, вы загнали меня в тупик.
источник

VO

Valeriy Osipov in STM32
"АЦП то не знает как ему работать с ДМА - постоянно дёргать или только несколько раз."

вот тогда тут загадка, откуда АЦП знает, сколько именно раз. хорошо, не постоянно. Хотя почему бы и нет, ну взведется флаг ERROR OVERRUN, девелопер сам дурак, нужно было остановить таймер по заполнению буфера :)
источник

VO

Valeriy Osipov in STM32
а, ок, в даташыте нашел вроде
источник

VO

Valeriy Osipov in STM32
ADC останавливается по DMA_EOT прерыванию
источник

s

stD in STM32
Ага. Понятно.
источник

VO

Valeriy Osipov in STM32
что это за прерывание я правда не найду :D End of ...?
источник

VO

Valeriy Osipov in STM32
End of transfer?
источник

s

stD in STM32
Да, видимо End of transfer. Получается следующее: когда это прерывание происходит, АЦП понимает что можно пихать следующие данные. Это позволяет избежать возникновения ошибки переполнения.

АЦП то может работать быстрее чем ДМА переварит.
источник

АС

Алексей Сугоняев... in STM32
Dmitry Petrov
Скорее всего так и есть
Экспериментировал вчера, OptionByte не содержит полей NRST_MODE, кое что для ноги RESET есть, но это то как она будет работать по выводу состояния МК. В общем не помогло ничего кроме JLink-а, после отладки кода из под Ozona на этом кристалле, все встало на места его стало видно под STLink.
источник

OD

Oleg Dvoryadkin in STM32
В закреплённом сообщении не нашёл. Может кому пригодится. https://radiohlam.ru/stm32_1/
источник