Перейти к содержанию

Спецификация RCC STM32F1

Перевод спецификации STM32F10xxx с небольшим количеством примечаний.

7.2 Тактирование

Для управления системным сигналом тактирования SYSCLK можно использовать три разных источника тактирования:

  • генератор HSI;
  • источник HSE;
  • модуль PLL.

Микроконтроллер имеет также два вторичных источника тактирования:

  • внутренний низкоскоростной генератор LSI с частовой 40 кГц, который управляет независимым сторожевым таймером и, опционально, часами реального времени RTC, он (LSI) также используется для автоматического выхода из режима остановки/ожидания;
  • внешний низкоскоростной источник LSE частотой 32.768 кГц, который дополнительно управляет сигналом часов реального времени RTCCLK.

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

Примечания к схеме тактирования на странице 93/1136 Reference Manual:

  1. когда HSI используется в качестве входа тактовой частоты для PLL (ФАПЧ), максимальная тактовая частота системного сигнала, которую можно достичь, составляет 64 МГц;
  2. полную информацию о характеристиках внутреннего и внешнего источника синхронизации см. в разделе электрических характеристик спецификации вашего микроконтроллера.

Фазовая автоподстро́йка частоты (ФАПЧ, англ. PLL) - система автоматического регулирования, подстраивающая фазу управляемого генератора так, чтобы она была равна фазе опорного сигнала либо отличалась на известную функцию от времени.

Опорный сигнал - периодический сигнал, с помощью которого осуществляется синхронизация всех основных элементов системы.

Несколько прескейлеров позволяют настраивать частоту шины AHB, высокоскоростного домена APB2 и низкоскоростного APB1. Максимальная частота доменов AHB и APB2 составляет 72 МГц. Максимально допустимая частота домена APB1 составляет 36 МГц. Интерфейс SDIO в AHB тактируется с фиксированной частотой, равной HCLK/2.

Прескейлер - делитель частоты.

Домен - область адресов памяти, которые используются устройствами (есть несколько областей).

HCLK - это тактовый сигнал, который получается на выходе прескейлера AHB, является производной сигнала SYSCLK и используется для тактирования ядра, шины AHB и модуля DMA.

Модуль RCC подает тактовый сигнал AHB (HCLK) разделенный на 8, на системный таймер (Cortex System timer - SysTick). SysTick может работать либо с этой частотой, либо с частотой, которая настраивается регистром управления и состояния SysTick - SysTick Control and Status register. АЦП тактируются тактовой частотой высокоскоростного домена APB2, деленной на 2, 4, 6 или 8.

Описание регистра SysTick Control and Status register находится в документе PM0056 "Programming manual STM32F10xxx".

Тактовая частота интерфейса программирования флэш-памяти FLITFCLK всегда является тактовой частотой HSI.

Частоты таймеров автоматически фиксируются аппаратно. Есть два случая:

  1. Если прескейлер APB равен 1, тактовые частоты таймеров устанавливаются на ту же частоту, что и частота домена APB, к которому подключены таймеры.
  2. В противном случае для них устанавливается удвоенная частота домена APB, к которому подключены таймеры.

FCLK действует как автономные часы Cortex®-M3. Более подробную информацию можно найти в Техническом справочном руководстве (Arm® Cortex-M3 r1p1 Technical Reference Manual, TRM).

7.2.1 Тактирование от HSE

Высокоскоростной внешний тактовый сигнал HSE может генерироваться из двух возможных источников тактовой частоты:

  • внешний (например, керамический) резонатор;
  • внешний пользовательский сигнал тактирования.

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

Внешний пользовательский сигнал (HSE bypass)

В этом режиме должен присутствовать внешний источник синхронизации. Он может иметь частоту до 25 МГц. Вы выбираете этот режим, устанавливая биты HSEBYP и HSEON в регистре управления тактовым сигналом RCC_CR. Внешний тактовый сигнал (прямоугольный, синусоидальный или треугольный) с коэффициентом заполнения примерно 50% подается на вывод OSC_IN, в то время как вывод OSC_OUT должен оставаться в положении Hi-Z (высокоимпедансное состояние). См. рисунок 9.

Внешний резонатор (HSE crystal)

Внешний генератор с частотой от 4 до 16 МГц имеет преимущество - он обеспечивает очень точную частоту основного тактового сигнала.

Соответствующая аппаратная конфигурация показана на рисунке 9. Более подробную информацию можно найти в разделе электрических характеристик спецификации.

Флаг HSERDY в регистре управления тактовым сигналом RCC_CR указывает, стабилен высокоскоростной внешний генератор или нет. При запуске тактовый сигнал не освобождается до тех пор, пока этот бит не будет установлен аппаратно. Прерывание может быть сгенерировано, если оно разрешено в регистре прерывания по тактовому сигналу RCC_CIR.

Источник HSE можно включать и выключать с помощью бита HSEON в регистре управления тактовым сигналом RCC_CR.

7.2.2 Тактирование от HSI

Тактовый сигнал HSI генерируется внутренним RC-генератором с частотой 8 МГц и может использоваться непосредственно в качестве системного тактового сигнала, или делиться на 2 для использования в качестве входного сигнала PLL.

Преимущество RC-генератора HSI в том, что он обеспечивает источник тактовой частоты при низкой стоимости и без дополнительных компонентов. Он также имеет меньшее время запуска, чем HSE, однако даже с калибровкой частота менее точна, чем у внешнего генератора или керамического резонатора.

Калибровка

Частота RC-генератора может меняться из-за отклонений в производственном процессе, поэтому каждый микроконтроллер калибруется на заводе с точностью 1% при температуре 25°C.

После сброса, заводское значение калибровки загружается в биты HSICAL[7:0] регистра управления тактовым сигналом RCC_CR.

Если ваше устройство подвержено колебаниям напряжения или температуры, это может повлиять на частоту RC-генератора. Частота HSI может быть скорректирована с помощью битов HSITRIM[4:0] в регистре управления тактовым сигналом RCC_CR.

Флаг HSIRDY в регистре управления тактовым сигналом RCC_CR указывает, стабилен или нет генератор HSI. При запуске, выходной тактовый сигнал HSI не освобождается до тех пор, пока этот бит не будет установлен аппаратно.

HSI может быть включен или выключен с помощью бита HSION в регистре управления тактовым сигналом RCC_CR.

Сигнал HSI также может использоваться в качестве резервного источника (Auxiliary clock), если генератор HSE вышел из строя. См. раздел 7.2.7: Система защиты тактового сигнала (Clock security system, CSS).

7.2.3 Модуль PLL

PLL может использоваться для умножения выходной тактовой частоты HSI или HSE. См. рисунок 8 и описание Регистра управления тактовым сигналом RCC_CR.

Настройка PLL (выбор генератора HSI деленного на 2, или генератора HSE для тактирования PLL, а также его коэффициента умножения) должна быть выполнена до включения PLL. После включения PLL эти параметры не могут быть изменены.

Прерывание может быть сгенерировано при готовности PLL, если оно разрешено в регистре прерывания по тактовому сигналу RCC_CIR.

Если в приложении используется интерфейс USB, PLL необходимо настроить на выходную частоту 48 или 72 МГц. Это необходимо для обеспечения работы USBCLK на частоте 48 МГц.

7.2.4 Тактирование от LSE

LSE - это низкоскоростной внешний резонатор (например, керамический) с частотой 32.768 кГц. Его преимущество заключается в том, что он является маломощным, но высокоточным источником тактовых импульсов для периферийного устройства часов реального времени RTC, используемых для синхронизации часов/календаря и других функций.

LSE включается и выключается с помощью бита LSEON в регистре управления области резервирования RCC_BDCR.

Флаг LSERDY в регистре управления области резервирования RCC_BDCR указывает, стабилен кристалл LSE или нет. При запуске выходной тактовый сигнал LSE не освобождается до тех пор, пока этот бит не будет установлен аппаратно. Прерывание может быть сгенерировано, если оно разрешено в регистре прерывания по тактовому сигналу RCC_CIR.

Внешний источник тактирования (LSE bypass)

В этом режиме необходимо обеспечить наличие внешнего источника тактовой частоты. Его частота может составлять до 1 МГц. Выбор этого режима осуществляется установкой битов LSEBYP и LSEON в регистре управления области резервирования RCC_BDCR. Внешний тактовый сигнал (квадратный, синусоидальный или треугольный) с коэффициентом заполнения примерно 50% должен подаваться на вывод OSC32_IN, а вывод OSC32_OUT должен быть оставлен Hi-Z (высокоимпедансное состояние). См. рисунок 9.

7.2.5 Тактирование от LSI

LSI выступает в качестве источника тактового сигнала с низким энергопотреблением, который может работать в режиме останова и ожидания для независимого сторожевого таймера IWDG и блока автоматического пробуждения AWU. Тактовая частота составляет около 40 кГц (в диапазоне от 30 до 60 кГц). Более подробная информация приведена в разделе электрических характеристик спецификации.

LSI можно включать и выключать с помощью бита LSION в регистре управления/статуса RCC_CSR.

Флаг LSIRDY в регистре управления/статуса RCC_CSR указывает, стабилен или нет низкоскоростной внутренний генератор. При запуске, генератор не освобождается до тех пор, пока этот бит не будет установлен аппаратно. Прерывание может быть сгенерировано, если оно разрешено в регистре прерывания по тактовому сигналу RCC_CIR.

Примечание: калибровка LSI доступна только для устройств высокой плотности (high-density), XL-плотности (XL-density) и серии устройств "connectivity line".

Калибровка LSI

Дисперсия частоты низreference manualкоскоростного внутреннего RC-генератора LSI может быть откалибрована для получения точной базы для RTC и/или тайм-аута IWDG (когда LSI используется в качестве источника тактовых импульсов для этих периферийных устройств) с приемлемой точностью.

Эта калибровка выполняется путем измерения тактовой частоты LSI относительно входной тактовой частоты TIM5 (TIM5CLK). В соответствии с этим измерением, выполненным с точностью генератора HSE, программное обеспечение может настроить программируемый 20-битный прескейлер RTC для получения точной временной базы или вычислить точный тайм-аут IWDG.

Для калибровки LSI используйте следующую процедуру:

  1. включите таймер TIM5 и настройте канал 4 (channel 4) в режиме захвата входа;
  2. установите бит TIM5CH4_IREMAP в регистре AFIO_MAPR, чтобы подключить внутренний тактовый генератор LSI к захвату входа 4 канала TIM5 для калибровки;
  3. измерьте частоту тактового генератора LSI с помощью события или прерывания TIM5;
  4. используйте измеренную частоту LSI для обновления 20-битного прескейлера RTC в зависимости от желаемой временной базы и/или для вычисления тайм-аута IWDG.

7.2.6 Выбор системного тактового генератора (SYSCLK)

После перезагрузки системы в качестве системного генератора выбирается генератор HSI. Если источник тактового сигнала используется напрямую или через PLL в качестве системного, остановить его невозможно.

Переключение с одного источника тактовой частоты на другой происходит только в том случае, если целевой источник тактовой частоты готов (часы стабильны после задержки запуска или заблокированы PLL). Если выбран источник тактовых импульсов, который еще не готов, переключение произойдет, когда источник будет готов. Биты состояния в регистре управления тактовым сигналом RCC_CR указывают, какой(ие) источник(и) тактового сигнала готов(ы) и какой(ие) из них в данный момент используются в качестве системного тактового сигнала.

7.2.7 Система защиты тактового сигнала (CSS)

Система защиты тактового сигнала может быть активирована программно. В этом случае детектор тактирования включается после запуска HSE и отключается при его остановке.

При обнаружении сбоя в тактовом сигнале, генератор HSE автоматически отключается, на вход прерывания таймеров расширенного контроля (TIM1 и TIM8) посылается событие сбоя тактового генератора и генерируется прерывание, информирующее о сбое (Clock Security System Interrupt, CSSI), что позволяет микроконтроллеру выполнить восстановительные действия. CSSI связан с вектором немаскируемых прерываний Cortex M3 (Non-Maskable Interrupt, NMI).

Примечание: после включения CSS и при сбое HSE происходит прерывание CSS и автоматически генерируется NMI. NMI будет выполняться бесконечно долго, пока не будет сброшен бит ожидания прерывания CSS. Как следствие, пользователь должен снять прерывание CSS, установив бит CSSC в регистре прерывания по тактовому сигналу RCC_CIR.

Если генератор HSE прямо или косвенно используется в качестве системного тактового сигнала (косвенно это означает, что он используется в качестве входного тактового сигнала для PLL, который используется в качестве системного тактового сигнала), обнаруженный сбой приводит к переключению системного тактового сигнала на HSI и отключению HSE. Если HSE является тактовым входом PLL, используемого в качестве системного тактового сигнала в момент сбоя, PLL также отключается.

7.2.8 Часы реального времени RTC

Источником тактового сигнала RTCCLK могут быть сигналы синхронизации HSE/128, LSE или LSI. Это выбирается путем установки битов RTCSEL[1:0] в регистре управления области резервирования RCC_BDCR. Этот выбор не может быть изменен без сброса области резервирования.

Тактовый сигнал LSE находится в области резервирования, а тактовые сигналы HSE и LSI - нет. Следовательно:

Если в качестве тактового сигнала RTC выбран LSE: – RTC продолжает работать даже при отключении питания VDD при условии сохранения питания VBAT.

Если LSI выбран в качестве источника сигнала автоматического пробуждения AWU: – Состояние AWU не гарантируется, если питание VDD отключено. Дополнительные сведения о калибровке LSI см. в разделе 7.2.5: Тактирование от LSI.

Если в качестве тактового сигнала RTC используется сигнал HSE, деленный на 128: – Состояние RTC не гарантируется, если питание VDD отключено или если внутренний регулятор напряжения отключен (снимая питание с области 1,8 В). – Бит DPB (отключение защиты от записи области резервирования) в регистре контроллера питания должен быть установлен в 1 (см. раздел 5.4.1: Регистр управления питанием PWR_CR).

7.2.9 Тактирование сторожевого таймера (watchdog)

Если независимый сторожевой таймер IWDG запускается, LSI принудительно включается и не может быть отключен. После включения LSI, тактирование подается на IWDG.

7.2.10 Возможность вывода тактовой частоты (Clock-out capability)

Возможность вывода тактового сигнала микроконтроллера MCO позволяет выводить тактовый сигнал на внешний вывод MCO. Регистры конфигурации соответствующего порта GPIO должны быть запрограммированы в режиме альтернативной функции. В качестве тактового сигнала MCO может быть выбран один из 4 тактовых сигналов.

  • SYSCLK
  • HSI
  • HSE
  • PLL/2

Выбор управляется битами MCO[2:0] регистра конфигурации тактового сигнала RCC_CFGR.