Общие вопросы по таймерам [STM32 и CubeMx]

Я сам учусь, как обращаться с таймерами в CubeMx. У меня есть несколько простых вопросов.

Первый вопрос:

В дереве часов я вижу частоты шины периферийных устройств APB1/APB2 и таймеров. Я думал, что когда я устанавливаю прескалер, тактовая частота таймера APBx равна частоте, деленной на прескалер, но на самом деле это периферийная тактовая частота APBx.

Какая реальная разница?

Второй вопрос:

Я установил таймер 2 в режиме ввода ШИМ для измерения периода входного сигнала. Итак, в обратном вызове прерывания я могу сказать:

period = HAL_TIM_ReadCapturedValue(&htim1, TIM_CHANNEL_2);

Это говорит о периоде в миллисекундах? Или это правильный способ спросить период?

Третий вопрос:

Я прочитал в примечании к приложению:

Частота TIMxCLK установлена ​​на 72 МГц, предварительный делитель равен 0x0, поэтому тактовая частота счетчика TIM2 составляет 72 МГц. Таким образом, минимальное значение частоты для измерения составляет 1100 Гц.

Как рассчитать эту минимальную частоту?

При настройке режима ввода ШИМ или режима захвата ввода для измерения внешнего сигнала, как мне эффективно выбрать предварительный делитель и период счетчика в CubeMx в соответствии с моим частотным диапазоном?

Какой микроконтроллер?
L432KC Нуклео.

Ответы (1)

Что касается вопроса AHB/APB, его лучше всего объяснить, взглянув на дерево часов.
AHB и APB — это разные шины. У AHB есть память и ядро, у APB есть периферия. С точки зрения энергии они могут иметь разную скорость.

дерево часов stm32l432

Особым случаем в чипах ST является то, что периферийные устройства, включая регистры таймеров , синхронизируются с частотой PCLK1, а источник синхронизации таймера кратен PCLK1. Это позволяет использовать более медленный APB1, но по-прежнему позволяет использовать более быстрые таймеры.

Это говорит о периоде в миллисекундах?

Это дает результат в тиках таймера.

Частота TIMxCLK установлена ​​на 72 МГц, предварительный делитель равен 0x0, поэтому тактовая частота счетчика TIM2 составляет 72 МГц. Таким образом, минимальное значение частоты для измерения составляет 1100 Гц.

Как рассчитать эту минимальную частоту?

Максимальная частота часов/таймера = 72 МГц/(2^16) = 1,09863281 килогерц.

Как мне эффективно выбрать предварительный делитель и период счетчика в CubeMx в соответствии с моим частотным диапазоном?

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

Дело не в АХБ. Например, в дереве часов, которое вы прикрепили, скажем, APB1 Presc переходит к PCLK (периферийные устройства APB1) и X1, X2 (к TIMx). Таким образом, при настройке прескалера в CubeMx я должен использовать периферийные часы APB1 в качестве эталона, а не часы TIMx. Почему это? И как мне получить сигнал периода с тиками таймера?
@XavierPachecoPaulino см. редактировать
Спасибо. Пока что мое единственное сомнение связано с вопросом 2. Вы сказали мне, что это дает результат в тиках таймера. Итак, как мне вывести период сигнала в мс?
@XavierPachecoPaulino Вы умножаете его на период часов таймера.