Цитата(Atridies @ Jul 3 2018, 09:33)

Использую АЦП в микроконтроллере STM32F107 в режиме сбора данных с 9 регулярных каналов.
При сборе данные последовательно с каждого выхода (без DMA, по прерыванию от АЦП самостоятельно запускаю новое измерение) - никаких проблем нет. Но если я использую режим SCAN (сбор данных идет через DMA, обработка - в прерывании от DMA) - то периодически, при определенных условиях появляется сдвиг результатов на один канал. Эти условия - переключение в другое состояние некоторых выходов. Как и с чем это может быть связано - непонятно.
Добро пожаловать в клуб!
Такое явление я наблюдал, о чем даже писал здесь. Может Вам как заинтересованному удастся найти тему

.
Явление возникало на F103 спорадически при внешних электрических помехах, - включении моторов и питания устройств в округе, - хотя общая работоспособность процессора не нарушалась, т.е. не было слётов, перезапусков, зависаний. Я сделал вывод, что имеет место особенность цепей в процессоре аппаратно "сглатывать" какие-то флаги, что приводит к рассинхронизации ADC и DMA. Бороться различными дополнительными фильтрами питания я посчитал нецелесообразным: на всякие аппаратные решения всегда найдется помеха с вихрево-заточенной левой резьбой, а уже примененная схемотехника была достаточно зрела. Поборол программно, перенастраивая DMA и ADC каждый раз. Конечно, нет гарантии, что в цикле преобразования между перезапусками не произойдет сбой. Я пытаюсь предотвратить неверные результаты путем фильтрации и вообще игнорированием результата, если анализ флагов периферии дает основание подозревать, что последний цикл сбойнул.
Опасаюсь, что надежного решения на все случаи жизни нет, т.к. проблема заложена в аппаратуре процессора.
P.S. Слабо всплывает в памяти, что на тему я писал не здесь, а в форуме ST.
P.P.S. Пошерстил свои темы в ST - нет. Одна из тем здесь:
https://electronix.ru/forum/index.php?showt...t&p=1269738
Сообщение отредактировал KnightIgor - Jul 5 2018, 11:24