Изменение тактовой частоты на STM32 без воздействия на периферию? - PullRequest
0 голосов
/ 03 мая 2018

Я немного растерялся с управлением часами STM32L486.

Я хочу изменить тактовую частоту во время выполнения. Обычно я хочу быть в режиме низкого энергопотребления / в спящем режиме большую часть времени, а в остальное время - в остальное время.

Я знаю, как настроить SysClk на частоте 80 МГц с помощью PLL или на 1 МГц с помощью MSI, например.

Однако проблема в том, что изменение Sysclk приводит к путанице при настройке большинства периферийных устройств. Например, USART больше не работает, если я меняю часы.

Это обычная практика (изменение частоты во время выполнения)?

Мне нужно использовать следующие периферийные устройства: LPTIM (без проблем, поскольку они могут работать независимо от SysClk), АЦП, ускоритель AES, USART, TIM, SPI.

1 Ответ

0 голосов
/ 03 мая 2018

На STM32L4xx это не так сложно, если вы посмотрите на диаграмму «Дерево часов» в техническом описании, многие периферийные устройства, которые зависят от часов (USART, LPTIM, I2C, ..), могут управляться с другими источниками тактовых импульсов, чем шины BUS, также можно использовать LSE или внутренний HSI.

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

...