STM32

Режимы пониженного энергопотребления в STM32L

Одной из распространенных разновидностей современных встроенных систем стали устройства с автономным питанием. Главным требованием к таким изделиям выступает минимизация потребления электрического тока, с целью продления срока службы батарей и следовательно, непрерывной работы конструкции. Реализация режимов пониженного энергопотребления давно стала одним из факторов, которым производители привлекают внимание к своей продукции. Не является исключением и STMicroelectronics. Наиболее интересными изделиями в этом направлении - микроконтроллеры серии STM32L.

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

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

Отдельно следует упомянуть об источниках тактовой частоты. Самым энергозатратным оказывается внешний тактовый резонатор (HSE). Гораздо меньше потребляют встроенный генератор на 16МГц (HSI), и программируемый генератор (MSI). Учитывая, что последний включается после сброса, а также после выхода из любого «спящего» режима, то в приложениях, критичных к потребляемому току следует использовать именно его, если конечно не требуется большое быстродействие.

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

Уровень напряжения

Максимальная тактовая частота

MSI

HSI

HSE

PLL

1.8 В

4.2 МГц

16 МГц

32  МГц от внешнего источника

24 МГЦ от кристалла

32 МГц

(PLLVCOmax =96МГц)

1.5 В

4.2 МГц

16 МГц

16 МГц

16 МГц

(PLLVCOmax =48 МГц)

1.2 В

4.2 МГц

Нет

8 МГц

4 МГц

(PLLVCOmax =24 МГц)

 

Режимы пониженного энергопотребления

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

Режим

I пот.

CPU

Flash

RAM

DMA/Periph

Тактирование

RTC

LCD

Sleep

100uA/МГц

(Range 1)

Остановлен

Вкл

Вкл

Вкл

Любой источник

Доступны

82uA/МГц

(Range 2)

65uA/МГц

(Range 3)

Low Power RUN

10.4uA

(Flash Выкл, 32 КГц)

Работает

Выклили Вкл.

Вкл

Вкл

MSI

Доступны

Low Power Sleep

5.1uA

(периферия выкл.)

Остановлен

Выкл.

Вкл

Вкл

MSI

Доступны

6.1uA

(1 таймер вкл.)

Stop c RTC

1.3uA

(1.8 В)

Остановлен

Выкл.

Вкл

Остановлен

LSE, LSI

Доступны

1.6uA

(3 В)

Stop

500нА

Остановлен

Выкл.

Вкл

Остановлен

LSE, LSI

Выкл.

Выкл.

Standby c RTC

1.3uA

(3 В)

Выкл

Выкл.

Выкл.

Выкл.

LSE, LSI

Выкл.

Вкл.

1uA

(1.8 В)

Standby

270нА

Выкл.

Выкл.

Выкл.

Выкл.

LSE, LSI

Выкл.

Выкл.

 

Low Power RUN

В режиме Low Power RUN работа процессора не приостанавливается. При этом производится только снижение напряжения питания ядра и ограничение тактовой частоты. Уровень потребления в данном режиме зависит от количества задействованных периферийных устройств и тактовой частоты, на которой работает процессор.

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

RCC_AHBENR. Частота системного тактового сигнала должна быть снижена до уровня или ниже 4.2МГц (MSI range1). Непосредственно включение режима выполняется настройкой регулятора напряжения с помощью включения битов LPRUN и LPSDSR.

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

Sleep

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

Вход в режим Sleep, как и во все другие «спящие» режимы, выполняется с помощью процессорных команд WFI или WFE.  Команда WFI (Wait For Interrupt) останавливает процессор и настраивает его включение при возникновении прерывания. WFE (Wait for Event) делает то же самое, но выход из «спящего» режим производится по событию. В зависимости от состояния бита SLEEPONEXIT, вход в спящий режим может выполняться немедленно (SLEEPONEXIT=0), либо по достижению наименьшего значения приоритета ISR (SLEEPONEXIT=1).

Выход из спящего режим после срабатывания команды WFI выполняется по любому прерыванию, разрешенному в контроллере NVIC. При использовании команды WFE, выход производится, если разрешен запрос прерываний в периферийных устройствах, но запрещен в NVIC (При этом должен быть установлен бит SEVONPEND), либо контроллер EXTI настроен на работу с событиями. Для нормального продолжения работы, после пробуждения необходим сброс битов ожидания прерывания, как в периферийном устройстве, так и в контроллере прерываний.

Low Power Sleep

Главное отличие спящего режима с низким энергопотреблением от простого спящего режима (Sleep) заключается в источнике тактовой частоты. Фактически Low Power Sleep является частным случаем, в котором используется внутренний тактовый генератор MSI. Вход в режим выполняется, если MSI работает в диапазоне 1 (range 1), а регулятор напряжения в диапазоне 2 (Range2). В данном режиме отключается Flash-память, но ОЗУ остается в работе. В остальном режим аналогичен простому Sleep.

Stop

Останов процессора является базовым режимом ядра Cortex-M3, поэтому присутствует во всех микроконтроллерах. Он накладывает большие ограничения на работу внутренних схем, вследствие чего является наименее энергозатратным, из «спящих» режимов. Так, в данном режиме, производится остановка практически всей периферии микроконтроллера, а также любого основного тактового генератора. Вариантом режима Stop является случай, когда в работе остается модуль часов реального времени с соответствующим источником частоты. Для обеспечения минимального энергопотребления в данном режиме рекомендуется настройка внутреннего регулятора напряжения, а также отключение систем Vrefnt, BOR, PVD, ADC, DAC и встроенного датчика температуры. Состояние линий ввода вывода при переходе в режим STOP не изменяется, содержимое памяти и регистров сохраняется.

Для перевода в режим останова необходимо выполнить следующие действия:

  • Установить бит SLEEPDIP в регистре SCB
  • Очистить бит PDDS в регистре PWR_CR
  • Очистить бит WUF в регистре PWR_CSR
  • Настроить регулятор напряжения LPSDSR в регистре PWR_CR
  • Настроить событие или прерывание выхода из режима STOP
  • Подать команду WFI или WFE

Stadby

Режим ожидания стоит несколько особняком от других вариантов пониженного энергопотребления по причине отключения процессора и памяти. Фактически данный режим равноценен состоянию сброса. Содержимое памяти и всех регистров за исключением PWR_CSR теряется. Все порты ввода/вывода переводятся в высокоимпедансное состояние за исключением следующих линий, отвечающих за пробуждение процессора:

  • вход сброса
  • RTC_AF1 (PC13), если он сконфигурирован как вход для функций Wakeup (WKUP2), защиты данных (tamper), захвата времени (time-stamp), или как выход тревоги по таймеру (RTC Alarm), или тактовый выход RTC clock.
  • PA0 и PE6, если они сконфигурированы в качестве входов сигнала пробуждения WKUP.

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

Для перевода в режим останова необходимо выполнить следующие действия:

  • Установить бит SLEEPDIP в регистре SCB
  • Включить бит PDDS в регистре PWR_CR
  • Очистить бит WUF в регистре PWR_CSR
  • Очистить флаги источников пробуждения
  • Подать команду WFI или WFE

 

You have no rights to post comments