STM32G4. Системная архитектура и режимы питания

5 августа

управление питаниемпотребительская электроникалабораторные приборыуниверсальное применениеST Microelectronicsстатьяинтегральные микросхемыCortex-M4МикроконтроллерSTM32STM32G44) ARMIMSNVICPWRDMAMUXlow power

Святослав Зубарев (г. Смоленск)

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

Основные разделы статьи

Другие статьи из цикла

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

Процессорное ядро ARM Cortex-M4

Микроконтроллеры STM32G4 базируются на ядре Cortex®-M4. Данное ядро входит в семейство 32-битных RISC-ядер ARM Cortex-M. Выбор ARM Cortex-M4 для STM32G4 обусловлен высокой производительностью 32-разрядной архитектуры. В нем используется архитектура ARMv7-M и трехуровневый конвейер. В дополнение к целочисленным операциям архитектура ядра позволяет выполнять также операции с плавающей запятой и целочисленные инструкции SIMD, что немаловажно для обеспечения высокого уровня производительности сигнального процессора DSP. Блок-схема ядра ARM Cortex-M4 показана на рисунке 1.

Рис. 1. Блок-схема ядра ARM Cortex-M4 с архитектурой ARMv7-M

Рис. 1. Блок-схема ядра ARM Cortex-M4 с архитектурой ARMv7-M

Cortex-M4 имеет в своем составе три порта AHB-Lite, что позволяет выполнять команды и передачу данных в параллельном режиме. Запросы на прерывание, полученные от периферии STM32G4, обрабатываются контроллером прерываний (Nested Vectored Interrupt Controller, NVIC). Модуль управления защитой памяти (Memory Protection Unit, MPU) отвечает за назначение атрибутов и прав доступа к операциям и запросам данных, инициируемым ядром, а для связи между Serial Wire или портом отладки JTAG (SWJ-DP) и внешним отладчиком доступны к использованию протоколы Serial Wire и JTAG.

Ядро микроконтроллеров семейства TM32G4 имеет гарвардскую архитектуру и поддерживает одновременную выборку команд и операций передачи/хранения данных. Конвейер команд ядра состоит из трех ступеней: выборки, декодирования и выполнения. Cortex®-M4 также имеет в составе дополнительный модуль для выполнения операций с плавающей запятой одинарной точности, который совместим со стандартом IEEE754. Операции сложения, вычитания и умножения выполняются в ядре за один такт, операция умножения с накоплением занимает три такта, а операции деления и получения квадратного корня занимают 14 тактов.

Ядро Cortex-M4 не имеет в своем составе кэша или внутренней оперативной памяти (рисунок 2). Как следствие, любая транзакция выборки команд и доступ к данным направляются на матрицу шин. Матрица шин в свою очередь выбирает выходной порт AHB-lite в соответствии с адресом и типом доступа, операциями или данными. Одновременно могут выполняться три транзакции AHB, например:

  • доступ к инструкциям из Flash-памяти через порт ICODE;
  • доступ к данным Flash-памяти через порт DCODE;
  • доступ к SRAM через порт SYSTEM.

Рис. 2. Взаимодействие блоков архитектуры ядра ARM Cortex-M4

Рис. 2. Взаимодействие блоков архитектуры ядра ARM Cortex-M4

Матрица шин Cortex-M4 подключена к матрице шин AHB микроконтроллера STM32G4, что позволяет процессору получать прямой доступ к памяти и периферийным устройствам. Поскольку данные передаются по конвейеру в AHB-Lite, величина пропускной способности может составлять до 32 бит данных или операций за такт с минимальной задержкой в два такта. Одним из выходов матрицы шин Cortex®-M4 является частная периферийная шина, или PPB, которая является внутренней по отношению к процессору. Она используется для доступа к регистрам памяти, присутствующим в NVIC и MPU.

Матрица межсоединений (IMX)

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

Источниками управляющих сигналов в микроконтроллерах STM32, как правило, являются EXTI, таймеры, аналоговая периферия, тактовые генераторы, RTC и прочее. В свою очередь, в качестве приемников выступают также таймеры, аналоговая периферия и другие устройства. Таким образом, в качестве передатчиков и приемников сигналов управления могут быть задействованы одни и те же блоки периферии.

Для упрощения анализа табличных параметров в данном разделе и далее за основу будет взята наиболее продвинутая линейка семейства STM32G4, а именно – STM32G484xx.

В таблице 1 показано, какие блоки STM32G484xx и в каких режимах энергопотребления могут поддерживать соединение.

Таблица 1. Матрица межсоединений периферийных блоков STM32G484xx

Передатчик Приемник Режим работы
Run Sleep Low-Power Run Low-Power Sleep Stop
TIMx TIMx + + + +
ADCx DACx + + + +
DMA + + + +
COMPx + + + +
TIM16/TIM17 IRTIM + + + +
COMPx TIM1, 8, 20; TIM2, 3, 4, 5 + + + +
LPTIMER1 + + + + +
HRTIM + + + +
ADCx TIM1, 8, 20 + + + +
HRTIM + + + +
RTC TIM16 + + + +
LPTIMER1 + + + + +
Источники тактирования (внутренние и внешние) TIM5, TIM15, 16, 17 + + + +
USB TIM2 + +
CSS RAM (parity error) Flash memory (ECC error) COMPx PVD TIM1,8, 20 TIM15,16,17 HRTIM + + + +
CPU (hard fault) TIM1,8,20 TIM15/16/17 HRTIM + + + +
GPIO TIMx + + + +
LPTIMER1 + + + +
HRTIM + + + +
ADCx, DACx + + + +
HRTIM DACx/ADCx
GPIO

Таким образом, режимы Run, Sleep, Low-Power Run и Low-Power Sleep допустимы к использованию во всех типах соединений, однако режимы Stop (Stop0 и Stop1) допустимы к использованию только если в роли приемника выступает таймер LPTIMER1, а в роли передатчика – часы реального времени (RTC) или один из компараторов (COMPx).

В качестве примеров взаимодействия блоков можно рассмотреть такие операции как:

  • синхронизация и каскадирование таймеров. Данные функции, например, позволяют ведущему таймеру сбрасывать или запускать другие таймеры, настроенные как ведомые;
  • переход в пакетный режим, а также обновление конфигурации HRTIM через таймер;
  • использование выходов компараторов (COMP) в качестве источников внешних триггерных сигналов для таймеров;
  • калибровка внутренних генераторов тактовых импульсов LSI и HSI с помощью таймеров и внешних генераторов LSE и HSE;
  • запуск АЦП по сигналам с таймеров или по событиям EXTI;
  • запуск таймера с помощью сигнала с АЦП в случае, когда полученное значение оказывается больше установленного порога;
  • создание триггерных сигналов для таймеров по сигналам от компараторов;
  • запуск таймеров с низким энергопотреблением (LPTIM) по сигналам от RTC, TAMPER или компараторов;
  • создание триггерных сигналов для таймеров при возникновении системных ошибок;
  • подключение внутренних аналоговых каналов к блокам ADC, COMP и OPAMP;
  • создание слепых окон для компараторов с помощью таймеров;
  • модуляция инфракрасного интерфейса посредством использования таймеров;
  • формирование триггерных сигналов для DMA по сигналам от таймеров.

Возможность организации прямых связей между периферией микроконтроллера дает такие преимущества как:

  • максимальная временная детерминированность операций, при которой задачи решаются на аппаратном уровне с четко определенной временной задержкой;
  • уменьшение количества задействованных портов ввода-вывода. Наличие внутренних связей позволяет в определенных случаях исключить необходимость внешних подключений и, соответственно, необходимость в использовании некоторых портов ввода-вывода;
  • снижение уровня энергопотребления. Вместо выполнения операций чтения/записи при помощи процессора матрица межсоединений позволяет периферии взаимодействовать между собой напрямую, снижая тем самым уровень энергопотребления;
  • расширение функционала в режимах пониженного энергопотребления.

Системный контроллер (SYSCFG)

Системный контроллер SYSCFG в микроконтроллерах STM32G4 выполняет следующие задачи:

  • перераспределение областей памяти и выборка памяти по адресу 0x0000_0000;
  • управление подключением внешней линии прерываний к GPIO;
  • разрешение/запрет работы повышающего преобразователя;
  • настройка работы модуля IRTIM;
  • разрешение/запрет некоторых функции безопасности;
  • настройка защиты от записи CCM RAM и программного удаления;
  • настройка прерываний FPU;
  • разрешение/запрет высокоскоростного режима I2C и повышенной нагрузочной способности выводов I2

Рассмотрим описанные выше задачи более подробно.

Перераспределение памяти, доступной по адресу 0x0000_0000, повышает производительность благодаря выделенному доступу к шинам ICODE и DCODE вместо использования системной шины (System bus). При перераспределении происходит выбор памяти по адресу 0x0000_0000. Это может быть основная Flash-память, системная Flash-память, банк FMC, SRAM и QUADSPI. Программное обеспечение может динамически выбирать, какая память видна по адресу 0, программируя поле MEM_MODE в регистре SYSCFG_MEMRP. Значение по умолчанию для этого поля зависит от режима загрузки и значения байтов соответствующей опции, BOOT_LOCK и nSWBOOT0.

На рисунке 3 представлена матрица шин STM32G4. Управляющие блоки шин находятся в верхней части рисунка: ядро CortexM4 с тремя главными интерфейсами AHB ICODE, DCODE и SYSTEM и два контроллера DMA. Ведомые блоки шин – внутренняя и внешняя память, периферия – находятся на рисунке справа. Когда ядро Cortex-M4 получает доступ к данным в диапазоне адресов CODE или DATA, используется шина DCODE, кода же Cortex-M4 обращается к инструкциям в том же диапазоне адресов, используется шина ICODE. Доступ к SRAM1 по умолчанию осуществляется через системную шину, однако, как упоминалось ранее, к ней также можно получить доступ через ICODE и DCODE при перераспределении памяти по адресу 0x0000_0000. Доступ к CCM SRAM всегда осуществляется через ICODE- и DCODE-шины, что позволяет выполнять код без дополнительных задержек.

Рис. 3. Матрица шин STM32G4

Рис. 3. Матрица шин STM32G4

В микроконтроллерах STM32G4 существуют три режима загрузки, которые выбираются с помощью вывода BOOT0 или бита nBOOT0 (если бит nSWBOOT0 очищен) и бита nBOOT1. Когда вывод BOOT0 находится на низком уровне, микроконтроллер STM32G4 загружается из Flash-памяти с пользовательским кодом. Когда вывод BOOT0 находится на высоком уровне, режим загрузки определяет состояние бита nBOOT1. В случае, если nBOOT1 = 1, загрузка выполняется из системной памяти, которая содержит собственный загрузочный код ST. В случае, когда nBOOT1 = 0, загрузка выполняется из области памяти SRAM1.

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

Блок для операций с плавающей запятой, присутствующий в ядре Cortex-M4, устанавливает флаг состояния исключения в регистре FPSCR для каждой инструкции, в соответствии с архитектурой FPv4. Для определения флага состояния процессор имеет шесть выходных контактов: IXC, FC, OFC, DZC, IDC и IOC (рисунок 4). Таким образом, сигнал о прерывании приходит только когда установлен соответствующий бит разрешения в регистре SYSCFG_CFGR1 и флаг в FPSCR. FPU не поддерживает пользовательские прерывания.

Рис. 4. Блок операций с плавающей точкой STM32G4

Рис. 4. Блок операций с плавающей точкой STM32G4

На борту STM32G4 присутствуют четыре встроенные контроллера I2C, которые поддерживают три режима работы:

  • стандартный режим (Standard-mode), при котором максимальная скорость передачи составляет 100 кбит/с;
  • скоростной режим (Fast-mode), максимальный битрейт которого составляет 400 кбит/с;
  • скоростной режим плюс (Fast-mode Plus) с максимальной скоростью передачи 1 Мбит/с. Включение и выключение Режима Fast-mode Plus производится путем установки/снятия управляющего бита в регистре SYSCFG_CFGR1 для каждого контроллера. Когда на выводе GPIO активирован режим FM+, конфигурация GPIO, запрограммированная в регистре GPIOx_OSPEEDR, игнорируется.

SYSCFG также отвечает за выбор источника питания аналогового переключателя (I/O analog switch). Выбор источника производится при помощи установки битов BOOSTEN и ANASWVDD в регистре SYSCFG_CFGR1. Таким образом, когда напряжение VDDA превышает 2,4 В, аналоговый переключатель должен получать питание от VDDA (BOOSTEN = 0, ANASWVDD = 0), в случае же, если напряжение VDDA ниже 2,4 В и VDD выше 2,4 В, онолжен запитываться от VDD (BOOSTEN = 0, ANASWVDD = 1). Когда же напряжение VDD и VDDA ниже 2,4 В, аналоговый переключатель должен получать питание от выхода усилителя VDD (BOOSTEN = 1, ANASWVDD = 0).

Контроллер прерываний (NVIC)

Контроллер прерываний NVIC, используемый в микроконтроллерах STM32G4, имеет 102 входа и позволяет задавать 16 уровней приоритета и менять их во время работы в динамическом режиме. NVIC определяет скорость реакции на прерывания, позволяет перемещать таблицу векторов, а также производить контроль питания. Перемещение таблицы векторов прерываний дает возможность разработчику системы адаптировать размещение подпрограмм обработки прерываний к макету памяти приложения. В частности, векторная таблица может быть перемещена в SRAM.

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

Программное обеспечение отвечает за назначение уровня приоритета каждому прерыванию, а также всем источникам исключений, не включая сброс, немаскируемое прерывание (или NMI, Non-Maskable Interrupt) и системную ошибку. Перед началом обработки прерывания происходит сохранение контекста, который будет восстановлен после завершения операции (рисунок 5).

В случае, когда во время обработки одного прерывания возникает необходимость начала обработки другого с более высоким уровнем приоритета, система выполняет еще одну пару операций сохранения/восстановления контекста. На рисунке 5б как раз показана такая ситуация: возникло прерывание IRQ1, после чего система сохранила контекст и начала обработку, однако в процессе обработки возникло прерывание IRQ2 с более высоким уровнем приоритета, в связи с чем система была вынуждена сохранить контекст IRQ2, выполнить его обработку, восстановить контекст IRQ2 и только потом вернуться к обработке IRQ1. Данный процесс носит название вложенной обработки прерываний.

В том случае, если во время обработки одного прерывания (IRQ1) возникает еще одно, но с более низким приоритетом (IRQ2), то система продолжает работу, поставив новое прерывание в очередь обработки (рисунок 5в). Таким образом восстановление контекста происходит только после обработки прерывания IRQ2.

Еще одни вариант – это возникновение прерывания с более высоким уровнем приоритета (IRQ2) во время сохранения контекста до начала обработки (IRQ1). В таком случае система «перескакивает» на обработку прерывания IRQ2, а IRQ1 ставит в очередь (рисунок 5г).

Рис. 5. Обработка прерываний в микроконтроллерах STM32G4

Рис. 5. Обработка прерываний в микроконтроллерах STM32G4

Флаги NVIC выставляются вне зависимости от разрешения или запрета на выполнение прерываний. Доступ к регистрам управления и состояния NVIC осуществляется через частную периферийную шину (PPB), встроенную в процессор Cortex-M4.

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

Контроллер прямого доступа к памяти (DMA)

Основным преимуществом контроллера прямого доступа к памяти для приложений STM32G4 является разгрузка центрального процессора для передачи данных из любого источника в память. На рисунке 6 представлена структурная схема блока DMA.

Одной из особенностей DMA STM32G4 является наличие двух контроллеров прямого доступа, причем для каждого из них можно индивидуально задать следующие параметры:

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

Рис. 6. Структурная схема DMA STM32G4

Рис. 6. Структурная схема DMA STM32G4

Кроме того, каждый канал контроллеров DMA также имеет независимые настройки:

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

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

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

  • завершение передачи полублока;
  • блокировка завершения передачи;
  • ошибка передачи;
  • любое из трех вышеупомянутых событий (то есть глобальное).

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

Особенности DMAMUX STM32G4:

  • 115 запросов прерываний и 4 генератора запросов DMAMUX;
  • 21 триггер и входы синхронизации;
  • до 16 каналов/запросов DMA.

DMAMUX имеет в своем составе два основных блока: мультиплексор запросов и генератор запросов. Мультиплексор запросов DMAMUX позволяет маршрутизировать запрос DMA от периферийных устройств к контроллерам DMA.

Каждый канал мультиплексора имеет следующие особенности:

  • встроенный счетчик запросов DMA программируется через поле NBREQ;
  • запрос DMA уменьшает счетчик запросов DMA. При обнулении счетчик запроса DMA автоматически перезагружается со значением, запрограммированным в поле NBREQ;
  • при обнулении событие DMAMUX может быть сгенерировано, если включено (через поле EGE);
  • четыре события DMAMUX (от каналов 0…3) повторяются и подключаются к DMAMUX в качестве триггерных входов и входов синхронизации. Это позволяет связывать запросы для другого канала DMA через синхронизацию и/или запуск.

Кроме того, для каждого канала мультиплексора существуют два режима работы, которые программируются через поле SE:

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

В безусловном режиме работы запросы DMA обрабатываются без каких-либо дополнительных условий. При обработке запроса встроенный вычитающий счетчик уменьшается на 1. После перехода через ноль счетчик перезагружается значением, записанным в поле NBREQ соответствующего регистра конфигурации DMAMUX_CxCR. Кроме того, при переходе счетчика через 0 формируется сигнал dmamux_evtx. Такие сигналы могут использоваться в качестве триггерных сигналов для генератора запросов. Пример генерации запроса при переполнении внутреннего вычитающего счетчика DMA показан на рисунке 7.

Рис. 7. Генерация запросов при переполнении внутреннего вычитающего счетчика в безусловном режиме работы

Рис. 7. Генерация запросов при переполнении внутреннего вычитающего счетчика в безусловном режиме работы

При генерации запросов в режиме синхронизации запросы DMA на выходе мультиплексоров синхронизируются со входными сигналами dmamux_syncx. В качестве сигналов синхронизации обычно выступают: EXTI LINE0…EXTI LINE15, выходы dmamux_evt0…dmamux_evt3, LPTIM1_OUT, LPTIM1_OUT, TIM14_OC. Выбор источника синхронизации выполняется с помощью поля SYNC_ID в регистрах DMAMUX_CxCR. На рисунке 8 представлен пример работы мультиплексора DMAMUX в синхронном режиме: до прихода сигнала синхронизации запрос DMA не обрабатывается, однако после возникновения сигнала обработка запросов DMA выбранного источника разрешается, при этом активизируется встроенный счетчик. При обработке каждого запроса содержимое счетчика уменьшается на 1. При обнулении счетчика канал вновь блокируется и формируется сигнал события dmamux_evtx. В дальнейшем обработка запроса DMA возможна только после прихода следующего сигнала синхронизации. Полярность сигналов синхронизации выбирается пользователем с помощью поля SPOL регистра DMAMUX_CxCR.

Рис. 8. Генерация запросов в синхронном режиме работы

Рис. 8. Генерация запросов в синхронном режиме работы

Контроллер прерываний и событий (EXTI)

Контроллер EXTI предназначен для пробуждения системы и процессорного ядра, формирования сигналов событий, а также генерации прерываний. Блок-схема EXTI микроконтроллеров STM32G4 показана на рисунке 9.

Рис. 9. Блок-схема контроллера EXTI STM32G4

Рис. 9. Блок-схема контроллера EXTI STM32G4

EXTI обеспечивает до 42 независимых событий, разделенных на две категории: настраиваемые и прямые.

Прямые события представляют собой сигналы прерываний, сгенерированные в периферийных блоках, например, прерывания от USART. Данные блоки аппаратно подключены к контроллеру NVIC. Контроллер EXTI дает возможность использовать данные сигналы прерываний в качестве событий для пробуждения системы и ядра. Прямые события, как правило, связаны с USB, I2C, UART, USART, LPUART1, LPTIM1 и UCPD1.

Настраиваемые события представляют собой сигналы, полученные от периферии, которые не имеют собственных прерываний и флагов. К ним, в частности, относятся сигналы от GPIO, схемы контроля напряжения питания PVD, RTC, аналоговых компараторов COMP1 и COMP2 и модулей ШИМ. Данные события также используются контроллером EXTI для пробуждения системы и ядра, а также для генерации прерываний. На приведенном ниже рисунке 10 прерывания от настраиваемых событий обозначены как it_exti_per.

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

Событие процессора – это импульсный сигнал, используемый процессорами ARM для выхода из состояния малого энергопотребления Wait For Event.

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

В таблице 2 представлены входы блока EXTI, присутствующего в микроконтроллере STM32G4. Для каждого входа указан тип события: настраиваемое или прямое.

Таблица 2. Источники сигналов для линий EXTI STM32G4

Линии EXTI Источник Тип
0…15 GPIO Настраиваемое
16 PVD output Настраиваемое
17 RTC alarm event Настраиваемое
18 USB device FS wakeup event Прямое
19 Timestamp or CSS_LSE Настраиваемое
20 RTC wakeup timer Настраиваемое
21 COMP1 output Настраиваемое
22 COMP1 output Настраиваемое
23 I2C1 wakeup Прямое
24 I2C2 wakeup Прямое
25 USART1 wakeup Прямое
26 USART2 wakeup Прямое
27 I2C3 wakeup Прямое
28 USART3 wakeup Прямое
29 COMP3 output Настраиваемое
30 COMP4 output Настраиваемое
31 COMP5 output Настраиваемое
32 COMP6 output Настраиваемое
33 COMP7 output Настраиваемое
34 UART4 wakeup Прямое
35 UART5 wakeup Прямое
36 LPUART1 wakeup Прямое
37 LPTIM1 wakeup Прямое
38 PWM1 wakeup Настраиваемое
39 PWM2 wakeup Настраиваемое
40 PWM3 wakeup Настраиваемое
41 PWM4 wakeup Настраиваемое
42 I2C4 wakeup Прямое
43 UCPD1 wakeup Прямое

Flash: организация памяти, буферы

Микроконтроллеры STM32G4 имеют до 512 кбайт Flash-памяти, разделенной на два так называемых «банка» (bank). Контроллер Flash обеспечивает операции чтения, записи и стирания, а также программирование байтов конфигурации (Option bytes), и реализует защитные функции. Приложения, использующие Flash-память контроллера, могут расчитывать на ее высокую производительность наряду с низким энергопотреблением.

В микроконтроллерах STM32G4 Flash-память состоит из двух блоков: основная память (Main memory block) и информационный блок (Information block). В основной памяти обычно хранится пользовательская программа. Данная память, в зависимости от категории микроконтроллера, организована в виде одного или двух банков с разбиением на страницы (Page) по 4 или 2 кбайта соответственно (всего 64 или 128 страниц). Каждая страница банка состоит из 8 строк по 512 или 256 байт. Программирование основной памяти осуществляется по 8 байт (стандартный режим) или по 256 байт (скоростной режим, или Fast programming). Стирание памяти возможно либо постранично (по 2 кбайта), либо полностью (Mass erase). Для операции удаления страницы, банка или массового стирания требуется около 22 мс, а время программирования двойного слова составляет 82 мкс.

В дополнение к основной Flash-памяти STM32G4 также поддерживает:

  • системную память объемом 28 кбайт. Данная память, содержащая загрузчик ST, используется для перепрограммирования Flash с помощью интерфейсов USART, I2C, SPI;
  • 1-килобайтную OTP (однократно программируемую память) – память, которую можно использовать для хранения пользовательских данных, которые нельзя стирать или изменять;
  • байты конфигурации, содержащие параметры по умолчанию для настройки системы. Они автоматически загружаются после сброса при включении питания;
  • область байтов конфигурации объемом 128 байт. Данная область объединяет в себе различные конфигурационные параметры, которые впоследствии могут быть изменены пользователем.

Более подробная организация Flash-памяти в микроконтроллерах STM32G4 показана в таблице 3 на примере контроллера STM32G484xE.

Таблица 3. Организация Flash-памяти на примере контроллера STM32G484xE

Область памяти Адрес памяти
(3-я категория, 2-й банк)
Размер, кбайт Имя
Основная память Банк 1 0x0800_0000…0x0800_07FF 2 Page 0
0x0803_F800…0x0803_FFFF 2 Page 127
Банк 2 0x0804_0000…0x0804_07FF 2 Page 0
0x0807_F800…0x0807_FFFF 2 Page 127
Информационный блок 0x1FFF_0000…0x1FFF_6FFF 28 Системная память
0x1FFF_7000…0x1FFF_73FF 1 Область OTP
0x1FFF_7800…0x1FFF_787F 48 Option bytes

Как уже упоминалось ранее, Flash-память поддерживает два режима работы: стандартный и ускоренный. В таблице 4 приведены ключевые характеристики данных режимов.

Таблица 4. Отличия режимов программирования Flash для микроконтроллеров STM32G4

Режим программирования Стандартный режим Ускоренный режим
Цель Основная память + область OTP Только основная память
Размерность, байт 8 256
Дополнительная информация Нет проверки адреса, частота работы ≥ 8 МГц, запрещены прерывания
Время записи 256 байт, мс 2,61 1,91

Стоит отметить, что чтение из Flash-памяти является относительно длительной операцией, и чтобы согласовать процесс чтения и выполнения кода, требуется введение специальных циклов ожидания: wait State (WS). Количество циклов ожидания зависит от тактовой частоты и диапазона рабочего напряжения (таблица 5).

Таблица 5. Соотношение таковой частоты и числа циклов ожидания при чтении из Flash микроконтроллеров STM32G4

Количество циклов ожидания, WS HCLK, МГц
VCORE, Диапазон 1
(усиленный)
VCORE, Диапазон 1
(нормальный)
VCORE, Диапазон 2
0 WS (1 такт) ≤ 34 ≤ 30 ≤ 12
1 WS (2 такта) ≤ 68 ≤ 60 ≤ 24
2 WS (3 такта) ≤ 102 ≤ 90 ≤ 26
3 WS (4 такта) ≤ 136 ≤ 120
4 WS (5 тактов) ≤ 170 ≤ 150
5 WS (6 тактов) ≤ 120
6 WS (7 тактов) ≤ 140
7 WS (8 тактов) ≤ 160
8 WS (9 тактов) ≤ 170

Как видно из таблицы 5, работа без циклов ожидания возможна только при тактовой частоте менее 20 МГц для первого диапазона напряжений и при частоте менее 26 МГц для второго диапазона. При работе на максимальной частоте 170 МГц требуются как минимум 8 циклов ожидания.

Для повышения уровня производительности компания STMicroelectronics разработала и внедрила в свои решения, в том числе в STM32G4, адаптивный ускоритель реального времени для Flash-памяти ART Accelerator. Он представляет собой своего рода контроллер кэша, ориентированный на программы, исполняемые из Flash-памяти. Благодаря ART-ускорителю микроконтроллеры STM32G4 способны работать на максимальной частоте без задержек, связанных с упомянутыми ранее циклами ожидания.

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

Ускоритель ART обеспечивает выдающуюся производительность и снижает динамическое энергопотребление. Он состоит из кэша инструкций объемом 1 кбайт, 256 байтов кэша данных и буфера предварительной выборки. Кэш инструкций, в свою очередь, содержит 32 строки по 4 двойных слова, а кэш данных – 8 строк по 4 двойных слова.

Для предотвращения снижения скорости считывания инструкций из памяти, вызванной ветвлением, вызовами подпрограмм, системными вызовами и прерываниями, ART Accelerator использует очередь предварительной выборки и кэш ветвления. Таким образом, в тот момент, когда программный счетчик перенаправления указывает на недавно использованный адрес, инструкции находятся в кэше и будут немедленно загружены в очередь предварительной выборки для исполнения, экономя при этом машинные циклы. Более интеллектуальное (адаптивное) управление кэшем с помощью встроенной логики позволяет выдавать более высокие результаты и повысить скорость работы.

Flash STM32G4 имеет в своем составе 48 байт конфигурации, которые используются для ранней настройки системы перед запуском Cortex®-M4. Данные байты автоматически загружаются после сброса питания или по запросу путем установки бита OBL_LAUNCH в регистре FLASH_CR. Также данные байты определяют уровень защиты памяти. Наименование и назначение байтов конфигурации более подробно описано в таблице 6.

Таблица 6. Назначение байт конфигурации в STM32G4

Наименование Назначение
BOR_LEV[2:0] Задание пороговых значений BOR
nRST_STOP Разрешение сброса при выходе из режима Stop
nRST_STDBY Разрешение сброса при выходе из режима Standby
nRST_SHDW Разрешение сброса при выходе из режима Shutdown
WWDG_SW Выбор типа оконного сторожевого таймера: аппаратный или программный
IWDG_SW Выбор типа независимого сторожевого таймера: аппаратно-независимый или программно-независимый
IWDG_STOP Разрешение работы IWDG в режиме Stop
IWDG_STDBY Разрешение работы IWDG в режиме Standby
BFB2 Управление загрузкой банков памяти
DBANK Выбор режима загрузки банков памяти: Single Bank mode и Dual Bank mode
nBOOT1 Выбор режима загрузки микроконтроллера
nSWBOOT0
nBOOT0
CCM_SRAM_RST Стирание SRAM при сбросе
SRAM_PE Активация проверки четности SRAM1 и CCM SRAM
BOOT_LOCK Указание микроконтроллеру при установке загружаться из основной Flash-памяти
SEC_SIZE1[7:0] Установка защищенной области памяти для банка 1
SEC_SIZE2[7:0] Установка защищенной области памяти для банка 2
IRHEN Разрешение внутреннего сброса
NRST_MODE Выбор функции PG10/NRST
RDP [7:0] Установка защиты от чтения
PCROP1_STRT[14:0] Установка защиты от чтения проприетарного кода, банк 1
PCROP1_END[14:0]
PCROP2_STRT[14:0] Установка защиты от чтения проприетарного кода, банк 2
PCROP2_END[14:0]
PCROP_RDP Сохранение параметров PCROP при снижении уровня защиты
WRP1A_STRT [6:0] Установка защиты секторов A и B от записи, банк 1
WRP1A_END [6:0]
WRP1B_STRT [6:0]
WRP1B_END [6:0]
WRP1A_STRT [6:0] Установка защиты секторов A и B от записи, банк 2
WRP1A_END [6:0]
WRP1B_STRT [6:0]
WRP1B_END [6:0]

Как следует из байтов конфигурации, Flash STM32G4 имеет в своем составе 48 байт конфигурации, которые используются для ранней настройки системы перед запуском Cortex®-M4. Данные байты автоматически загружаются после сброса питания или по запросу путем установки бита OBL_LAUNCH в регистре FLASH_CR. Данные байты также определяют уровень защиты памяти.

Flash STM32G4 поддерживает следующие функции защиты:

  • защита от чтения (RDP). Предназначена для защиты содержимого Flash-памяти, конфигурационных байтов, внутренней SRAM CCM и резервных регистров от операций чтения через отладчик или через программный код, выполняемый из SRAM или загрузчика;
  • защита от записи (WRP). Данный тип защиты предотвращает стирание и перепрограммирование Flash-памяти;
  • защита от чтения проприетарного кода (PCROP). Механизм, запрещающий доступ к блоку Flash-памяти для чтения, записи и стирания. Доступ к выбранному фрагменту памяти будет возможен только для его исполнения;
  • защищенная область памяти (Securable Memory Area). Данная область позволяет обратиться к ней только один раз во время загрузки микроконтроллера, после чего доступ блокируется. Securable Memory Area удобно использовать в тех случаях, когда при загрузке и инициализации микроконтроллера необходимо пользоваться каким-либо кодом, доступ к которому необходимо ограничить со стороны остальной программы, например, в случае загрузчиков, паролей, кодов доступа.

Модуль отладки (DBG)

STM32G4 включает в себя все знакомые возможности отладки, предоставляемые семейством микроконтроллеров STM32: Flash-загрузку, отладку точки останова, контроль регистров и просмотр памяти. Инфраструктура отладки использует стандарт ARM CoreSight, поддерживаемый большинством поставщиков инструментов.

DBG включает в себя функционал, заложенный на уровне ядра, и дополнительный функционал на уровне SoC. Подключение внешних отладчиков производится с помощью порта Debug Access Port (DAP) и двухпроводного интерфейса Serial Wire Debug (SWD).

Все отладочные блоки, входящие в состав процессора, подключены к ядру и к DAP посредством отдельной шины (Private Peripheral Bus). При этом отладчик имеет доступ к регистрам отладочных блоков даже когда процессор выполняет программу. Кроме функциональных блоков, модуль DBG имеет в своем составе ROM-память, которая содержит служебную информацию.

Основные отладочные блоки микроконтроллеров STM32G4 обозначены пунктирной линией на рисунке 10.

Рис. 10. Отладочная архитектура STM32G4

Рис. 10. Отладочная архитектура STM32G4

Рассмотрим более подробно блоки, являющиеся частью отладочной архитектуры STM32G4:

  • SWJ-DP (Serial Wire-JTAG Debug Port) позволяет внешнему отладчику получать доступ к любым отображенным в память ресурсам, также доступным из ядра Cortex-M4. SWJ-DP поддерживает два протокола для обмена данными с датчиком отладки:
    • либо протокол двухпроводной последовательной отладки (SWD);
    • либо 5-проводной протокол JTAG.

SWJ-DP автоматически определяет, какой протокол используется. После сброса все пять выводов, используемых для SWJ-DP, назначаются в качестве выделенных выводов. STM32G4 предлагают возможность отключения некоторых или всех портов SWJ-DP и, следовательно, возможность освобождения связанных выводов GPIO, за исключением NJTRST, который можно оставить отключенным, но нельзя использовать как GPIO общего назначения без потери соединения с отладчиком.

  • PPB (Private Peripheral Bus) – 32-битная шина APB-типа, служащая для выборки/записи данных и отладочного доступа к периферии.
  • FPB (Flash Patch and Breakpoint) реализует аппаратные точки останова, исправляет код и данные из пространства кода в пространство системы.
  • DWT (Data Watchpoint and Trace) – узел, предназначенный для отладки системы. Он содержит таймер, представляющий собой 32-разрядный счетчик, значение которого увеличивается на единицу с каждым тактовым импульсом микроконтроллера.
  • ETM (Embedded Trace Macrocell) позволяет производить трассировку процессорных инструкций во время их выполнения: код выполняется на полной скорости с пребываниями и таймерами, при этом процессор остается присоединенным к отладчику. ETM дает возможность разработчику отслеживать вход в прерывания, наблюдать за ходом выполнения инструкций. ETM также позволяет точно определить распределение процессорного времени на различные задачи и, как следствие, оптимизировать код по времени.
  • ITM (Instrumental Trace Macrocell) – блок внутри ядра Cortex-M4, используемый для неинвазивного вывода (трассировки) различного вида диагностической информации.
  • TPIU (Trace Port Interface Unit) – порт трассировки прерываний, который конфигурируется для поддержки инструментальной трассировки в целях отладки ITM.

Таким образом, все устройства, участвующие в процессе отладки, имеют регистры с отображением в памяти, доступные через собственную периферийную шину (PPB) как ядром, так и SWJ-DP. Отладчик может получить доступ к отображенным в память ресурсам во время работы процессорного ядра. Например, точка останова может быть установлена отладчиком путем доступа к блоку FPB, подключенному к частной периферийной шине, в то время как процессорное ядро выполняет инструкции.

Подключение к ПК пользователя для отладки осуществляется через разработанный ST программатор/отладчик ST-Link, который поддерживает протокол отладки SW и JTAG, а также порт трассировки SWO. На данный момент доступно третье поколение ST-Link. Версия 3 ST-Link может использоваться для передачи/получения данных о цели с использованием UART, I2C, SPI, CAN или GPIO, однако только один из этих интерфейсов может быть активным.

Для проведения отладки рекомендуется использовать программное обеспечение STM32CubeProgrammer, это многофункциональный программный инструмент для микроконтроллеров STM32. STM32CubeProgrammer поставляется в версиях GUI (графический интерфейс пользователя) и CLI (интерфейс командной строки). Он обеспечивает простую в использовании и эффективную среду для чтения, записи и проверки памяти устройства, включая дополнительные байты, через интерфейс отладки (JTAG и SWD) и интерфейс загрузчика (UART и USB). 

Система тактирования и сброса (RCC)

Микроконтроллеры STM32G4 содержат три внутренних генератора, два генератора для внешнего кристалла или резонатора и один контур с фазовой синхронизацией (или ФАПЧ). Кроме того, многие периферийные устройства имеют свое собственное тактирование, независимое от системных часов. RCC также управляет различными типами сброса, присутствующими в устройстве.

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

RCC предлагает большой выбор источников тактирования, которые можно выбирать в зависимости от требований к мощности, точности и производительности.

На рисунке 11 представлено упрощенное дерево тактирования, на котором отображены следующие генераторы импульсов:

  • встроенный высокочастотный тактовый генератор HSI16 с частотой 16 МГц, который обеспечивает точность 1% и быстрое время пробуждения. Его можно выбрать в качестве часов при включении из режимов Stop 0, Stop 1 или Stop 2, а также в качестве резервных часов, если система безопасности часов обнаруживает сбой HSE;
  • высокоскоростной внутренний 48-мегагерцевый генератор (HSI48);
  • встроенный низкочастотный тактовый генератор LSI с частотой 32 кГц, который может оставаться включенным во всех режимах, кроме режимов выключения и VBAT;
  • внешний высокочастотный тактовый генератор или резонатор HSE с частотой 4…48 МГц. Для предотвращения сбоя в работе STM32G4 имеет встроенный механизм защиты, называемый Clock Security System (CSS), который позволяет продолжить работу микроконтроллера, если произошел сбой в работе внешнего кварцевого генератора. При обнаружении сбоя HSE тактирование автоматически переключится на внутренний генератор HSI16 и произойдет прерывание с переходом в обработчик NMI (немаскируемое прерывание), которое позволяет, например, сообщить пользователю о возникновении аппаратной ошибки;
  • внешний низкочастотный источник тактирования LSE с частотой 32,768 кГц, который может оставаться включенным во всех режимах с малым энергопотреблением и в режиме VBAT Система безопасности часов контролирует неисправность генератора LSE. В случае сбоя приложение может переключить часы RTC на LSI. LSE может использоваться для синхронизации RTC, USART или периферийных устройств UART с малым энергопотреблением, а также таймеров с малым энергопотреблением;
  • схема ФАПЧ (PLL) с тремя выходами: PLLRCLK, PLLQCLK и PLLPCLK.

Рис. 11. Упрощенное дерево тактирования STM32G4

Рис. 11. Упрощенное дерево тактирования STM32G4

В таблице 7 показаны максимальные значения частоты для источников тактирования в зависимости от режима работы.

Таблица 7. Частота источников тактирования в зависимости от режима работы

Диапазон напряжения fHCLK, МГц HSI16, МГц HSE, МГц PLL, МГц
1 диапазон, режим Boost Основной регулятор (MR) 150…170 16 48 170
1 диапазон, нормальный режим 26…150 16 48 150
2 диапазон ≤26 16 26 26
Режим малого энергопотребления/сон Низкомощностный регулятор ≤2 Доступно Доступно с делителем Недоступно

Таким образом, максимальная системная тактовая частота составляет 170 МГц.

Кроме выбора источника тактирования, RCC обеспечивает безопасное и гибкое управление сбросом.

RCC поддерживает три типа сброса:

  • системный сброс (System Reset);
  • сброс по питанию (Power Reset);
  • сброс дежурного домена (RTC Domain Reset).

Рассмотрим данные типы сброса более подробно.

Системный сброс (рисунок 12). При системном сбросе происходит сброс всех регистров, за исключением регистров самой RCC и регистров дежурного домена (RTC domain).

Рис. 12. Реализация схемы системного сброса (System Reset)

Рис. 12. Реализация схемы системного сброса (System Reset)

В качестве источников системного сброса могут выступать:

  • внешний сигнал низкого уровня на входе NRST (External Reset);
  • сигнал от сторожевого таймера (IWDG Reset);
  • сброс при подаче питания;
  • сигнал от оконного таймера (WWDG Reset);
  • программный сброс (Software Reset);
  • сброс при ошибочном переходе в спящий режим (Low-Power Management Reset);
  • сброс при установке бита OBL_LAUNCH в регистре FLASH_CR (Option Byte Loading Reset).

Источник, ставший причиной возникновения сброса, достаточно просто определить по содержимому регистра управления и состояния RCC_CSR.

Из рисунка 11 видно, что все источники сброса (кроме входа NRST) имеют одинаковый уровень приоритета, так как подключены по схеме логического ИЛИ. Сигнал с данного элемента управляет выходным транзистором, подключенным к выводу NRST, который можно использовать для сброса других компонентов системы.

Второй тип сброса – это сброс по питанию. Он может быть выполнен в трех случаях:

  • при возникновении сигналов сброса от схем BOR и POR, контролирующих напряжение питания. При этом сбрасываются все регистры, за исключением регистров дежурного домена (RTC Domain);
  • при выходе из режима Standby mode. При этом сбрасываются все регистры домена VCORE. Содержимое остальных регистров – RTC, WKUP, IWDG – сохраняется;
  • при выходе из режима Shutdown mode. При этом сбрасываются все регистры, за исключением регистров дежурного домена (RTC Domain).

Третий тип сброса – это сброс дежурного домена. При возникновении данного сброса обнуляются регистры RTC, резервные регистры и регистр управления дежурным доменом RCC. Сброс дежурного домена происходит, когда бит BDRST установлен в регистре управления RCC Backup Domain (RCC_BDCR). Данный сброс также происходит при включении VDD и VBAT, если оба источника ранее были отключены.

Контроллер питания (PWR)

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

Устройства STM32G4 имеют несколько независимых источников питания, которые могут быть установлены на разные напряжения или связаны друг с другом. Основным источником питания является VDD, обеспечивающий почти все операции ввода-вывода кроме тех, которые входят в домен VBAT. VDD также снабжает питанием Flash-память, блок сброса, датчик температуры и все внутренние источники синхронизации. Кроме того, он поставляет питание схеме Standby, которая включает логику пробуждения и независимый сторожевой таймер. Блок-схема системы питания STM32G4 приведена на рисунке 13.

Рис.13. Блок-схема системы питания микроконтроллеров STM32G4

Рис.13. Блок-схема системы питания микроконтроллеров STM32G4

Рассмотрим приведенные на схеме источники питания более подробно:

  • VDD представляет собой внешний источник питания с напряжением 1,71…3,6 В, который напрямую подключен ко внутренним регуляторам, части аналоговых схем, контроллеру питания и внутренним генераторам тактовых импульсов. Подключение источника осуществляется непосредственно через вывод VDD/VDDA. Важно отметить, что нижняя граница напряжений источника, равная 1,7 В, определяется граничным напряжением VPOR(MAX) схемы сброса POR (Power-On Reset). Однако после подачи напряжения схема POR освобождает сигнал сброса, и микроконтроллер может работать со значением напряжения вплоть до VPDR(MIN) схемы сброса PDR (Power-Down Reset), то есть до 1,6 В;
  • VDDA отвечает за питание аналоговой части микроконтроллера. Фактически, в качестве VDD и VDDA выступает один и тот же источник питания, подключаемый к выводу VDD/VDDA. Верхняя граница диапазона VDDA соответствует максимальному напряжению VDD и составляет 3,6 В, а минимально допустимая граница зависит от периферии: 1,62 В для АЦП и компараторов, 1,8 В для ЦАП, 2,4 В для VREFBUF. Стоит отметить, что источник VDDA также может быть независим от VDD и контролироваться с помощью контроллеров периферийного напряжения (PVM);
  • VBAT – внешний источник с напряжением 1,55…3,6 В. VBAT служит для питания некоторых периферийных блоков в дежурном режиме при отключении основного питания VDD. К домену VBAT, также называемому доменом RTC, относятся: RTC, TAMP, LSE и дежурные регистры (Backup Registers);
  • VDDIO = VDD – питание портов ввода-вывода I/O. Уровни напряжения VDDIO полностью совпадают с VDD;
  • VREF+ – источник опорного напряжения для АЦП и ЦАП. В качестве VREF+ может выступать внешний источник, подключаемый к соответствующему выводу микроконтроллера. Напряжение VREF+ должно быть равно VDDA, если VDDA < 2 В. Если же VDDA > 2 В, то напряжение VREF+ должно лежать в диапазоне 2 В…VDDA. В качестве VREF+ может использоваться встроенный буфер VREFBUF с программируемым выходным напряжением 2,048 В или 2,5 В. Выбор конкретного значения производится с помощью бита VRS из регистра VREFBUF_CSR. Это напряжение также может подаваться на вывод VREF+ микроконтроллера. Стоит иметь в виду, что такой вывод есть не у всех исполнений. Для микроконтроллеров без вывода VREF+ буфер VREFBUF должен находиться в отключенном состоянии;
  • VCORE – питание домена VCORE, к которому относится процессорное ядро, цифровая периферия, SRAM и Flash (для питания Flash также используется VDD). Напряжение VCORE получают из основного напряжения питания VDD с помощью встроенных регуляторов: основного регулятора MR (Main Regulator) и малопотребляющего регулятора LPR (Low-Power Regulator).

Если требуется снизить уровень потребления, следует обратить внимание на снижение рабочей частоты. Так, на частотах менее 2 МГц основной регулятор MR может быть отключен, а для питания домена VCORE будет достаточно малопотребляющего регулятора LPR. Микроконтроллеры STM32G4 могут работать в целом ряде режимов, переходя из одного в другой, что позволяет значительно снизить энергопотребление системы.

Дадим краткую характеристику возможным режимам работы:

  • Run – активный режим работы. В данном режиме процессорное ядро активно и может работать на частоте до 170 МГц. Память и периферия доступны без каких-либо ограничений (кроме режима Range 2), программный код выполняется из SRAM или Flash. Для уменьшения потребления могут быть использованы различные способы: активное управление напряжением питания (режимы Range 1 и Range 2 регулятора MR), снижение тактовой частоты системы, снижение частоты тактирования используемых периферийных блоков, отключение тактирования неиспользуемых периферийных блоков, отключение внешнего генератора HSE и другие;
  • Low-Power Run – малопотребляющий активный режим с отключенным основным регулятором MR и питанием домена VCORE от малопотребляющего регулятора LPR. В данном режиме ограничена максимальная частота системы (2 МГц) и возможность записи и стирания Flash, однако программный код по-прежнему может выполняться из SRAM или Flash;
  • Sleep – режим работы, при котором тактирование ядра отключено, периферия (в том числе системная, например, NVIC, SysTick и прочие), а также память находятся в активном состоянии. Выход из режима и пробуждение процессора происходят при возникновении определенных событий или прерываний;
  • Low-Power Sleep – режим, сравнимый по принципу работы со Sleep, но для питания домена VCORE используется регулятор LPR, а основной регулятор MR отключается для снижения энергопотребления;
  • Stop 0. STM32G4 имеет два режима остановки: Stop 0 и Stop 1, которые являются, по сути, режимами с самым малым энергопотреблением: при переходе в режим Stop содержимое памяти SRAM и всех регистров фиксируется. Все сигналы тактирования в домене VCORE останавливаются. PLL, HSI16 и HSE – отключены. Однако некоторые периферийные блоки могут активировать HSI16 для своих потребностей. Для тактирования используются LSI и LSE. Отдельные периферийные блоки, в частности RTC, TAMP, LPTIM1, LPTIM2, LPUART, USART, I2C, могут быть включены или выключены по желанию пользователя. В режиме Stop 0 используется регулятор MR, который обеспечивает минимальную задержку при пробуждении ядра, но при этом увеличивает энергопотребление;
  • Stop 1 – режим, аналогичный Stop 0, но для питания домена VCORE используется регулятор LPR, а регулятор MR отключается с целью снижения потребления, однако такой подход увеличивает время пробуждения контроллера;
  • Standby With SRAM2 – режим ожидания с памятью SRAM2. При работе в данном режиме питание домена VCORE отключено, однако содержимое 16 кбайт SRAM2 может быть сохранено. Питание SRAM2 осуществляется от регулятора LPR. Все сигналы тактирования в домене VCORE, а также генераторы PLL, HSI16 и HSE – остановлены. Для тактирования могут использоваться LSI и LSE. Выход из режима может происходить при сбросе, событиях BOR, RTC, TAMP, IWDG, а также при подаче сигнала на соответствующие выводы микроконтроллера;
  • Standby Without SRAM аналогичен предыдущему режиму, однако содержимое SRAM2 не сохраняется. Регулятор LPR отключен;
  • Shutdown – режим, при котором питание домена VCORE отключено. Все сигналы тактирования в домене VCORE, а также генераторы PLL, HSI16, HSE, LSI – остановлены. Для тактирования доступен только LSE. В данном режиме также отключаются блоки мониторинга напряжения.

В таблице 8 изложены основные особенности описанных выше режимов работы микроконтроллеров серии STM32G4.

Таблица 8. Режимы работы микроконтроллеров STM32G4

Режим Энерго-потребление Регулятор Источник
тактирования
CPU Flash SRAM Периферия
Run (Range 1), макс. 170 МГц 173 мкА/МГц MR Range1 Любой + + + Любая
Run (Range 1), макс. 150 МГц 163 мкА/МГц
Run (Range 2), макс. 26 МГц 128 мкА/МГц MR Range2 Любая кроме USB, RNG
LP Run 183 мкА/МГц LPR Любой, кроме PPL
Sleep 37 мкА/МГц MR Range1, MR Range2 Любой Любая
Stop 0 190 мкА/МГц MR LSE/LSI Reset Pin, все I/O, BOR, PVD, PVM, RTC, IWDG, COMPx, DACx, OPAMPx, USARTx, LPUART, I2Cx, LPTM1, USB, UCPD
Stop 1 80 мА/МГц LPR
Standby (доступна SRAM2) 435 нА/МГц LPR SRAM2 + Reset Pin, 5 WKUPx pins, BOR, RTC, IWDG
Standby (отключены RTC, IWDG) 130 нА/МГц
SHUTDOWN 43 нА/МГц LSE Reset Pin, 5 WKUPx Pins, RTC

Микроконтроллер STM32G4 может переходить из одного режима в другой, однако есть некоторые ограничения. Так, например, из режима Run можно получить доступ ко всем режимам с малым энергопотреблением (Stop, Sleep, Stanby и другим), однако из режима Stop 0 нельзя напрямую перейти в Stop1 и так далее. На рисунке 14 показана схема доступа и возможности перехода между режимами работы для микроконтроллеров STM32G4.

Рис. 14. Схема доступа и возможности перехода между режимами работы для микроконтроллеров STM32G4

Рис. 14. Схема доступа и возможности перехода между режимами работы для микроконтроллеров STM32G4

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

Отдельно следует отметить дежурный режим с питанием от батарейки. При отключении основного питания микроконтроллер автоматически переключается на питание от источника VBAT с помощью встроенного ключа. В таком режиме поддерживается работа домена VBAT: RTC, TAMP, LSE и дежурных регистров. При включении питания микроконтроллер автоматически возвращается к питанию от VDD и начинается зарядка батареи. Энергопотребление при питании от батарейки составляет около 7 нА/Мгц.

Литература

  1. STM32G4 Online Training.
  2. RM Reference manual. STM32G4 advanced Arm®-based 32-bit MCUs. (Rev.4 2020).
  3. STM32G4 mainstream series mixed signal MCU.
•••

Наши информационные каналы

О компании ST Microelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее

Товары
Наименование
NUCLEO-G474RE (ST)
NUCLEO-G431RB (ST)
B-G474E-DPOW1 (ST)
STM32G431C8T6 (ST)
STM32G431K8T6 (ST)
STM32G441KBU6 (ST)
STM32G473CBU6 (ST)
STM32G473CET6 (ST)
STM32G483VET6 (ST)
STM32G474CBT6 (ST)
STM32G484CEU6 (ST)