STM32L– Система тактирования (обзор)
7 Декабря 2011
К комментариям
Сегодня по плану обзор системы тактирования (модуль Reset and clock control (RCC)).
Согласно документации (Reference manual RM0038) в качестве источника тактовых сигналов (SYSCLK – системные тактовые сигналы) могут выступать четыре источника:
- HSI oscillator clock – внутренний высокочастотный RC генератор
- HSE oscillator clock – внешний высокочастотный генератор
- PLL clock – ситема ФАПЧ
- MSI (multispeed internal) oscillator clock – внутренний RC генератор с возможностью выбора частоты генерации </ul> Так же имеются два вторичных источника тактовых сигналов:
- LSI RC – внутренний низкочастотный RC-генератор (37 кГц)
- LSE crystal – внешний низкочастотный кварцевый генератор </ul> Функциональная схема: HSE oscillator clock – внешний высокочастотный генератор Источником сигналов для HSE генератора может быть как внешний тактовый генератор, так и обычный кварцевый или керамический резонатор. Для установленного на плате STM32L-Discovery микроконтроллера частота внешнего сигнала не должна превышать 32МГц, в случае если вы используете внешний тактовый генератор, а при использовании кварцевого (керамического) резонатора его частота должна быть от 1 до 24 МГц. Внешний сигнал может иметь форму пилы, синусоиды или прямоугольных импульсов со скважностью 50%. HSI oscillator clock – внутренний высокочастотный RC генератор HSI генератор представляет собой RC-генератор с частотой 16 МГц, он тактирует модуль АЦП, может быть источником тактовых сигналов (SYSCLK), а так же может служить источником опорных сигналов для ФАПЧ. Данный генератор проходит калибровку на заводе и производитель гарантирует точность в 1% при температуре 25 градусов Цельсия. Калибровочное значение запрограммированное на заводе автоматически загружается в регистр ICSCR после сброса микроконтроллера (данный регистр доступен только для чтения). Дополнительно существует возможность самостоятельной подстройки генератора (регистр HSITRIM). Данный генератор может так же использоваться как авариный, в случае отказа HSE генератора (более подробно в разделе - Clock security system (CSS)). PLL clock – ситема ФАПЧ Система ФАПЧ (фазовая автоподстройка частоты) грубо говоря производит умножение опорного сигнала (частота входного сигнала должна лежать в пределах от 2 до 24 МГц) с заданным коэффициентом, однако частота на выходе системы ФАПЧ недолжна превышать 32 МГц (если используется для системного тактового сигнала SYSCLK). К сожалению, использование модуля USB, несколько ограничивает использование системы ФАПЧ в качестве источника системных тактовых сигналов, так как источником требуемой тактовой частоты USB модуля равной 48 МГц является выход ФАПЧ (до делителя) и в этом случае SYSCLK может принимать значения 12, 16 и 24 МГц: MSI (multispeed internal) oscillator clock – внутренний RC генератор с возможностью выбора частоты генерации MSI генератор представляет собой RC-генератор с фиксированным набором частот: 65,536 кГц; 131,072 кГц; 262,144 кГц; 524,288 кГц; 1,048 МГц; 2,097 МГц; 4,194 МГц. Данный генератор автоматически используется в качестве источника тактовых сигналов после сброса и пробуждения из режимов пониженного энергопотребления (Stop, Standby). После сброса и выходе из режима Standby частота генератора принимает значение по умолчанию (2,097 МГц). Генератор проходит калибровку на заводе и производитель гарантирует точность в 1% при температуре 25 градусов Цельсия. Калибровочное значение запрограммированное на заводе автоматически загружается в регистр ICSCR после сброса микроконтроллера (данный регистр доступен только для чтения). Дополнительно существует возможность самостоятельной подстройки генератора (регистр MSITRIM). LSI RC – внутренний низкочастотный RC-генератор LSI генератор представляет собой RC-генератор с частотой 37 кГц, используется для тактирования независимого сторожевого таймера (IWDG), модуля часов реального времени (RTC) и модуля ЖКИ индикатора. LSE crystal – внешний низкочастотный кварцевый генератор Источником сигналов для LSE генератора может быть как внешний тактовый генератор (с частотой до 1 МГц), так и низкочастотный кварцевый или керамический резонатор (32,768 кГц). Внешний сигнал может иметь форму пилы, синусоиды или прямоугольных импульсов со скважностью 50%. Генератор может использоваться для тактирования таймеров общего назначения (номера 9, 10 и 11), модуля часов реального времени (RTC) и модуля ЖКИ индикатора. MCO – выход тактовой частоты Для контроля частот основных источников тактового сигнала и (или) синхронизации внешних устройств предусмотрен выход MCO (Microcontroller clock output). В один момент времени можно “вывести” только один сигнал: Стоит обратить внимание на ограничение максимальных частот в зависимости от режима работы (напряжения питания ядра): Пример 1 Как мы уже знаем после сброса в качестве системной тактовой частоты используется внутренний MSI генератор, с частотой по умолчанию 2,097 МГц. Воспользуемся выходом MCO для контроля частоты. Объявим вывод: #define PIN_MCO A, 8, HIGH, MODE_AF_PUSH_PULL, SPEED_40MHZ, AF0 Настроим его: PIN_CONFIGURATION(PIN_MCO); Выбор источников сигнала производится установкой соответствующих битов в регистре RCC_CFGR. К сожалению в заголовочном файле stm32l1xx.h не описаны источники, поэтому опишем их сами (так как пока не используем стандартную библиотеку): И выберем в качестве источника MSI генератор: RCC->CFGR &= ~RCC_CFGR_MCOSEL; RCC->CFGR |= RCC_CFGR_MCOSEL_MSI; После компиляции и прошивки, на выводе PA8 получил частоту 2,102 МГц. Попробуем изменить частоту MSI генератора. Выбор частоты производится установкой соответствующих битов в регистре RCC_ICSCR Повышаем частоту до 4,194 Мгц: RCC->ICSCR &= ~RCC_ICSCR_MSIRANGE; RCC->ICSCR |= RCC_ICSCR_MSIRANGE_6; Компилируем, прошиваем и получаем 4,206 МГц. Внимание! Так как сейчас после сброса мы “сразу” изменяем частоту генератора MSI, а он по умолчанию используется для системной тактовой частоты, то выбор диапазона 0 или 1 приведет к невозможности программирования мк. Если вы все таки попали в данное положение, то для восстановления работоспособности достаточно вывод Boot0 подключить к Vcc и выполнить сброс мк. Пример 2 После сброса выключены все генераторы кроме MSI. Попробуем включить HSI генератор. Общая процедура такова:
- разрешить работу генератора (установка соотв. битов)
- дождаться стабилизации работы (ожидание установки соотв. битов)
- использовать по задумке </ul> Разрешаем работу генератора HSI, установкой бита HSION в регистре RCC_CR: RCC->CR |= RCC_CR_HSION; Ожидаем окончания стабилизации работы (ожидание установки бита HSIRDY): Выводим сигнал на вывод MCO: После компиляции и прошивки, на выводе PA8 получил частоту 15,91 МГц. -------------------------- На этом обзорная часть заканчивается. Ещё раз обращаю внимание, что после сброса в качестве системной тактовой частоты используется внутренний MSI генератор (2,097 МГц). Исходный код http://dev.ziblog.ru/stm32l-discovery-demo/downloads ветка demo-002 Документация на микроконтроллер: DS6876: Справочный листок (Основные характеристики микроконтроллера) RM0038: STM32L151xx and STM32L152xx advanced ARM-based 32-bit MCUs (Руководство пользователя) STM32L151xx and STM32L152xx ultralow power limitations (Известные на данный момент ошибки) Полный комплект документации доступен на сайте производителя: перейти. --------------------- Документация по плате: UM1079: STM32L-DISCOVERY (Руководство пользователя) Board schematics for STM32L-DISCOVERY board (Принципиальная схема)
О различиях между L1, F1 и F2 можно прочитать в документе: AN3364: Migration and compatibility guidelines for STM32 microcontroller applications.
comments powered by Disqus