№11 / 2014 / статья 2

Продолжая снижать потребление: новая линейка контроллеров на ядре Cortex-M0+

Вячеслав Гавриков (г. Смоленск)

Новое семейство STM32L0 расширяет портфолио малопотребляющих микроконтроллеров от ST Microelectronics. Высокоэффективное ядро Cortex-M0+, особая Low Power-периферия, оптимизация системы питания и тактирования позволили существенно уменьшить потребляемую мощность по сравнению с семейством STM32F0, а появление USB-контроллера повысило функциональность.

Портфолио малопотребляющих контроллеров компании STMicroelecronics было расширено за счет нового семейства STM32L0. Этот контроллер является результатом сочетания новейших технологий и наиболее удачных решений, реализованных в STM8L и STM32L1. Все три семейства предназначены для работы в сегментах, для которых ранее было характерно использование только 8-/16-битных микроконтроллеров.

Несмотря на схожесть таких характеристик как малое потребление и высокая производительность, STM8L, STM32L1 и STM32L0 не являются прямыми конкурентами (рисунок 1), так как предназначены для разных приложений. Микроконтроллеры STM8L наиболее актуальны для простых приложений, где не требуется сложных вычислений и большого количества периферии. Также STM8L обладают очень низкой ценой – младшие модели линейки стоят дешевле 1$.

Рис. 1. Семейства малопотребляющих микроконтроллеров производства компании STMicroelectronics

Рис. 1. Семейства малопотребляющих микроконтроллеров производства компании STMicroelectronics

STM32L0 и STM32L1 наиболее схожи, но также имеют несколько отличий. Первое – это производительность. STM32L1 построены на ядре Cortex-M3 и в цифровом выражении производительность Cortex-M3 на 30…35% процентов выше, чем Cortex-M0+: 1,25 DMIPS/МГц против 0,9 DMIPS/МГц. Также, если посмотреть на рисунок 1, то станет видно, что STM32L0 занимает промежуточное значение между STM8L и STM32L1 как в отношении производительности, так и в отношении объемов памяти, периферии и цены. И последнее, что осталось добавить: в STM32L0 инженеры компании STMicroelectronics особое внимание уделили периферии, снижению ее потребления и нацеленности на новый рынок – рынок счетчиков электроэнергии и расходомеров.

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

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

Семейство STM32L0 включает в себя более 20 наименований. Это позволяет выбирать оптимальный контроллер для каждого конкретного приложения. В ближайшие полгода компания STMicroelectronics обещает расширить линейку как за счет простых изделий, так и за счет увеличения объемов памяти и периферии.

Общая характеристика семейства микроконтроллеров STM32L0

Семейство STM32L0 построено на ядре Cortex-M0+ и включает три основных линейки микроконтроллеров: STM32L0x1, STM32L0x2, STM32L0x3 (рисунок 2, таблица 1).

Рис. 2. Обзор микроконтроллеров семейства STM32L0

Рис. 2. Обзор микроконтроллеров семейства STM32L0

Таблица 1. Характеристики микроконтроллеров семейства STM32L0

Наименование FLASH, кБайт E2PROM, кБайт ОЗУ, кБайт 16-бит таймеры (IC/OC/PWM) 12-бит АЦП I/O LCD 12-бит ЦАП Интерфейсы Рабочая температура, °С Корпус
STM32L051C6 32 2 8 5 10 37 1xI2S; 1xUART; 2xI2C; 2xSPI; 2xUSART -40…85 LQFP 48
STM32L051C8 64 2 8 5 10 37 -40…125 LQFP 48
STM32L051K6 32 2 8 5 10 27 -40…85 LQFP 32; UFQFPN 32
STM32L051K8 64 2 8 5 10 27 -40…105 LQFP 32; UFQFPN 32
STM32L051R6 32 2 8 5 16 51 -40…85 LQFP 64; TFBGA 64
STM32L051R8 64 2 8 5 16 51 -40…105 LQFP 64; TFBGA 64
STM32L051T6 32 2 8 5 10 29 -40…85 WLCSP 36L
STM32L051T8 64 2 8 5 10 29 -40…85 WLCSP 36L
STM32L052C6 32 2 8 4 10 37 1 1xI2S; 1xUART; 1xUSB 2.0 FS; 2xI2C; 2xSPI; 2xUSART -40…85 LQFP 48
STM32L052C8 64 2 8 4 10 37 1 -40…105 LQFP 48
STM32L052K6 32 2 8 4 10 27 1 -40…85 LQFP 32; UFQFPN 32
STM32L052K8 64 2 8 4 10 27 1 -40…105 LQFP 32; UFQFPN 32
STM32L052R6 32 2 8 4 16 51 1 -40…85 LQFP 64; TFBGA 64
STM32L052R8 64 2 8 4 16 51 1 -40…105 LQFP 64; TFBGA 64
STM32L052T6 32 2 8 4 10 29 1 -40…85 WLCSP 36L
STM32L052T8 64 2 8 4 10 29 1 -40…85 WLCSP 36L
STM32L053C6 32 2 8 4 10 37 4×18 1 -40…85 LQFP 48
STM32L053C8 64 2 8 4 10 37 4×18 1 -40…105 LQFP 48
STM32L053R6 32 2 8 4 16 51 4×31/8×28 1 -40…85 LQFP 64; TFBGA 64
STM32L053R8 64 2 8 4 16 51 4×31/8×28 1 -40…125 LQFP 64; TFBGA 64
STM32L062K8 64 2 8 4 10 27 1 -40…85 LQFP 32
STM32L063C8 64 2 8 4 10 37 4×18 1 -40…85 LQFP 48
STM32L063R8 64 2 8 4 16 51 4×31/8×28 1 -40…85 LQFP 64

STM32L0x1 – базовая линейка семейства (Access line). Микроконтроллеры этой линейки выпускаются в миниа­тюрных 32-/48-/64-выводных корпусах, объем FLASH – до 64 кбайт, ОЗУ – до 8 кбайт, 2 кбайт EEPROM и базовым набором периферии. В базовом наборе периферии присутствуют 16-битные таймеры, сторожевые таймеры, часы реального времени, компараторы, 12-битный многоканальный АЦП с частотой выборок до 1,14 MSPS, последовательные интерфейсы (USART, I2C, SPI). В составе ядра реализовано четыре канала прямого доступа к памяти (DMA).

Важно отметить появление особой малопотребляющей периферии (Low Power Peripheral) – таймера LPTIM и блока асинхронного приемопередатчика LPUART, которые имеют целый ряд особенностей, позволяющих оптимизировать энергопотребление при их использовании.

Кроме того, так же, как и в семействе STM32L, имеется дополнительный мультичастотный RC-генератор (Multi speed internal clock, MSI) с диапазоном частот 0,064…4,2 МГц. Его главное назначение – подстройка рабочей частоты микроконтроллера с учетом ограничений на уровень потребляемого тока.

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

STM32L0x2, помимо базовой, имеет в своем составе дополнительную периферию: USB 2.0 (Full Speed) с блоками определения подключения зарядных устройств (BCD) и управления состояниями USB-устройства (LPM), 12-битный ЦАП, 16-канальный контроллер емкостных сенсорных кнопок (Touch sensing controller, TSC), генератор случайных чисел (True random number generator, TRNG). Количество каналов DMA увеличено до семи. Микроконтроллеры STM32L062 снабжены блоком криптографии AES.

Имея богатую периферию, данная линейка идеально подойдет для промышленных блоков, например, для блоков управления исполнительными механизмами, электроавтоматики ЧПУ и другими.

STM32L0x3 – линейка с наиболее развитой периферией. Главной отличительной чертой STM32L0x3 по сравнению с STM32L0x2 является наличие LCD-контроллера. LCD-контроллер способен управлять ЖК-экранами с числом линий до 8×28 для 64-выводных корпусов и 4×18 для 48-выводных корпусов.

Микроконтроллеры STM32L063 снабжены блоком криптографии AES.

Благодаря ЖК-контроллеру, STM32L0x3 могут быть использованы для медицинских измерительных приборов (глюкометры, тонометры), промышленных и бытовых счетчиков с индикацией (счетчики воды, газа).

Стоит отметить и отличные эксплуатационные характеристики STM32L0. Уровень питающих напряжений для всех представителей составляет 1,65…3,6 В, а это делает возможной работу даже если батарея питания сильно разряжена. Кроме того, диапазон рабочих температур для некоторых представителей составляет -40…125°С при сохранении сверхнизкого потребления.

Главной особенностью STM32L0 является снижение потребляемой мощности по сравнению с STM32F0. Это стало возможно благодаря целому комплексу мер.

Способы снижения потребляемой мощности. Оптимизация потребления STM32L0

Потребление цифровых КМОП-микросхем складывается из статической и динамической составляющих.

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

Динамическая составляющая определяется величиной затворной емкости транзисторов, образующих логические ячейки. Чем чаще происходит переключение логических ячеек, тем чаще приходится перезаряжать эти емкости, и тем больше динамическое потребление. В общем случае динамическая мощность для КМОП-микросхем определяется по формуле:

Pd = C×V²×f

где С – нагрузочная емкость всех переключаемых КМОП-транзисторов, V – напряжение питания, f – рабочая частота.

Рис. 3. Временная диаграмма работы от батареи питания при изменении потребления

Рис. 3. Временная диаграмма работы от батареи питания при изменении потребления

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

Суть этого метода можно пояснить на примере с использованием временной диаграммы потребления (рисунок 3). Рассмотрим некое обобщенное устройство, работающее от аккумуляторной батареи емкостью 1000 мА•ч. Если потребление прибора постоянно и составляет 1000 мА (рисунок 3, случай 1), то разряд батареи произойдет за час. Если же потребление прибора будет 500 мА – то время работы будет уже два часа (рисунок 3, случай 2). При любой форме кривой потребления площадь фигуры будет постоянна и равна 1000 мА•ч.

В случае динамического управления мощностью осуществляется сокращение потребления без потери производительности (рисунок 3, случай 3). При необходимости выполнения интенсивных вычислений контроллер переходит в высокопроизводительный режим, потребляя большую мощность (Sa и Sc). Когда интенсивных вычислений нет – происходит переход в энергосберегающий режим (Sb и Sd).

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

  • Наличие развитой системы тактирования позволяет изменять потребление за счет независимого тактирования блоков и динамического изменения рабочей частоты ядра и периферии.
  • Наличие оптимизированной системы питания. Микроконтроллеры STM32L0 снабжены интегрированным регулятором напряжения, который способен работать в различных режимах, гибко подстраиваясь под ограничения по потребляемому току.
  • Применение режимов пониженного потребления. При их использовании пользователю открывается широкий простор для оптимизации потребления для каждого конкретного приложения.
  • Снижение потребления в STM32L0 достигается архитектурными и технологическими способами.
  • Использование новейшего высокоэффективного ядра Cortex-M0+. Данное ядро имеет несколько значительных архитектурных особенностей, позволивших значительно увеличить энергоэффективность по сравнению с Cortex-M0.
  • Снижение минимального напряжения питания. Все микроконтроллеры семейства способны работать при напряжениях от 1,65 В в широком диапазоне рабочих температур.

Результатом всех предпринятых усилий стало сверхнизкое потребление. Например, при выполнении искусственных тестов при максимальной производительности величина потребляемого тока составляет менее 7 мА (таблица 2).

Таблица 2. Энергопотребление STM32L053x8 при выполнении искусственных тестов

Режим Тест Частота, МГц Ток потребления*, мкА
Range 3, VCORE = 1,2 В Dhrystone 4 555
CoreMark 585
Fibonacci 440
while(1) 355
while(1), prefetch off 353
Range 1, VCORE = 1,8 В Dhrystone 32 6,3
CoreMark 6,3
Fibonacci 6,55
while(1) 5,4
while(1), prefetch off 5,2
* – Значение тока указано при отключенной периферии.

 

Важным преимуществом STM32L0 является возможность работы в широком диапазоне температур (до 125°С) без значительного роста питающих токов (рисунок 4).

Рис. 4. Потребление STM32L053x8 при различных значениях температуры (тактирование от HSI16, периферия отключена)

Рис. 4. Потребление STM32L053x8 при различных значениях температуры (тактирование от HSI16, периферия отключена)

Микропроцессорное ядро Cortex-M0+

Процессорное ядро ARM Cortex-M0 позволяло создавать микроконтроллеры, реализующие высокую плотность кода и лучший в своем классе уровень энергопотребления. За три года, прошедших со времени анонса ARM Cortex-M0, было продано более 50 лицензий на производство процессоров с этим ядром. После такого успеха компания ARM незамедлительно открыла проект “Flycatcher”, результатом которого стало новое ядро ARM Cortex-M0+.

Разработка ARM Cortex-M0+ производилась с учетом требований ведущих производителей микроконтроллеров. Основными требованиями, как несложно догадаться, были снижение потребляемой мощности, увеличение энергоэффективности, сохранение максимальной совместимости с существующим набором инструкций и компиляторами.

Ядро создавалось с использованием удачных решений, реализованных в ARM Cortex-M0, однако есть и целый ряд значительных новшеств: сокращение ступеней конвейера, изменение интерфейса с портами ввода/вывода, введение модуля защиты памяти (Memory Unit Protection, MPU).

Сокращение длины конвейера. ARM Cortex-M0+ стал первым ARM процессором с двухуровневым конвейером. Снижение энергопотребления при испытаниях получилось более чем заметным. При выполнении тестов по методике Dhrystone статическая потребляемая мощность для Cortex-M0+ и Cortex-M0 оказалась примерно одинаковой – 0,95 мкВ и 0,96 мкВ соответственно. Однако динамическая потребляемая мощность сократилась примерно на 30% и составила 11,21 мкВ/МГц для Cortex-M0+, в то время как для Cortex-M0 она составляла 16,36 мкВ/МГц.

Приведенное потребление относится непосредственно к ядру. Для микроконтроллеров, как для системы в целом, значительная часть потребления связана с циклами записи/чтения во FLASH. Чем меньше циклов доступа к FLASH – тем меньше потребление. Таким образом, уменьшение числа обращений к FLASH и соответствующее уменьшение числа ступеней конвейера автоматически приводят к дополнительному уменьшению потребления.

Новый интерфейс взаимодействия с портами ввода/вывода. Еще одно изменение связано с появлением нового интерфейса портов ввода/вывода, интегрированного в ядро. Теперь доступ к портам осуществляется за один цикл. Взаимодействие с шиной AMBA® AHB-Lite™ и интерфейсом I/O осуществляется конкурентно. Фактически, I/O интерфейс является частью ядра и общего адресного пространства. Регистры I/O доступны с помощью стандартных С-указателей и не требуют каких-ибо языковых расширений.

С точки зрения повышения энергоэффективности, наличие I/O-интерфейса может быть полезно в двух случаях:

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

Использование модулей и решений Cortex-M3. Cortex-M0+ имеет некоторые блоки и особенности, характерные для Cortex-M3, но недоступные для Cortex-M0. Например, поддерживаются привилегированный и непривилегированный уровни исполнения, и доступен модуль защиты памяти MPU.

В дополнение ко всему, в Cortex-M0+ поддерживается изменение положения таблицы векторов прерывания, как было у Cortex-M3.

Важно отметить, что наборы инструкций у Cortex-M0 и Cortex-M0+ полностью совпадают, поэтому код, разработанный для Cortex-M0, остается совместимым с Cortex-M0+.

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

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

Различные источники тактового сигнала. В распоряжении STM32L0 есть шесть источников:

  • внешний высокочастотный кварцевый резонатор или генератор (High Speed External Clock, HSE) с частотой 4…24 МГц наиболее часто используется для получения тактового сигнала ядра (ФАПЧ до 32 МГц) и рабочей частоты USB-контроллера (48 МГц);
  • внешний низкочастотный кварцевый резонатор или генератор (Low Speed External Clock, LSE) (обычно его частота – 32,768 кГц) используется в основном для часов реального времени RTC и для тактирования интегрированного ЖК-контроллера;
  • внутренний высокоскоростной RC-генератор 16 МГц (High Speed Internal Clock, HSI16). Интегрированный генератор является альтернативой HSE, имеет меньшее значение потребления, но и меньшую точность;
  • внутренний низкочастотный RC-генератор 37 кГц (Low Speed Internal Clock, LSI). Является альтернативой LSE, имеет меньшее значение потребления и худшую точность;
  • внутренний высокоскоростной RC-генератор 48 МГц (High Speed Internal Clock, HSI48). Интегрированный генератор является альтернативой HSE для тактирования USB-контроллера и генератора случайных чисел;
  • многочастотный интегрированный RC-генератор (Multi Speed Internal Clock, MSI). Этот новый генератор имеет возможность подстройки частоты 0,064…4,2 МГц. Изменяя значение частоты, можно пропорционально менять потребление.

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

Таблица 3. Характеристики источников тактирования STM32L0

Источник Частота Потребление, мкА Точность Заводская
калибровка
Возможность калибровки пользователем
HSE 1…24 МГц в зависимости от источника
LSE 32,768 кГц 0,45 (1,8 В)…0,6 мкА (3 В)
HSI16 16 МГц 100 0,4% (тип) Есть Есть
HSI48 48 МГц 300 Соответствует требованиям USB ±1,7% ±0,1%
MSI 65,5 кГц 0,75 0,5% (тип) Есть Есть
131 кГц 1
262 кГц 1,5
524 кГц 2,5
1,05 МГц 4,5
2,1 МГц 8
4,2 МГц 15
LSI 38 кГц 0,4 (3 В) 30…50% нет нет (но есть возможность измерить)

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

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

Большая часть периферии использует системный тактовый сигнал (SYSCLK). Но некоторые блоки могут использовать независимое тактирование:

  • USB-контроллер: ФАПЧ, HSI48;
  • АЦП: тактовый сигнал шины APB (PCLK), HSI16;
  • приемопередатчики LPUART и USART: SYSCLK, HSI16, LSE, PCLK;
  • таймер LPTIMER: HSI16, LSE, LSI, PCLK;
  • блоки RTC/LCD: LSE, LSI, HSE;
  • независимый оконный сторожевой таймер IWDG: LSI.

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

Система питания STM32L0

Система питания STM32L0 использует следующие источники напряжения:

  • напряжение VDD может лежать в диапазоне 1,65…3,6 В. Используется для питания портов ввода/вывода и внутреннего регулятора напряжения;
  • внутренний регулятор обеспечивает формирование напряжения VCORE для питания ядра, цифровой периферии, ОЗУ, FLASH. Значение VCORE может меняться программно в диапазоне 1,2…1,8 В.;
  • VDDA – индивидуальное питание для АЦП. Может находиться в диапазоне 1,65…3,6 В, однако минимальное напряжение для активного функционирования АЦП должно быть не менее 1,8 В;
  • источник опорного напряжения для АЦП VREF. Доступен только в корпусах TFBGA64, в остальных случаях в качестве опорного используется VDDA;
  • VLCD – источник питания ЖК-контроллера, диапазон напряжений для него составляет 2,5…3,6 В;
  • VDD_USB – источник питания USB-контроллера, диапазон напряжений для него равен 3,0…3,6 В.
Рис. 5. Динамическое изменение потребления

Рис. 5. Динамическое изменение потребления

Наиболее интересной с точки зрения минимизации потребления является возможность динамического управления напряжением VCORE. Как было отмечено выше, напряжение питания цифровой микросхемы значительно влияет на потребление и производительность. Повышение напряжения VCORE (overvolting) позволяет увеличить производительность, но проиграть в потреблении. Снижение напряжения VCORE (undervolting) дает противоположный результат. Меняя значение VCORE, можно управлять потреблением. Система питания STM32L0 имеет возможность работы в трех диапазонах, отличающихся максимальной рабочей частотой и значением напряжения питания ядра (рисунок 5).

Range 1 – высокопроизводительный режим. Напряжение VCORE составляет 1,8 В, входное напряжение VDD не должно быть ниже 1,71 В. Максимальная рабочая частота составляет 32 МГц.

Range 2 – режим с компромиссным соотношением производительности и потребления. Напряжение VCORE составляет 1,5 В, при этом на входное напряжение VDD ограничений не накладывается (1,65…3,6 В). Максимальная рабочая частота составляет 16 МГц.

Range 3 – режим с минимальным потреблением. Напряжение VCORE составляет 1,2 В. Максимальная рабочая частота – 4 МГц.

Анализ уровней потребления в каждом режиме (таблица 4) показывает, что во время работы в Range 3 при минимальной частоте потребление составляет всего 165 мкА, во время работы в Range 1 при частоте 32 МГц потребление составит уже 6,3 мА. Таким образом, за счет динамического изменения режимов работы можно достичь существенной экономии потребления.

Таблица 4. Потребление микроконтроллера в различных режимах работы

Тактирование Режим Частота ядра, МГц Iпотр*, мА
HSE Range 3, VCORE = 1,2 В 1 0,165
2 0,29
4 0,555
Range 2, VCORE = 1,5 В 4 0,665
8 1,3
16 2,6
Range 1, VCORE = 1,8 В 8 1,55
16 3,1
32 6,3
MSI Range 3, VCORE = 1,2 В 0,065 0,0365
0,524 0,0995
4,2 0,62
HSI16 Range 2, VCORE = 1,5 В 16 2,6
Range 1, VCORE = 1,8 В 32 6,25
* – Значение тока указано при отключенной периферии

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

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

Семейство STM32L0 имеет в своем распоряжении основной режим RUN и пять режимов пониженного потребления (таблица 5).

Таблица 5. Режимы пониженного потребления STM32L0

Режим Потребление Процессор FLASH/EEPROM ОЗУ Источник тактирования RTC LPTIM, LPUART ADC
Sleep 41 мкА/МГц (Range 1) Выкл Выкл Вкл Любой Доступен Доступен Доступен
36 мкА/МГц (Range 2)
35 мкА/МГц (Range 3)
Low power run 8,55 мкА (Flash откл, 32 кГц) Вкл Выкл или вкл Вкл MSI Доступен Доступен Выкл
Low power sleep 4,65 мкА (периферия откл.) Выкл Выкл Вкл MSI Доступен Доступен Выкл
Stop with RTC 0,82 мкА (1,8 В) Выкл Выкл Вкл LSE Вкл Доступен Выкл
1,0 мкА (3 В)
Stop 415 нА Выкл Выкл Вкл Выкл Доступен Выкл
Standby with RTC 655 нА (3 В) Выкл Выкл Выкл LSE Вкл Выкл Выкл
845 нА (1,8 В)
Standby 290 нА Выкл Выкл Выкл Выкл Выкл Выкл

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

Режим Low power run. Регулятор напряжения переводится в режим пониженного потребления (RANGE 2 или RANGE 3), рабочая частота и перечень доступной периферии ограничен.

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

Режим Low power sleep. Ядро Cortex-M0+ остановлено. Регулятор напряжения переводится в режим пониженного потребления (RANGE 2 или RANGE 3), рабочая частота и перечень доступной периферии ограничен. FLASH-память отключена.

Режим Stop. Все источники тактирования могут быть отключены. Регулятор находится в режиме пониженного потребления. Возможна работа RTC, в этом случае активируются LSE или LSI. Блоки, имеющие независимое тактирование, могут продолжать функционировать по желанию пользователя.

Режим Standby. Блоки, питающиеся от VCORE, отключены. Потребление минимальное. Возможна работа RTC. В этом случае активируются LSE или LSI.

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

Перечисленные режимы потребления были знакомы еще по STM32L1. Главным отличием является возможность работы части периферийных блоков даже в режиме STOP за счет независимого от шины APB-(PCLK-)тактирования. К независимой периферии относятся следующие позиции:

  • пара малопотребляющих компараторов, которые могут контролировать аналоговые напряжения и «будить» контроллер при достижении напряжением заданного уровня;
  • часы реального времени – единственный периферийный блок, который может функционировать даже в режиме Standby и периодически «будить» контроллер;
  • ЖК-контроллер, имеющий независимое тактирование и потребляющий до 5 мкА;
  • малопотребляющий таймер (LPTIM) – 16-битный таймер, имеющий возможность индивидуального тактирования от LSI, LSE, HSI. Даже когда ни один из источников тактирования не работает, таймер может работать как счетчик импульсов;
  • малопотребляющий асинхронный приемопередатчик (LPUART), который в режимах пониженного потребления работает только от LSE 32,768 кГц, поддерживая скорости обмена до 9600 байт/с. Более того, даже в режиме Stop LPUART может принимать входящие сообщения;
  • интерфейс I2C, способный работать и «будить» контроллер даже в режиме Stop, но для этого необходимо включение HSI16. В режиме Stop HSI16 отключен. При получении стоп-бита I2C-контроллер включает HSI16. Если при приеме кадр был отброшен, например, при несовпадении адреса, генератор вновь выключается;
  • USART также способен производить пробуждение контроллера из режима Stop по трем прерываниям – при совпадении адреса, при обнаружении старт-бита или при пробуждении по RXNE. Для работы нужно активное состояние HSI16 или LSE.

Рассмотрим более подробно новую периферию микроконтроллеров семейства STM32L0.

АЦП микроконтроллеров STM32L0

В микроконтроллерах STM32L0 реализован 12-битный многоканальный АЦП последовательного приближения с частотой выборок до 1,14 MSPS. Максимальное число каналов для АЦП – 19 (STM32L0x3), при этом 16 каналов работают с внешними напряжениями, а три канала отведены для измерения показаний интегрированного датчика температуры (VSENSE), измерения напряжения интегрированного ИОН (VREFINT) и мониторинга напряжения питания ЖК-контроллера. АЦП обладает возможностью внутренней калибровки пользователем.

Уровень потребления АЦП является вполне умеренным – даже при максимальной частоте выборки суммарное потребление не превышает 300 мкА (таблица 6).

Таблица 6. Потребление АЦП при различных частотах измерения

Источник Частота измерений Ток потребления, мкА
VDDA и VREF 1,14 Msps 200
10 ksps 40
VDD 1,14 Msps 70
10 ksps 1

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

Независимое тактирование. Благодаря асинхронному тактированию частота выборок АЦП не зависит от частоты основной периферийной шины APB (сигнал PCLK), если в качестве тактового сигнала выбран HSI16. В итоге частота PCLK может быть снижена для сокращения потребления, без уменьшения частоты измерений.

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

Результат передискретизации и округления определяется по следующей формуле:

42003

где N – число отсчетов (2…256); M – коэффициент сдвига, максимальный сдвиг – 8 бит; tn – текущий отсчет.

Энергосберегающие алгоритмы работы Wait или Auto Off. Режим Wait помогает защитить данные от перезаписи и согласовать быстродействующий АЦП и периферийную шину APB в случае ее работы при низких частотах PCLK. До тех пор, пока предыдущие данные измерений не были вычитаны из регистров АЦП, новое преобразование не стартует.

Находясь в режиме Auto-off, АЦП периодически включается, проводит измерения и отключается вновь. В итоге потребление АЦП значительно сокращается.

Новая Low Power-периферия: LPTIM и LPUART

В семействе STM32L0 реализована малопотребляющая Low Power-периферия: таймер LPTIM и приемопередатчик LPUART. Они отличаются меньшим уровнем потребления по сравнению с аналогами и имеют возможность независимого от основной периферийной шины APB тактирования. Low Power-периферия может работать c максимальной производительностью даже при сниженной частоте шины APB. В результате общее потребление снижается при сохранении производительности LPTIM и LPUART.

LPTIM – многофункциональный 16-битный таймер с функциональностью, аналогичной таймерам TIM1, знакомым нам по другим семейств STM32. LPTIM работает в режимах пониженного потребления, в том числе – в режиме Stop. Более того, даже при полностью остановленных источниках тактирования таймер способен функционировать как счетчик импульсов. Способность таймера пробуждать контроллер из режимов пониженного потребления – весьма полезная особенность именно для устройств с жесткими ограничениями по потреблению.

LPUART даже при тактировании от 32,768 кГц LSE способен вести обмен данными на скоростях до 9600 байт/с. Более высокие скорости потребуют более высокой частоты тактирования. С точки зрения функциональности LPUART не уступает обычным блокам USART семейств STM32.

Сравнивая потребление LPTIM и TIM2, LPUART и USART, можно отметить преимущество Low Power-модулей (таблица 7). Типовое потребление LPTIM составляет 10/8,5/6,5/8 мкА/МГц при работе в режимах Run Range 1/Run Range 2/Run Range 3/Low power Run, соответственно. Аналогичные показатели для LPUART составляют 8/6,5/5,5/6 мкА/МГц.

Таблица 7. Потребление периферийных Low Power-блоков

Блок Потребление при VDD = 3,0 В, T = 25°С Единица
измерения
Range 1, VCORE = 1,8 В Range 2, VCORE = 1,5 В Range 3, VCORE = 1,2 В Low-power
sleep/run
DAC1 4 3,5 3 2,5 мкА/МГц
LPUART1 8 6,5 5,5 6
USART2 14,5 12 9,5 11
LPTIM1 10 8,5 6,5 8
TIM2 10,5 8,5 7 9

 

USB

Контроллер USB отсутствовал на микроконтроллерах STM32F0. Его наличие существенно расширяет область применения семейства STM32L0, поэтому о нем стоит сказать отдельно.

USB-контроллер обеспечивает взаимодействие между USB 2.0 FS-шиной и периферийной шиной APB, как это было и в старших семействах STM32. Но есть несколько важных особенностей.

Наличие встроенного генератора HSI48 и подтягивающих резисторов. Реализация USB возможна без использования внешнего кварцевого резонатора благодаря интегрированному RC-генератору HSI48. При этом USB-контроллер работает на частоте 48 МГц, в то время как максимальная частота ядра составляет 32 МГц.

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

Наличие блока обнаружения зарядных устройств (Battery charging detector, BCD). Данный BCD отвечает требованиям Battery Charging Specification Revision 1.2. Он способен обнаруживать не только подключение к стандартным USB-портам (Standard downstream port, SDP), но и к зарядным портам CDP (Charging downstream port) и DCP (Dedicated charging port).

Порты SDP, CDP и DCP существенно отличаются нагрузочной способностью.

Стандартный SDP-порт обеспечивает подключаемое устройство питающими токами 2,5 мА в режиме suspend, до 100 мА – в рабочем режиме по умолчанию и до 500 мА – при дополнительной конфигурации порта. Этот тип порта может быть распознан по подтяжке линий D+ и D- к земле резисторами 15 кОм.

Зарядный порт CDP может обеспечить ток потребления подключаемого устройства не более 1,5 А до обнаружения USB-устройства. Распознавание порта происходит по особому алгоритму распознавания при обмене сигналами по линиям D+ и D- еще до определения устройства.

Порт DCP выполняет исключительно функцию зарядки, цифровой обмен с таким портом не производится. DCP определяется по короткому замыканию линий D + и D-. Максимальный ток, предоставляемый портом, составляет 1,5 А.

Наличие блока Link Power Management (LPM). USB-устройство может находиться в четырех состояниях L0 (On), L1 (Sleep), L2 (Suspend), L3 (Off). LPM позволяет хосту согласовывать свое состояние с хабом для оптимизации потребления.

Таким образом, USB-контроллер, реализованный в STM32L0, делает возможным создание современных USB-устройств при минимальном использовании внешних элементов.

Сниппеты и STM32Cube

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

Программная поддержка STM32L0 со стороны компании-производителя обеспечивается с помощью бесплатных библиотеки сниппетов и программного комплекса STM32Cube.

STM32Cube включает в себя привычную библиотеку аппаратных драйверов и примеры реализации устройств с использованием отладочных наборов STM32L053C8-Discovery и STM32L053R8-Nucleo.

Библиотека сниппетов stm32snippetsl0 представляет собой примеры с использованием прямого доступа к регистрам периферии STM32L0. Готовые функции могут быть применены в пользовательском коде. Зачастую они более эффективны, чем примеры из стандартной библиотеки.

Заключение

Семейство STM32L0 расширило портфолио малопотребляющих микроконтроллеров производства компании STMicroelectronics.

STM32L0 сочетает проверенные решения, использовавшиеся в семействах STM32L1 и STM32F0, а также новые разработки. Среди главных нововведений можно отметить высокоэффективное ядро Cortex-M0+, оптимизированные системы питания и тактирования, новую малопотребляющую периферию (LPTIM и LPUART). Все это позволило добиться уникальных показателей потребления.

Появление USB-контроллера с поддержкой BCD 1.2 и с блоком LPM значительно расширяет функционал и области применения STM32L0.

 

Литература

  1. RM0367. Reference manual Ultra-low-power STM32L0x3 advanced ARM®-based 32-bit MCUs. Rev.2. STMicroelectronics, 2014
  2. RM0376. Reference manual Ultra-low-power STM32L0x2 advanced ARM®-based 32-bit MCUs. Rev.1. STMicroelectronics, 2014
  3. RM0377. Reference manual Ultra-low-power STM32L0x1 advanced ARM®-based 32-bit MCUs. Rev.1. STMicroelectronics, 2014
  4. AN4445. Application note STM32L0xx ultra-low power features overview. Rev.1. STMicroelectronics, 2014
  5. AN4467. Application note Getting started with STM32L0xx hardware development. Rev.1. STMicroelectronics, 2014
  6. Introducing the Cortex-M0+ processor The Ultimate in Low Power – ARM
  7. Battery Charging Specification Revision. Revision 1.2. – USB Implementers forum, 2010
  8. http://www.st.com/

Получение технической информации, заказ образцов, заказ и доставка.

ST_LDO_NE_11_14_opt

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

О компании ST Microelectronics

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