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 с.

Другие вопросы по тегам