Фильтр по тематике

Современные 32-разрядные ARM-микроконтроллеры серии STM32: система тактирования

Приведено описание системы тактирования 32-разрядных ARM-микроконтроллеров серии STM32 от компании STMicroelectronics.Рассмотрена архитектура системы тактирования, состав её регистров и примеры программ инициализации.

20.06.2013 164 0
Современные 32-разрядные ARM-микроконтроллеры серии STM32: система тактирования

Введение

Система тактирования микроконтроллера является основным функциональным блоком, синхронизирующим все процессы и определяющим скорость их выполнения. От правильной настройки данного блока зависит эффективность работы микроконтроллера, успешное выполнение возлагаемой на него задачи. Поэтому важно уделить рассмотрению системы тактирования особое внимание, поняв её архитектуру и назначение всех составляющих элементов.

Архитектура

Система тактирования микроконтроллеров серии STM32 от компании STMicroelectronics [1] имеет достаточно сложную архитектуру, позволяющую расширить их возможности при использовании в разнообразных устройствах, гибко и точно настроить под конкретную задачу.

Структурная схема системы тактирования STM32 приведена на рисунке 1.


Основной системной тактовой частотой микроконтроллера является сигнал SYSCLK. Как видно из схемы, в качестве источника импульсов системной тактовой частоты SYSCLK микроконтроллеров STM32 может быть использован внутренний HSI RC генератор c частотой 8 МГц или генератор HSE OSC с внешним кварцевым резонатором или внешним источником тактовых импульсов.

Генератор HSE (High-Speed External) может работать на частоте от 4 до 24 МГц с внешним резонатором, подключённым к выводам OSC_IN и OSC_OUT. Допускается также подключение внешнего источника тактовых импульсов частотой от 1 до 24 МГц и скважностью 50% к входу OSC_IN, как показано на рисунке 2.


Настройка многих элементов системы тактирования осуществляется программно с помощью конфигурационных регистров микроконтроллера, представленных в таблице.


Внешний генератор HSE по умолчанию отключён и его включение производится с помощью бита HSEON регистра RCC_CR. При работе генератора с внешним сигналом необходимо установить в единичное состояние бит HSEBYP регистра RCC_CR.

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

Блок HSI (High-Speed Internal) представляет собой встроенный RC-генератор с частотой 8 МГц. При включении микроконтроллер автоматически запускается от тактовой частоты HSI.

Генератор HSI начинает работать при появлении питающего напряжения VCC и после выхода в нормальный устойчивый режим работы устанавливает битовый флаг HSIRDY в регистре RCC_CR. Производитель гарантирует стабильность частоты от –1,9 до +1,3% при изменении температуры микроконтроллера от 0 до 70°C соответственно. При запуске микроконтроллера заводское калибровочное значение автоматически заносится в биты HSICAL[7:0] регистра RCC_CR (см. табл.). Для компенсации воздействия окружающей температуры и изменений питающего напряжения имеется возможность дополнять калибровочное значение записью битов HSITRIM[4:0] указанного регистра. После сброса в нём находится число 16, т.е. середина диапазона регулировки. Изменение младшего разряда HSITRIM позволяет подстроить частоту генератора HSI приблизительно на 40 кГц. Таким образом, 5 разрядов HSITRIM[4:0] позволяют осуществить подстройку частоты от 0 до 1280 кГц.

Тактовая частота от генератора HSI может быть использована непосредственно как источник системной частоты или поступать в блок умножителя частоты после предварительного делителя на 2.

Достоинством использования генератора HSI является малое время начала генерации тактовой частоты после подачи питания и отсутствие необходимости в использовании дополнительных электронных компонентов для работы микроконтроллера. Недостатком – низкая стабильность частоты генерируемого сигнала и увеличение погрешности при умножении частоты в блоке PLLMUL.

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

Сигналы от генераторов HSI и HSE проходят, соответственно, через делитель на два или программный делитель PREDIV1, поступая затем на мультиплексор PLLSRC, выбирающий один из этих сигналов для последующей обработки. Далее один из сигналов поступает на умножитель частоты PLLMUL (Phase Locked Loop) на основе генератора с ФАПЧ с программным коэффициентом, позволяющим кратно увеличить частоту от 2 до 16 раз. Выход умножителя подключён к мультиплексору SW, с помощью которого программно выбирается один из трёх сформированных ранее сигналов от HSI, PLLMUL или HSE. Этот сигнал используется в качестве системной тактовой частоты SYSCLK, и его частота не должна превышать 24 МГц для данного типа микроконтроллера.

По умолчанию умножитель отключён, и его включение осуществляется битом PLLON регистра RCC_CR. После включения PLL и его выхода в рабочий режим устанавливается бит

PLLRDY и может быть сгенерировано прерывание.

Режим работы умножителя конфигурируется с помощью регистра RCC_CFGR. Все переключения режима работы следует проводить только при выключенном умножителе.

В регистре RCC_CFGR бит PLLSRC определяет источник умножения – сигналы от HSI или HSE. Бит PLLXTPRE включает делитель на 2 для сигнала от HSE. Биты PLLMUL[3:0] задают коэффициент умножения от 2 до 16.

Особенно полезную функцию, повышающую надёжность работы микроконтроллера, выполняет блок CSS. Из структурной схемы видно, что на вход этого блока подаётся тактовая частота от генератора HSE, а выход этого блока подключён к блоку выбора источника системного тактового сигнала SW. Назначение блока CSS состоит в слежении за тактовыми сигналами, поступающими от генератора HSE, и в случае их пропадания, например при поломке кварцевого резонатора от удара, блок CSS осуществляет следующие действия:

  • отключает генератор HSE;
  • останавливает работу расширенных таймеров TIM1 и TIM8;
  • генерирует прерывание CSSI, заведённое внутри процессора на немаскируемое прерывание NMI, которое микроконтроллер не может пропустить;
  • переключает источник системной частоты на генератор HSI.

Таким образом, благодаря блоку CSS микроконтроллер сохраняет свою работоспособность и информирует выполняемую программу об этом с помощью прерывания, исключая возможность зависания программы из-за неисправности внешнего генератора. Для активации данной функции блок CSS необходимо программно включить с помощью установки бита CSSON в регистре RCC_CR. По умолчанию этот бит сброшен.

Кроме того, система тактирования содержит узлы формирователей тактовой частоты RTC CLK для часов реального времени RTC (Real Time Clock) и тактовой частоты IWDGCLK для сторожевых таймеров микроконтроллера.

Источником тактовой частоты RTC CLK могут являться:

  • тактовые сигналы от генератора HSE, делённые на 128;
  • тактовые сигналы от внутреннего низкоскоростного генератора LSI (Low Speed Internal), формирующего тактовые импульсы с частотой 40 кГц;
  • тактовые сигналы от внешнего низкоскоростного генератора LSE (Low Speed External) с внешним кварцевым резонатором на частоте 32,768 кГц.

Источником тактовой частоты IWDGCLK для сторожевых таймеров микроконтроллера является внутренний низкоскоростной генератор LSI с частотой 40 кГц.

Сигналы тактовой частоты SYSCLK, HSE, HSI и PLLCLK, поделённой на два, могут быть подключены к выходному сигналу MCO (Microcontroller

Clock Output) микроконтроллера через мультиплексор. В программном выборе сигнала для этого мультиплексора используются биты MCO[2:0] регистра RCC_CFGR. Их назначение приведено ниже.

MCO[2:0] = 0xx: выход MCO отключён;
MCO[2:0] = 100: подключён сигнал SYSCLK;
MCO[2:0] = 101: подключён сигнал HSI;
MCO[2:0] = 110: подключён сигнал HSE;
MCO[2:0] = 111: подключён сигнал PLLCLK/2.

Сигнал системной тактовой частоты SYSCLK транслируется на программный делитель AHB, снижающий её в 512 раз. Полученный сигнал FCLK поступает на остальные блоки схемы непосредственно или через дополнительные делители APB1, APB2 и ADC. Каждый из этих делителей имеет программные коэффициенты деления и позволяет снизить частоту для соответствующих ему блоков и периферии. Например, блоки ядра и памяти микроконтроллера работают на частоте сигнальной шины AHB, а сигналы шины APB1 и APB2 имеют собственные делители с коэффициентами от 1 до 16. Блок ADC имеет делитель частоты от 2 до 8 единиц. На схеме указаны максимально допустимые значения частот для блоков.

Благодаря делителям, имеющим программные коэффициенты деления, можно довольно гибко изменять частоту синхронизации для конкретных блоков в зависимости от их назначения. В системе тактирования также присутствуют элементы для отключения сигналов тактовой частоты от периферийных блоков. По умолчанию практически все блоки отключены. Это сделано с целью экономии энергии за счёт отключения неиспользуемых в работе блоков.

Различные периферийные блоки подключены к разным сигнальным шинам. Например, порты ввода-вывода подключены к шине APB2, блок интерфейса I2C – к шине APB1, контроллер прямого доступа памяти – к шине AHB и т.д. Это необходимо учитывать при включении тактирования соответствующих функциональных блоков микроконтроллера.

Подключение сигналов тактовых частот к периферийным блокам производится через регистры RCC_APB1ENR и RCC_APB2ENR.

Программная инициализация

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

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

После включения или сброса микроконтроллер тактируется от встроенного RC-генератора HSI. В процессе работы возможно переключение источника тактовых импульсов при помощи установки соответствующей комбинации двух младших битов SW (System clock switch) регистра RCC_CFGR:

SW[1:0] = 00: тактирование от HSI;
SW[1:0] = 01: HSE;
SW[1:0] = 10: PLL;
SW[1:0] = 11: зарезервировано.

Определить, какой из генераторов в данный момент используется в качестве тактового, можно по состоянию битов SWS (System clock switch status):

SWS[1:0] = 00: используется генератор HSI;
SWS[1:0] = 01: используется генератор HSE;
SWS[1:0] = 10: тактирование от блока PLL;
SWS[1:0] = 11: зарезервировано.

Перед выбором источника тактового сигнала необходимо предварительно произвести его запуск и удостовериться в его готовности к работе.

Включение генераторов HSI, HSE и PLL производится установкой битов HSION, HSEON и PLLON регистра RCC_CR. Готовность генераторов к работе можно проследить по установке флагов HSERDY, HSERDY или PLLRDY того же регистра. В листинге 1 приведён фрагмент кода программы на языке Си, осуществляющий данную процедуру.


Бит включения генератора HSION также может быть установлен аппаратно при входе в режимы микроконтроллера Stop или Standby. При этом бит HSEON будет сброшен в нулевое состояние. В случае определения защитной системой сбоев в работе генератора HSE, настроенного в качестве системного генератора непосредственно или через PLL, автоматически будет установлен бит HSION. Для снижения энергопотребления генератор, не используемый как тактовый в текущий момент, может быть отключён сбросом бита HSION или HSEON.

Встроенная система контроля CSS блока тактирования микроконтроллеров STM32 способна отслеживать отказ или нестабильную работу генератора HSE, осуществлять автоматическое переключение тактирования на встроенный генератор HSI с автоматическим вызовом немаскируемого прерывания NMI. Для включения в работу системы CSS необходимо установить бит CSSON регистра RCC_CR с помощью следующего оператора:

RCC->CR| = RCC_CR_CSSON; // Разрешить работу системы защиты HSE

С целью исключения повторных вызовов в обработчике немаскируемых прерываний NMI необходимо сбросить флаг системы CSS (см. листинг 2).


До того как PLL будет выбран для тактирования микроконтроллера установкой битов SW[1:0] = 10 регистра RCC_CFGR, необходимо выбрать источник входной частоты блока, а также проинициализировать параметры входных источников и самого модуля PLL. Выбор входного источника

для PLL осуществляется записью бита PLLSRC конфигурационного регистра системы тактирования RCC_CFGR:

PLLSRC = 0: HSI/2, выбран генератор HSI с делением частоты на 2;
PLLSRC = 1: выбран генератор HSE/ PREDIV1.

Биты PREDIV1 регистра RCC_CFGR2 задают коэффициент предварительного деления частоты генератора HSE от 1 до 16 перед его подачей на вход PLL по следующей формуле:

n = PREDIV1[3:0] + 1. Назначение этих битов приведено ниже:

PREDIV1[3:0] = 0000 ( 0): нет деления;
PREDIV1[3:0] = 0001 ( 1): деление на 2;
PREDIV1[3:0] = 0010 ( 2): деление на 3;

PREDIV1[3:0] = 1110 (14): деление на 15;
PREDIV1[3:0] = 1111 (15): деление на 16.

Блок PLL осуществляет умножение входной частоты в соответствии со значением комбинации битов PLLMUL регистра RCC_CFGR по формуле m = PLLMUL[3:0] + 2, но не более чем в 16 раз. Биты PLLMUL[3:0] соответствуют разрядам [21:18] регистра RCC_CFGR. Ниже приведено их назначение:

PLLMUL[3:0] = 0000 ( 0): умножение на 2;
PLLMUL[3:0] = 0001 ( 1): умножение на 3;
PLLMUL[3:0] = 0010 ( 2): умножение на 4;

PLLMUL[3:0] = 1101 (13): умножение на 15;
PLLMUL[3:0] = 1110 (14): умножение на 16;
PLLMUL[3:0] = 1111 (15): тоже умножение на 16.

В листинге 3 пример инициализации, запуска и выбора PLL для тактирования микроконтроллера STM32:


Более подробное описание назначения регистров системы тактирования можно найти в источнике [2].

Литература

  1. https://www.st.com
  2. http://www.st.com/web/en/resource/technical/document/reference_manual/CD00246267.pdf

© СТА-ПРЕСС


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

20.06.2013 164 0
Комментарии
Рекомендуем
К 130-летию со дня рождения великого советского физика Игоря Евгеньевича Тамма. Часть 4. История возникновения  концепции поляритонов

К 130-летию со дня рождения великого советского физика Игоря Евгеньевича Тамма. Часть 4. История возникновения концепции поляритонов

В прошлом году в журнале «Современная электроника» были опубликованы три статьи, посвящённые юбилею выдающегося российского физика-теоретика Игоря Евгеньевича Тамма (СОЭЛ № 7–9, 2025). В частности, были описаны современные быстродействующие электрооптические модуляторы, поверхностные состояния Тамма, запрещённые фотонные зоны и фотонные кристаллы. В этих статьях умышленно не затрагивались темы поляритонов, оптических состояний Тамма (ОСТ) и плазмон-поляритонов Тамма (ППТ). Поскольку ключевой вклад в раннюю разработку этих явлений в основном принадлежит российским учёным, целесообразно посвятить их открытию более подробные отдельные статьи. Ниже рассмотрены два основных типа гибридных фотонных частиц: экситон-поляритоны и фонон-поляритоны.  
24.04.2026 СЭ №4/2026 167 0
Телевизор с электронно-лучевой трубкой: разработки С.И. Катаева и их значение

Телевизор с электронно-лучевой трубкой: разработки С.И. Катаева и их значение

«…Наступит время… когда миллионы таких приборов, таких "электрических глаз" будут всесторонне обслуживать общественную и частную жизнь, науку, технику и промышленность…» Б. Розинг Семён Исидорович Катаев (1904–1991 гг.), советский учёный и изобретатель в области телевидения, доктор технических наук, профессор, заслуженный деятель науки и техники – незаслуженно обделён вниманием популяризаторами истории электроники и телевидения в нашей стране. Тем не менее И.С. Катаев внёс значительный вклад в развитие инженерной мысли в СССР при разработке и усовершенствовании электронно-лучевых трубок (ЭЛТ), ставших на многие годы ключевой технологией, лежащей в основе экранов телевизоров и оборудования различного назначения. Катаев дополнил изобретение Зворыкина и по праву может считаться ещё одним «отцом» отечественного телевидения. В найденных документах роль Катаева прослеживается чётко, и в статье мы хотим это показать.
23.04.2026 СЭ №4/2026 156 0
Электронные системы диагностики, стимуляции и воздействия на человека на примере BAMH и управления –  на примере AE-Skin

Электронные системы диагностики, стимуляции и воздействия на человека на примере BAMH и управления – на примере AE-Skin

Путь будущих разработок в области современной электроники пролегает от визуального отображения окружающего пространства до тактильного. В этой связи представляют интерес система Bioinspired Adaptable Multiplanar mechano-vibrotactile Haptic (BAMH) – пневматически активируемый роботизированный электронный комплекс с интерфейсом из мягкого материала и система AE-Skin, обеспечивающая интерфейс между кожей человека и физическими поверхностями. Принцип её действия достаточно известен и заложен в управлении интерактивными экранами. В первой части статьи рассматриваются особенности новых разработок в области медицинской электроники и перспективы тактильного воздействия на кожу человека для лечения и изменения настроения. Во второй части представлен подробный разбор AE-Skin и примеры её совершенствования во всех сферах жизни человека: от управления посредством электронных тактильных датчиков миниатюрной формы до устройств на основе новых технологий, воспринимающих движения руками без прикосновения и без применения пироэлектрических детекторов, как управляющие сигналы для РЭА.
17.04.2026 СЭ №4/2026 205 0

ООО «ИнСАТ»  ИНН 7734682230  erid = 2SDnjdWbKyt
ООО «ИнСАТ»  ИНН 7734682230  erid = 2SDnje2F5cn
  Подписывайтесь на наш канал в Telegram и читайте новости раньше всех! Подписаться