STM32H7 и преобразование DFSDM с запуском по таймеру - как?
Последние два вечера я безуспешно пытался настроить преобразование DFSDM по таймеру на MPU STM32H7A3. Погуглить Я не нашел ни одного полного примера, возможно, потому, что DFSDM - более сложная тема.
Задача: заполнить буфер фильтра N отсчетами каждые 1 с.
Прилагаю скриншоты настройки CubeMX. Преобразование работает должным образом в непрерывном режиме, поэтому настройки канала и времени верны.
В коде перед запуском таймера 1 с (
HAL_TIM_Base_Start()
) Я звоню
HAL_DFSDM_FilterInjectedMsbStart_DMA()
.
Ни один
DFSDM1_FLT2_IRQHandler()
ни
DMA1_Stream2_IRQHandler()
увольняется.
Что мне не хватает?
1 ответ
В этой настройке не было ничего плохого. Проблема заключалась в том, что буфер фильтра был слишком большим, и мне не хватило терпения.
Однако этот подход мне не подходит. При каждом такте таймера в буфер добавляется новое значение и
HAL_DFSDM_FilterInjConvCpltCallback()
вызывается только при заполнении буферов фильтра. Чтобы получить серию быстрых измерений (например, частоту 1 кГц), я мог бы увеличить скорость таймера, но это привело бы к слишком большой ненужной нагрузке на ЦП, в то время как меня не волнует точная частота, пока она известна. Я бы лучше использовал обычное преобразование, начинающееся, например, с интервалом в 1 с.