Настройка таймера STM32 в качестве частотомера

Я пытаюсь настроить один из входов таймера на STM32, чтобы он вел себя как счетчик частоты для внешнего сигнала. Техническое описание STM32 описывает «режим захвата ввода» в разделе 17.3.6 (стр. 342).

Насколько я понимаю этот режим, всякий раз, когда на выбранный вход TIMx_CHx поступает вход, процессор фиксирует значение автономного внутреннего счетчика. Затем можно рассчитать частоту, используя значение счетчика и частоту внутреннего счетчика.

Я пытаюсь включить это в CubeMX, и у меня возникают трудности с сопоставлением объяснения таблицы данных с настройками в CubeMX. Это то, что я сейчас настроил. Это правильно?

Кроме того, могу ли я запустить несколько независимых входов в отдельные каналы на одном и том же таймере для одновременного захвата времени?

введите описание изображения здесь

Вы нашли подробное описание того, что делать, какое значение идет в какой бит регистра. Там даже есть примеры кода. Почему тогда у вас проблемы с CubeMX?

Ответы (1)

Счетчики частоты могут быстро усложняться в зависимости от желаемой полосы пропускания и тактовой частоты внутренних часов, а также размера регистров, содержащих такты часов и входные такты.

Я имею в виду, что похоже, что это будет работать, но вы должны убедиться, что (1) счетчик часов и счетчик частоты обновляются в конце выборки (2) что ни один из них не переполнится во время выборки (3) что установка дать вам желаемое разрешение и (4) что MCU внесет коррективы, если пропускная способность достаточно велика, где она будет переполняться некоторое время и / или опускаться очень низко. Первый из них приведет к неправильным результатам, а второй резко снизит точность при низких частотах.

Спасибо за понимание. Я измеряю обороты двигателя в диапазоне от 1к до 6кГц
@user8908459 user8908459 Как вы измеряете обороты в минуту? Датчик сопротивления?
Да, используя MAX9926
В этом случае имейте в виду, что вы читаете частоту проходов зуба на шестерне, а не частоту шестерни. Вам нужно будет разделить на количество зубов, это означает, что ваши тики на входном захвате будут значительно выше, чем 6k. Если у вас есть 16-битный регистр таймера, вы должны быть в порядке, если только на шестерне нет сумасшедшего количества зубьев.