Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2754
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

Схема тактирования

273

Рисунок 2: Как частота источника тактового сигнала увеличивается/уменьшается за счет использования блоков PLL и предделителей

10.1.1. Обзор схемы тактирования STM32

Схема тактирования микроконтроллера STM32 может иметь достаточно сложную структуру. Даже в «простейших» микроконтроллерах STM32F0 внутренняя сеть тактирования может иметь до четырех каскадов PLL/предделителей, а мультиплексор системного так-

тового сигнала, англ. System Clock Multiplexer (также известный как переключатель си-

стемного тактового сигнала (System Clock Switch, SW)) может питаться несколькими замещающимися источниками.

Более того, подробное объяснение схемы тактирования каждого семейства STM32 является сложной задачей, которая также требует, чтобы мы сосредоточили наше внимание на конкретном номере устройства по каталогу (P/N). На самом деле на структуру схемы тактирования влияют главным образом следующие ключевые аспекты:

Основное семейство микроконтроллеров STM32. Например, все микроконтроллеры STM32F0 предоставляют только одну периферийную шину (APB1), которая может тактироваться на той же максимальной частоте ядра Cortex-M. Другие микроконтроллеры STM32 обычно предоставляют две периферийные шины, и только одна из них (APB2) может достигать максимальной тактовой частоты ЦПУ. И напротив, ни одна из периферийных шин, доступных в микроконтроллере STM32F7, не может достичь максимальной частоты ядра8. В таблице 1 приведена максимальная тактовая частота для шин AHB, APB1 и APB2 (с соответствующими тактовыми частотами таймеров) микроконтроллеров, оснащающих все платы Nucleo: вы можете отметить, что для некоторых микроконтроллеров STM32 можно достичь максимальной тактовой частоты только используя внешний HSE-генератор.

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

Вид поставки и корпус микроконтроллера, определяющие действующий тип и количество предоставляемых периферийных устройств.

8 За исключением таймеров на шине APB2 (по крайней мере, на момент написания данной главы – февраль 2016 года).

Схема тактирования

274

Таблица 1: Максимальные тактовые частоты шин AHB, APB1 и APB2 микроконтроллеров, оснащающих все платы Nucleo

Даже если ограничиться рассмотрением только шестнадцати микроконтроллеров, оснащающих платы Nucleo, это потребует долгой и утомительной работы, подразумевающей глубокое знание всех периферийных устройств, реализованных интересующим микроконтроллером. По этим причинам мы дадим краткий обзор схемы тактирования STM32, оставляя читателю ответственность за детальное изучение интересующего его микроконтроллера. Более того, как мы увидим через некоторое время, благодаря CubeMX можно абстрагироваться от конкретной реализации схемы тактирования, кроме случаев, когда нам необходимо иметь дело с особыми конфигурациями PLL, оптимальными по производительности и энергопотреблению.

На рисунке 3 показана схема тактирования одного из самых простых микроконтроллеров STM32: STM32F030R8. Она взята из соответствующего справочного руководства9, предоставляемого ST. Для многих новичков в платформе STM32 этот рисунок совершенно не понятен и довольно сложен для понимания, в особенности, если они также плохо знакомы с другими микроконтроллерами встраиваемых систем. Красным цветом обозначен наиболее значимый путь: путь от HSI-генератора к ядру Cortex-M0, шине AHB и DMA. Это тот путь, который мы молча «использовали» до сих пор, не слишком разбираясь с его возможными конфигурациями. Позвольте представить вам наиболее важные элементы данного пути.

9 http://www.st.com/web/en/resource/technical/document/reference_manual/DM00091010.pdf

Схема тактирования

275

Рисунок 3: Схема тактирования микроконтроллера STM32F030R8

Путь начинается от внутреннего генератора на 8 МГц. Как уже было сказано, это RC-генератор, откалиброванный на заводе ST с точностью до 1% при температуре окружающей среды в 25°C. Затем тактовый сигнал HSI-генератора может быть направлен к

переключателю системного тактового сигнала (SW) в том виде, в каком он на выходе ге-

нератора (путь выделен синим цветом на рисунке 3), или его можно направить к блоку умножителя PLL после его деления на 2 промежуточным предделителем10. Блок основного PLL может умножать тактовый сигнал в 4 МГц на значение вплоть до 12 для полу-

чения максимальной системной тактовой частоты (System Clock Frequency, SYSCLK),

равной 48 МГц. Источник тактового сигнала SYSCLK может использоваться для питания периферийного устройства I2C1 (в качестве альтернативы HSI-генератору) и другого промежуточного предделителя – предделителя шины AHB, который может использо-

ваться для понижения высокочастотного тактового сигнала (High (speed) Clock, HCLK), в

свою очередь, подводимого к шине AHB, ядру и системному таймеру.

10 Предделитель (prescaler) – это «электронный счетчик», используемый для понижения высоких частот. В данном случае предделитель «/2» уменьшает основную частоту в 8 МГц до значения 4 МГц.

Схема тактирования

276

Почему так много промежуточных каскадов PLL/предделителей?

Как было сказано выше, тактовая частота определяет общие характеристики, при этом она также влияет на общее энергопотребление микроконтроллера. Возможность выборочно разрешать/запрещать тактирование или уменьшать тактовую частоту некоторых частей микроконтроллера дает возможность снизить энергопотребление в соответствии с необходимой эффективной вычислительной мощностью. Как мы увидим в Главе 19, микроконтроллеры L0/1/4 вводят еще больше каскадов PLL/предделителей, чтобы предоставить разработчикам больший контроль над общим потреблением микроконтроллеров. Вместе с надлежащим проектированием устройства это позволяет создавать устройства с батарейным питанием, которые могут работать на протяжении многих лет, используя одну и ту же батарейку.

Конфигурация схемы тактирования выполняется специальным периферийным устрой-

ством11, называемым Системой сброса и тактирования (Reset and Clock Control, RCC), и

этот процесс в основном состоит из трех этапов:

1.Выбирается источник высокочастотного генератора (HSI или HSE) и конфигурируется должным образом, если используется HSE12.

2.Если мы хотим подать сигнал SYSCLK с частотой, превышающей частоту, обеспечиваемую высокочастотным генератором, нам необходимо сконфигурировать блок основного PLL (который обеспечивает сигнал PLLCLK). В противном случае мы можем пропустить этот шаг.

3.Конфигурируется переключатель системного тактового сигнала (SW) выбором правильного источника тактового сигнала (HSI, HSE или PLLCLK). Затем выбираются правильные настройки предделителей шин AHB, APB1 и APB2 (если доступна) для достижения требуемой частоты высокочастотного сигнала (HCLK – сигнал, который подается на ядро, DMA и шину AHB) и частот продвинутых пе-

риферийных шин APB1 и APB2 (если есть).

Знание допустимых значений для PLL и предделителей может быть кошмаром, особенно для более сложных микроконтроллеров STM32. Только некоторые комбинации действительны для используемого микроконтроллера STM32, и их неправильная конфигурация может потенциально повредить микроконтроллер или, по крайней мере, привести к отказам (неправильная конфигурация тактирования может привести к ненормальному поведению, странным и непредсказуемым сбросам и т. п.). К счастью для нас, инженеры STM32 предоставили отличный инструмент для упрощения конфигурации тактирования: CubeMX.

10.1.1.1. Многочастотный внутренний RC-генератор в семействах STM32L

Источник тактового сигнала и его сеть распределения оказывают значительное влияние на общее энергопотребление микроконтроллера. Если нам нужна частота SYSCLK выше

11Иногда ST определяет в своих документах RCC как «периферийное устройство». Иногда нет. Я не уверен, что ее уместно называть периферийным устройством, однако буду давать такое же определение, как это делает ST. Иногда.

12В микроконтроллерах STM32L0/1/4 сигнал SYSCLK может также питаться от другого отделенного источника тактового сигнала с пониженным энергопотреблением, называемого MSI. Мы поговорим об этом источнике тактового сигнала дальше.

Схема тактирования

277

или ниже внутреннего источника тактового сигнала HSI (который составляет 8 МГц для большинства микроконтроллеров STM32 и 16 МГц для некоторых других), мы должны увеличить/уменьшить ее, используя мультиплексор источников для блока PLL (PLL Source Mux) и промежуточные предделители. К сожалению, эти компоненты потребляют энергию, и это может оказать существенное влияние на устройства с батарейным питанием.

Таблица 2: Сравнение источников тактового сигнала в микроконтроллере STM32L476

Микроконтроллеры STM32L0/1/4 специально спроектированы для приложений с пониженным энергопотреблением, и они решают именно эту проблему, предоставляя специальный внутренний источник тактового сигнала, называемый внутренний многочастотный (MultiSpeed Internal, MSI) RC-генератор. MSI-генератор представляет собой RCгенератор с пониженным энергопотреблением, с предварительно откалиброванной на заводе точностью в ±1% при 25°C, которая может возрасти до ±3% в диапазоне температур 0-85°C. Основной характеристикой MSI-генератора является то, что он обеспечивает до 12 различных частот без добавления каких-либо внешних компонентов. Например, MSI-генератор в STM32F476 обеспечивает внутренний источник тактового сигнала в диапазоне от 100 кГц до 48 МГц. Тактовый сигнал MSI-генератора используется в качестве SYSCLK после перезагрузки от сброса, пробуждения из режимов пониженного энергопотребления Ожидания (Standby) и Выключенного состояния (Shutdown). После перезагрузки от сброса частота MSI-генератора устанавливается на значение по умолчанию (например, частота MSI-генератора по умолчанию в STM32F476 составляет 4 МГц). В таблице 2 приведены наиболее важные характеристики всех возможных источников тактового сигнала в микроконтроллере STM32L476. Как видите, наилучшее энергопотребление достигается при тактировании микроконтроллера MSI-генератором (без использования мультиплексора источников для блока PLL). Кроме того, данный источник тактового сигнала гарантирует самое короткое время запуска по сравнению с HSIгенератором. Интересно проследить, что для стабилизации тактовой частоты LSEгенератора требуется до двух секунд: если скорость запуска действительно важна для вашего приложения, то стоит рассмотреть вариант использования отдельного потока для запуска LSE-генератора.

В дополнение к преимуществам, связанным с пониженным энергопотреблением, при использовании MSI-генератора в качестве источника для мультиплексора источников для блока PLL вместе с LSE-генератором, он обеспечивает очень точный источник тактового сигнала, который может использоваться устройством USB OTG FS без

Схема тактирования

278

использования внешнего выделенного кварцевого генератора, в то же время питая блок основного PLL для работы системы на максимальной частоте в 80 МГц.

10.1.2.Конфигурирование схемы тактирования с помощью

CubeMX

В Главе 4 мы уже встречались с представлением CubeMX Clock Configuration. Теперь самое время посмотреть, как оно работает. На рисунке 4 показана схема тактирования того же микроконтроллера F0, который мы рассматривали до сих пор. Как видите, благодаря большему количеству места на экране, сеть распределения выглядит менее громоздкой.

Рисунок 4: Как схема тактирования микроконтроллера STM32F030R8 представлена в CubeMX

Даже в этом случае наиболее важные пути схемы тактирования выделены красным и синим цветом. Это должно упростить сравнение с рисунком 3. При создании нового проекта CubeMX по умолчанию выбирает HSI-генератор в качестве источника тактового сигнала по умолчанию. HSI-генератор также выбран в качестве источника тактового сиг-

нала по умолчанию для переключателя системного тактового сигнала System Clock Mux

(путь показан синим цветом), как показано на рисунке 4. Это означает, что для рассматриваемого здесь микроконтроллера частота ядра Cortex-M будет равна 8 МГц.

CubeMX также сообщает нам о двух вещах: максимальные частоты для высокочастотного тактового сигнала (HCLK) и шины APB1 в этом микроконтроллере равны 48 МГц (метки синего цвета). Чтобы увеличить частоту ядра ЦПУ, сначала нужно выбрать PLLCLK в качестве источника тактового сигнала для переключателя системного тактового сигнала, а затем выбрать правильный коэффициент умножения PLL. Однако CubeMX предлагает быстрый способ сделать это: вы можете просто написать «48»

Схема тактирования

279

внутри поля HCLK и нажать клавишу Enter. CubeMX автоматически упорядочит настройки, выбрав правильный путь схемы тактирования (красный на рисунке 4).

Если ваша плата использует внешний кварцевый HSE/LSE-генератор, вы должны разрешить его в периферийном устройстве RCC, прежде чем использовать его в качестве основного источника тактового сигнала для соответствующего генератора (мы пошагово рассмотрим, как сделать это). После разрешения внешнего генератора можно указать его частоту (внутри синего поля задания входной частоты с меткой «Input frequency») и сконфигурировать блок основного PLL для достижения желаемого тактового сигнала SYSCLK (см. рисунок 5). С другой стороны, входная частота внешнего генератора может использоваться непосредственно в качестве источника тактового сигнала для переключа-

теля системного тактового сигнала System Clock Mux.

Рисунок 5: CubeMX позволяет выбрать HSE-генератор после его разрешения, воспользовавшись периферийным устройством RCC

Нам необходимо соответствующим образом сконфигурировать периферийное устройство RCC, чтобы разрешить внешний источник тактового сигнала. Это можно сделать в представлении Pinout в CubeMX, как показано на рисунке 6.

Рисунок 6: Варианты конфигурации, предоставляемые периферийным устройством RCC

И для HSE-генераторов, и для LSE-генераторов, CubeMX предлагает три варианта конфигурации:

Запрещен (Disable): внешний генератор недоступен/не используется, и используется соответствующий внутренний генератор.

Кварцевый/керамический резонатор (Crystal/Ceramic Resonator): использу-

ется внешний кварцевый/керамический резонатор, от которого выводится соответствующая основная частота. Подразумевается, что выводы RCC_OSC_IN и RCC_OSC_OUT используются для подключения HSE-генератора, и соответствующие сигнальные I/O недоступны для других применений (если мы используем внешний низкочастотный кварцевый генератор, то соответствующие I/O RCC_OSC32_IN и RCC_OSC32_OUT также не могут использоваться для других целей).