Измерение частоты сигнала на STM32

#c #stm32 #stm32f4discovery

#c #stm32 #обнаружение stm32f4

Вопрос:

Мне нужно измерить частоту входного сигнала с помощью stm32f407-Discovery и отправлять его один раз в секунду. Частота контроллера составляет 168 МГц. Максимальная входная частота составляет 6 МГц. Если я использую EXTI, я могу измерить максимум 4 МГц. По мере увеличения частоты изменяющиеся значения больше похожи на шум. Хотя расчетная максимальная частота прерываний составляет приблизительно 13 МГц. Каков наилучший способ решения этой проблемы?

Комментарии:

1. Здесь задействованы две темы: 1) Не используйте EXIT . Это вызовет миллионы обработчиков прерываний в секунду. засорите свой MCU и ограничьте частоту. Вместо этого используйте счетчик с внешним триггером. Я думаю, что STM называет это таймером с внешними часами. 2) Достижение хорошего качества сигнала, вероятно, заслуживает отдельного вопроса. При более низкой частоте полезен триггер Шмитта. На более высоких частотах полезны другие измерения. Получение хороших результатов в широком диапазоне частот требует дополнительных умственных способностей.

Ответ №1:

Используйте этот сигнал в качестве сигнала блокировки для одного из таймеров.

Используйте другой таймер для запуска передачи DMA через регулярные промежутки времени. Изменение регистра CNT будет пропорционально частоте сигнала.

Остальное — очень простая математика.