Home > ARM > STM32 – RСС

STM32 – RСС

6. Сброс и тактирование
Данный раздел применим ко всем устройствам STM32F100xx, если не указано обратное.
6.1 Сброс
Существует три типа сброса:систеный сброс, сброс по питанию и сброс резервного домена.
6.1.1 Системный сброс
Системный сброс возвращает все регистры к их первоначальному значению, но не затрагивая флаги сброса в регистре настройки тактирования CSR и регистры резервного домена.
Системный сброс может происходить вследствие пяти событий.
  1. Низкий уровень на пине NRST (внешний сброс ).

  2. Событие сброса от оконного сторожевого таймера (WWDG reset).

  3. Сброс от независимого сторожевого таймера (IWDG reset)

  4. Программный сброс (SW reset)

  5. Сброс при пониженном энергопотреблении.

Источник сброса можно определить в регистре RCC_CSR (RCC Control/Status Register) с помощью функции

FlagStatus RCC_GetFlagStatus ( uint8_t RCC_FLAG );

ПеременнаяRCC_FLAGсодержит название флага:
  • RCC_FLAG_HSIRDY : Готовность HSI.

  • RCC_FLAG_HSERDY: Готовность HSE.

  • RCC_FLAG_PLLRDY: Готовность PLL.

  • RCC_FLAG_LSERDY: Готовность LSE.

  • RCC_FLAG_LSIRDY: Готовность LSI.

  • RCC_FLAG_PINRST: Произошел внешний сброс.

  • RCC_FLAG_PORRST: Произошёл сброс от POR/PDR.

  • RCC_FLAG_SFTRST: Произошёл программный сброс.

  • RCC_FLAG_IWDGRST: Сброс от независимого сторожевого таймера.

  • RCC_FLAG_WWDGRST: Сброс от оконного сторожевого таймера.

  • RCC_FLAG_LPWRRST: Сброс при пониженном питании.

Возвращает функция 2 значения:
  • DISABLE= 0.
  • ENABLE= !DISABLE.
Программный сброс.
Чтобы вызвать программный сброс, необходимо установить битSYSRESETREQ.
6.1.2 Сброс по питанию
Такой сброс может происходить из-за 2 событий:
  1. Сброс при включении/выключении питания (POR/PDR).

  2. Сброс при выходе из режима ожидания.

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

На рисунке сверху представлена упрощенная схема системы сброса. Генератор импульсов гарантирует, что длительность импульса сброса будет не менее 20 микросекунд.
6.1.3 Сброс резервного домена
Обнуление резервного домена может быть осуществлено двумя способами:
  1. Программный сброс, вызываемый установкой бита BDRST регистра RCC_BDCR , либо вызовом функции

    void RCC_BackupResetCmd ( FunctionalState NewState ) ;

  2. Подача высокого уровня на VDD или VBAT если до этого на обоих выводых был низкий уровень.

6.2. Тактирование
Чтобы завести системное тектирование (SYSCLK), можно использовать три первичных источника тактирующего сигнала:
  • Внутренний высокоскоростной (HSI – Hight Speed Internal).

  • Внешний высокоскоростной (HSE – High Speed External).

  • PLL – Phase Locked Loop.

А еще есть два вторичных источника:
  • Внутренняя RC- цепочка на 40 кГц (LSI RC – Low Speed Internal RC). Этот источник обычно используется для тактирования независимого сторожевого таймера а также может использоваться RTC для автопробуждения из режима ожидания/останова.

  • Низкочастотный внешний генератор на 32.768 кГц (LSE crystal – Low Speed External Crystal – внешний часовой кварц ).

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

  • Внешний тактирующий сигнал.

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

Внешний тактирующий сигнал

Кристалл/керамический резонатор

Тактирование высокоскоростное (HSE)
Источник, разумеется, должен быть подключен к контроллеру. Такой тип тактирования может быть выбран за счет установки битов HSEBYP и HSEON в регистре управления тактированим (RCC_CR).
Также тактирование может вестись от кварцевого генератора. Диапазон частот: от 4 до 24 МГц. В регистре управления тактированием есть флаг HSERDY ( RCC_FLAG_HSERDY). Если он сброшен, это означает, что источиксигнала не готов и не может использоваться для тактирования.
Настройка работы HSE задается с помощью функции

voidRCC_HSEConfig(uint32_tRCC_HSE);

Переменная RCC_HSEможет принимать следующие значения:
  • RCC_HSE_OFF: отключить HSE.

  • RCC_HSE_ON: включить HSE.

  • RCC_HSE_Bypass : тактирование от внешнего источника.

Для ожидания готовности HSE можно использовать функцию

ErrorStatusRCC_WaitForHSEStartUp(void);

Возвращает одно значение из двух возможных:
  • ERROR = 0.

  • SUCCESS = !ERROR.

Тактирование от высокоскоростного внутреннего источника (HSI)

Внутренняя RC-цепочка на 8 МГц может быть использована для тактирования системы напрямую или будучи разделенной на 2 и как входPLL.
Начало работы с этой цепочко происходит быстрее, чем сHSE,но в то же время, точностьRC-цепочки ниже.
Включается тактирование вызовом функции:

void RCC_HSICmd ( FunctionalState NewState );

CпараметромENABLE.
Калибровка
ВнутренняяRC-цепочка откалибрована на заводеSTдо точности 1% при температуре в 25 градусов.
После сброса заводская калибровка загружается в битыHSICAL[7:0]регистраRCC_CR.
Поскольку температура и вольтаж, при котором эксплуатируется контроллер, меняются со временем и часто отличаются от заводских условий, это может повляеть на частоту цепочки. Можно перекалибровать цепочку самостоятельно с помощью записи значения в битыHSITRIM[4:0]регистраRCC_CR.Или можно воспользоваться функцией:

void RCC_AdjustHSICalibrationValue ( uint8_t HSICalibrationValue );

ПеременнаяHSICalibrationValueдолжна содержать в себе число от 0x00до 0x1F.
PLL
PLL может быть использован для увеличения частоты HSI или для уменьшения HSE в 1..16 раз. Конфигурация PLL должна быть осуществлена после его запуска, так как потом доступ к регистра настройки будет заблокирован.
Выходная частота PLL должна быть в диапазоне от 16 до 24 МГц!
Настройка PLL осуществляется функцией

void RCC_PLLConfig ( uint32_t RCC_PLLSource , uint32_t RCC_PLLMul ) ;

Первая переменнаяRCC_PLLSourceопределяет источник тактирования для входа PLL.
  • RCC_PLLSource_HSI_Div2: HSI, с частотой, деленной на 2.

  • RCC_PLLSource_HSE_Div1: HSE.

  • RCC_PLLSource_HSE_Div2: HSE, с частотой, деленной на 2.

Вторая переменная RCC_PLLMul определяет величину, на которую будет умножена частота.
  • RCC_PLLMul_x :гдеXменяется в диапазоне от 2 до 16.

ВключаетсяPLLвызовом функции

void RCC_PLLCmd ( FunctionalState NewState ) ;

CпараметромENABLE.
LSE
Это низкочастотный генератор или керамический резонатор на 32.768 кГц. И он может использоваться как экномичный высокоточный источник тактирования для RTC. Настраивается он вызовомфункции

voidRCC_LSEConfig(uint32_tRCC_HSE);

ПараметрRCC_HSEможет принимать следующие значения:
  • RCC_LSE_OFF: отключить LSE.

  • RCC_LSE_ON: включить LSE.

  • RCC_LSE_Bypass : тактирование от внешнего источника.

LSI
Это внутренняяRC-цепочка на 40 кГц, которая продолжает работает в режимах останова и ожидания для независимого сторожевого таймера(IWDG)и модуля автопробуждения(AWU).
ВключаетсяLSIвызовом функции

void RCC_ LSI Cmd ( FunctionalState NewState ) ;

CпараметромENABLE.
LSIнельзя отключить, если работаетIWDG.
ТактированиеRTC
Источником тактированияRTCмогут быть:
  • Низкочастотные внешний или внутренний источники (LSE, LSI).

  • Высокоскоростной внешний источник, частота которого поделена на 128.

void RCC_RTCCLCKConfig(uint32_tRCC_RTCCLKSource);

ПараметрRCC_RTCCLKSourceможет принимать следующие значения:
  • RCC_RTCCLKSource_LSE: и сточник – LSE.

  • RCC_RTCCLKSource_LSI: и сточник – LSI.

  • RCC_RTCCLKSource_HSE_Div128: источник — HSE, с частотой, поделенной на 128.

Включается тактированиеRTCвызовом функции

void RCC_ RTCCLCK Cmd ( FunctionalState NewState ) ;

CпараметромENABLE.
Необходимо учитывать следующее:
  • Если источник тактирования RTC LSE.

    • RTC продолжает функционировать даже после того, как V DD отключен за счёт питания, поступаемого от V BAT .

  • Если источник тактирования модуля автопробуждения (AWU) – LSI.

    • Состояние AWU при V DD = 0 не определено .

  • Если источник тактирования RTC HSE/128.

    • Состояние RTC при V DD = 0 или при отключенном внутреннем контроллере напряжения не определено .

    • Бит DPB, отвечающий за отключение защиты резервного домена от записи, должен быть установлен в 1.

Advertisements
Categories: ARM
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: