- Если я отключу DMAContinuousRequests, будет ли ADC автоматически запускать запрос DMA каждый раз, когда он завершает преобразование?
- Что, если я включу DMAContinousRequests, будет ли DMA передавать образец ADC несколько раз, если между ними не было нового преобразования?
Вот что написано в руководстве:
[...] этот параметр указывает, выполняются ли запросы DMA в однократном режиме (передача DMA останавливается при достижении количества преобразований) или выполняются в непрерывном режиме (передача DMA неограничена, независимо от количества преобразований).
Что я хочу сделать
Я хочу следить за входом, чтобы найти край, превышающий пороговое значение. Если я обнаружил один, я хочу сохранить следующие X семплов в памяти через DMA с частотой дискретизации Y семплов / с.
(например: X = 64 и Y = 10k)
Моя идея
- настроить аналоговый сторожевой таймер
- при превышении порога используйте обратный вызов, чтобы установить АЦП в режим DMA и запустить его с помощью таймера (режим непрерывного преобразования отключен, а DMAContinousRequests отключен)
- вернуться в сторожевой режим после X выборок (буфер DMA заполнен)
Вернуться к вопросу
Правильно ли настроен мой режим непрерывного преобразования и постоянные запросы DMA для этой цели?