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

Управление питанием

500

Даже в этих семействах домен питания VDD является наиболее важным. Он используется для питания других доменов питания, таких как домен VDDIO1, который используется для питания большинства выводов микроконтроллера, и внутренний регулятор напряжения, используемый для питания домена VCORE. Он может быть запрограммирован программным обеспечением на два разных масштаба напряжения (scale 1, scale 2 и т. д.), чтобы оптимизировать потребление в зависимости от максимальной рабочей частоты системы (благодаря технологии изменения напряжения, рассмотренной ранее). Интересно отметить, что для тех микроконтроллеров, которые предоставляют порт GPIOG (то есть для тех микроконтроллеров, которые поставляются с корпусом с большим количеством выводов), домен VDDIO2 используется для независимого питания порта GPIOG. Этот домен вместе с доменом USB можно выборочно включать/отключать с помощью спе-

циальных функций, предоставляемых HAL (HAL_PWREx_EnableVddIO2(), HAL_PWREx_EnableVddUSB() и т. д.).

Чтобы сохранить содержимое резервных регистров и обеспечить функционирование RTC при отключенном источнике питания VDD, вывод VBAT может быть подключен к дополнительному напряжению цепи автономной работы (standby voltage), подаваемому от батареи или от другого источника. Вывод VBAT обеспечивает питание модуля RTC, LSE-генератора и одного или двух выводов, используемых для пробуждения микроконтроллера из режимов глубокого сна, позволяя RTC работать, даже когда основной источник питания отключен. По этой причине говорят, что источник питания VBAT питает домен RTC. Переключение на питание VBAT контролируется PDR. Вывод VLCD предназначен для управления контрастностью ЖК-дисплея.

19.4.2. Режимы питания

Помимо специальной конструкции, которая позволяет снизить энергопотребление каждого компонента микроконтроллера, STM32L предоставляет пользователю до одиннадцати различных режимов питания, как показано на рисунке 7. Для первых трех режимов питания значения потребляемого тока на МГц составляют среднее значение энергопотребления между тем, когда процессор выполняет инструкции из Flash-памяти и из SRAM18. Первые три режима питания основаны на рабочем режиме Cortex-M, а следующие четыре режима основаны на спящем режиме. Наконец, все остальные режимы пониженного энергопотребления используют режим глубокого сна Cortex-M.

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

18 Значения потребляемой мощности, показанные на рисунке 7, относятся к серии STM32L476.

Управление питанием

501

Рисунок 7. Одиннадцать режимов питания, поддерживаемых микроконтроллерами STM32L4

19.4.2.1. Рабочие режимы

По умолчанию и после включения питания или системного сброса микроконтроллеры STM32L переводятся в рабочий режим. Источником тактового сигнала по умолчанию является MSI-генератор – источник тактового сигнала с оптимизированной потребляемой мощностью, с которым мы столкнулись в Главе 10. Микроконтроллеры STM32L предлагают разработчикам более тонкие возможности настройки, которые позволяют снизить энергопотребление в данном режиме. Если нам не нужно слишком много вычислительной мощности, то мы можем оставить MSI-генератор в качестве основного источника тактового сигнала, избегая потребления питания, вводимого мультиплексором блока PLL. Снизив тактовую частоту до 24–26 МГц, мы можем сконфигурировать Динамическое изменение напряжения (DVS) на масштаб scale 2, уменьшив напряжение домена VCORE до 1,0 В в новейших микроконтроллерах STM32L4. Данный режим также называется рабочим с диапазоном частот 2 (run range 2 mode), и общее потребление энергии может быть дополнительно уменьшено путем отключения Flash-памяти.

Как было сказано ранее, Flash-память в микроконтроллере STM32L и в некоторых новейших микроконтроллерах STM32F4 (например, STM32F446) может быть отключена даже в рабочем режиме. Функция CubeHAL HAL_FLASHEx_EnableRunPowerDown() автоматически выполняет эту операцию для нас, в то время как

процедура HAL_FLASHEx_DisableRunPowerDown() снова включает Flash-память.

Единственным обязательным условием является то, что эта функция и все остальные процедуры, используемые при отключенной Flash-памяти (включая вектора прерываний), помещены в SRAM, в противном случае произойдет отказ шины Bus Fault, как только отключится Flash-память. Это легко выполнить, создав собственный скрипт компоновщика (linker script), как мы увидим в Главе 20. По этой причине инженеры ST собрали эти процедуры в от-

дельном файле с именем stm32f4xx_hal_flash_ramfunc.c.

Управление питанием

502

Таблица 2: Девять из одиннадцати режимов питания, поддерживаемых микроконтроллерами

STM32L

При нахождении системы в рабочем режиме для дальнейшего снижения энергопотребления внутренний регулятор напряжения можно сконфигурировать в режиме пониженного энергопотребления. В этом режиме системный тактовый сигнал не должен превышать 2 МГц. Функция HAL_PWREx_EnableLowPowerRunMode() выполняет эту операцию автоматически для нас. В данном режиме мы можем в конечном итоге отключить Flashпамять, чтобы еще больше снизить общее энергопотребление.

Рабочий режим с пониженным энергопотреблением (low-power run mode) представляет со-

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

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

Малое динамическое потребление Flash-памяти представляет собой небольшое потребление всякий раз, когда микропрограмме требуется доступ к Flash-памяти. Потребление от SRAM1 и от SRAM2 довольно схожи, но SRAM2 намного более энергоэффективно, чем SRAM1, когда оно не перераспределяется (remapped) по адресу 0, благодаря его доступу с состоянием 0-ожиданий (0-wait state).

19 Рисунок 8 взят из данного официального документа от ST (https://www.st.com/content/ccc/resource/training/technical/product_training/ce/57/a3/86/7a/3d/4d/87/STM32L4_ System_Power.pdf/files/STM32L4_System_Power.pdf/_jcr_content/translations/en.STM32L4_System_Power.pdf). ST также предоставляет полезное руководство по применению AN4746 (http://www2.st.com/content/ccc/resource/technical/document/application_note/5c/cb/90/97/4b/84/4e/81/DM0021 6518.pdf/files/DM00216518.pdf/jcr:content/translations/en.DM00216518.pdf) по оптимизации энергопотребле-

ния в микроконтроллерах STM32L4.