Перейти к содержанию

STM32U0: малопотребляющие микроконтроллеры на Cortex-M0+

STM32U0 — младшее малопотребляющее семейство серии STM32U: ядро Cortex-M0+ на частоте до 56 МГц, питание от 1,71 В и токи в режимах сна в сотни наноампер. Здесь — отличия линеек STM32U031, U073 и U083 по reference manual RM0503, тактирование, загрузка и страницы с распиновкой каждого микроконтроллера в каждом корпусе.

STM32U0 — семейство малопотребляющих микроконтроллеров STMicroelectronics на ядре Arm Cortex-M0+ с частотой до 56 МГц (DS14548, разд. 2). Ядро у него проще, чем Cortex-M33 у STM32U5, а в режимах Standby и Shutdown кристалл потребляет от десятков до сотен наноампер. Рядом с ним по классу стоят STM32L0 и STM32G0. В разделе 48 страниц для 48 исполнений в 10 корпусах, 3 линейки: у каждого сочетания микроконтроллера и корпуса — своя страница со схемой выводов и номерами альтернативных функций.

Линейки STM32U0

Значения в таблице собраны из записей базы ST: частота — максимальная для линейки, память — от наименьшего до наибольшего исполнения. У записей STM32U031 частота в базе не указана, поэтому в этой строке её нет; у STM32U073 по даташиту DS14548 ядро работает на частоте до 56 МГц.

ЛинейкаЯдро, частотаФлеш-памятьОЗУКорпусаЧем выделяется
STM32U031Cortex-M0+16 КБ – 64 КБ12 КБLQFP48, LQFP64, TSSOP20, UFBGA64, UFQFPN32, UFQFPN48, WLCSP27DAC, COMP, RNG, LPTIM, LPUART, TSC
STM32U073Cortex-M0+, до 56 МГц64 КБ – 256 КБ40 КБLQFP48, LQFP64, LQFP80, UFBGA64, UFBGA81, UFQFPN32, UFQFPN48, WLCSP42USB, DAC, COMP, RNG, LPTIM, LPUART, TSC
STM32U083Cortex-M0+, до 56 МГц256 КБ40 КБLQFP48, LQFP64, LQFP80, UFBGA64, UFBGA81, UFQFPN32, UFQFPN48, WLCSP42USB, DAC, COMP, AES, RNG, LPTIM, LPUART, TSC

В семействе три линейки. Ядро и устройство флеш-памяти у них общие, а различаются они периферией и объёмом ОЗУ (RM0503, табл. 1 и 5):

БлокSTM32U031STM32U073STM32U083
ОЗУ: SRAM1 + SRAM28 + 4 КБ32 + 8 КБ32 + 8 КБ
USB-устройство Full Speed, генератор HSI48 с подстройкой CRS—естьесть
Контроллер ЖК-индикатора—естьесть
LPTIM3, LPUART3, COMP2, SPI3, I²C4—естьесть
Шифратор AES——есть

Контроллер индикатора у STM32U073 и U083 управляет матрицей 8×48 или 4×52 сегмента и имеет встроенный повышающий преобразователь, а USB работает без внешнего кварца (DS14548, с. 1 и разд. 2). SRAM поддерживает аппаратный контроль чётности.

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

STM32U0 питается от 1,71 до 3,6 В, а ядро получает напряжение от встроенного линейного стабилизатора LDO (DS14548, разд. 2). Напряжение ядра выбирается битом VOS в регистре PWR_CR1 (RM0503, 4.1.5):

  • Range 1 — около 1,2 В, частота до 56 МГц;
  • Range 2 — около 1,0 В, частота до 16 МГц от генератора MSI или до 18 МГц от PLL и кварцевого HSE.

Кроме Sleep есть режимы Low-power run и Low-power sleep (частота ядра не выше 2 МГц), Stop 0, Stop 1, Stop 2 с сохранением ОЗУ и регистров, Standby и самый глубокий Shutdown (DS14548, разд. 3.6). Типовые токи STM32U073 по первой странице даташита DS14548:

РежимТиповой ток
Run (стабилизатор LDO)52 мкА/МГц
Stop 2825 нА с RTC, 695 нА без RTC
Standby160 нА с RTC, 30 нА без RTC
Shutdown16 нА
VBAT130 нА с RTC и девятью резервными регистрами

Сколько устройство проработает от батареи при таких токах, считает калькулятор времени работы от батареи.

Тактирование и такты ожидания

Внутренний генератор MSI настраивается в диапазоне от 100 кГц до 48 МГц и подстраивается по часовому кварцу LSE; кроме него есть HSI16 на 16 МГц, кварцевый HSE от 4 до 48 МГц и PLL (DS14548, с. 1–2). Кэш команд на 1 КБ позволяет исполнять код из флеш-памяти без пауз. Число тактов ожидания флеш-памяти задаёт поле LATENCY регистра FLASH_ACR (RM0503, табл. 9):

Тактов ожиданияRange 1Range 2
0до 24 МГцдо 8 МГц
1до 48 МГцдо 16 МГц
2до 56 МГцдо 18 МГц

Делители таймеров и скорость UART от выбранных частот считают калькулятор таймера и калькулятор UART.

Выводы STM32U0: альтернативные функции и загрузка

У каждой линии порта, кроме PF3-BOOT0, мультиплексор на шестнадцать функций: номер AF0–AF15 записывают в четырёхбитные поля регистров GPIOx_AFRL и GPIOx_AFRH; на PF3 альтернативных функций нет (RM0503, 7.3). В данных ST у STM32U0 встречаются номера до AF14.

Значение BOOT0 берётся с вывода PF3-BOOT0, если бит nBOOT_SEL в байтах опций сброшен, и из бита nBOOT0 (в обратном смысле), если установлен. Вместе с битом nBOOT1 оно выбирает область старта (RM0503, табл. 6):

BOOT0nBOOT1Откуда старт
0любойфлеш-память
11системная память — встроенный загрузчик
10SRAM

С завода nBOOT_SEL = 1 и nBOOT0 = 1 (RM0503, табл. 13): вывод PF3-BOOT0 работает как обычная линия порта, а микроконтроллер стартует из флеш-памяти. Чтобы входить в загрузчик выводом, бит nBOOT_SEL сбрасывают в байтах опций, например программой STM32CubeProgrammer. Пустой кристалл попадает в загрузчик и без этого: при незапрограммированной флеш-памяти срабатывает проверка EMPTY (2.5.4). Бит BOOT_LOCK запрещает любые варианты, кроме старта из флеш-памяти.

Загрузчик работает через USART1–USART3, I²C1–I²C3, SPI1 и SPI2, а у STM32U073 и U083 — ещё и через USB в режиме DFU (AN2606, табл. 3). Выводы: USART1 — PA9 и PA10, USART2 — PA2 и PA3, USART3 — PC10 и PC11, I²C1 — PB6 и PB7, USB — PA11 и PA12 (AN2606, табл. 204 и 206).

Все STM32U0 по корпусам

STM32U031 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32U031C6LQFP4832 КБ12 КБ39
STM32U031C6UFQFPN4832 КБ12 КБ39
STM32U031C8LQFP4864 КБ12 КБ39
STM32U031C8UFQFPN4864 КБ12 КБ39
STM32U031F4TSSOP2016 КБ12 КБ27
STM32U031F6TSSOP2032 КБ12 КБ27
STM32U031F8TSSOP2064 КБ12 КБ27
STM32U031G6WLCSP2732 КБ12 КБ24
STM32U031G8WLCSP2764 КБ12 КБ24
STM32U031K4UFQFPN3216 КБ12 КБ27
STM32U031K6UFQFPN3232 КБ12 КБ27
STM32U031K8UFQFPN3264 КБ12 КБ27
STM32U031R6UFBGA6432 КБ12 КБ53
STM32U031R6LQFP6432 КБ12 КБ53
STM32U031R8UFBGA6464 КБ12 КБ53
STM32U031R8LQFP6464 КБ12 КБ53

STM32U073 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32U073C8LQFP4864 КБ40 КБ39
STM32U073C8UFQFPN4864 КБ40 КБ39
STM32U073CBLQFP48128 КБ40 КБ39
STM32U073CBUFQFPN48128 КБ40 КБ39
STM32U073CCLQFP48256 КБ40 КБ39
STM32U073CCUFQFPN48256 КБ40 КБ39
STM32U073H8WLCSP4264 КБ40 КБ33
STM32U073HBWLCSP42128 КБ40 КБ33
STM32U073HCWLCSP42256 КБ40 КБ33
STM32U073K8UFQFPN3264 КБ40 КБ27
STM32U073KBUFQFPN32128 КБ40 КБ27
STM32U073KCUFQFPN32256 КБ40 КБ27
STM32U073M8UFBGA8164 КБ40 КБ69
STM32U073M8LQFP8064 КБ40 КБ68
STM32U073MBUFBGA81128 КБ40 КБ69
STM32U073MBLQFP80128 КБ40 КБ68
STM32U073MCUFBGA81256 КБ40 КБ69
STM32U073MCLQFP80256 КБ40 КБ68
STM32U073R8UFBGA6464 КБ40 КБ53
STM32U073R8LQFP6464 КБ40 КБ53
STM32U073RBUFBGA64128 КБ40 КБ53
STM32U073RBLQFP64128 КБ40 КБ53
STM32U073RCUFBGA64256 КБ40 КБ53
STM32U073RCLQFP64256 КБ40 КБ53

STM32U083 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32U083CCLQFP48256 КБ40 КБ39
STM32U083CCUFQFPN48256 КБ40 КБ39
STM32U083HCWLCSP42256 КБ40 КБ33
STM32U083KCUFQFPN32256 КБ40 КБ27
STM32U083MCUFBGA81256 КБ40 КБ69
STM32U083MCLQFP80256 КБ40 КБ68
STM32U083RCUFBGA64256 КБ40 КБ53
STM32U083RCLQFP64256 КБ40 КБ53

Перед разводкой платы сверяйте выводы с даташитом своего исполнения: в нём указаны допустимые напряжения на выводах, токи и номиналы внешних компонентов. У маленьких корпусов часть периферии не выведена — какие сигналы есть в конкретном корпусе, видно на его странице.

Частые вопросы

Чем STM32U073 отличается от STM32U031?

Набором периферии и объёмом ОЗУ. По табл. 1 RM0503 у STM32U073 и U083 есть USB-устройство Full Speed с генератором HSI48, контроллер ЖК-индикатора, а также LPTIM3, LPUART3, второй компаратор, SPI3 и I²C4 — у STM32U031 их нет. ОЗУ у U073 и U083 — 40 КБ (SRAM1 на 32 КБ и SRAM2 на 8 КБ), у U031 — 12 КБ (табл. 5). По набору периферии STM32U083 отличается от U073 только аппаратным шифратором AES; кроме того, по данным ST U083 выпускается только с 256 КБ флеш-памяти, а U073 — с 64, 128 или 256 КБ.

Почему STM32U0 не уходит в загрузчик по выводу BOOT0?

Потому что с завода вывод не используется. Источник значения BOOT0 выбирает бит nBOOT_SEL в байтах опций: при nBOOT_SEL = 0 читается вывод PF3-BOOT0, при nBOOT_SEL = 1 — бит nBOOT0 (RM0503, табл. 6). По табл. 13 микроконтроллер поставляется с nBOOT_SEL = 1 и nBOOT0 = 1, то есть стартует из флеш-памяти при любом уровне на выводе. Чистый кристалл всё равно попадает в загрузчик: если флеш-память пуста, срабатывает проверка EMPTY (2.5.4).

Сколько тактов ожидания флеш-памяти нужно STM32U0 на 56 МГц?

Два — в диапазоне напряжения ядра Range 1. По табл. 9 RM0503 без ожидания флеш-память работает до 24 МГц, с одним тактом — до 48 МГц, с двумя — до 56 МГц. В экономичном Range 2 пределы — 8, 16 и 18 МГц.

Сколько потребляет STM32U0 в режимах сна?

По первой странице даташита DS14548 (типовые значения для STM32U073): в Stop 2 — 825 нА с работающими часами RTC и 695 нА без них, в Standby — 160 и 30 нА, в Shutdown — 16 нА; в активном режиме — 52 мкА на мегагерц. Выход из Stop занимает около 4 мкс. Точные условия измерений приведены в разделе электрических характеристик даташита.

Через какие интерфейсы работает загрузчик STM32U0?

Через USART1–USART3, I²C1–I²C3, SPI1 и SPI2, а у STM32U073 и U083 ещё и через USB в режиме DFU (AN2606, табл. 3). USART1 загрузчика — выводы PA9 (TX) и PA10 (RX), USB — PA11 и PA12 (AN2606, табл. 204 и 206).