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 МГц.
| Линейка | Ядро, частота | Флеш-память | ОЗУ | Корпуса | Чем выделяется |
|---|---|---|---|---|---|
| STM32U031 | Cortex-M0+ | 16 КБ – 64 КБ | 12 КБ | LQFP48, LQFP64, TSSOP20, UFBGA64, UFQFPN32, UFQFPN48, WLCSP27 | DAC, COMP, RNG, LPTIM, LPUART, TSC |
| STM32U073 | Cortex-M0+, до 56 МГц | 64 КБ – 256 КБ | 40 КБ | LQFP48, LQFP64, LQFP80, UFBGA64, UFBGA81, UFQFPN32, UFQFPN48, WLCSP42 | USB, DAC, COMP, RNG, LPTIM, LPUART, TSC |
| STM32U083 | Cortex-M0+, до 56 МГц | 256 КБ | 40 КБ | LQFP48, LQFP64, LQFP80, UFBGA64, UFBGA81, UFQFPN32, UFQFPN48, WLCSP42 | USB, DAC, COMP, AES, RNG, LPTIM, LPUART, TSC |
В семействе три линейки. Ядро и устройство флеш-памяти у них общие, а различаются они периферией и объёмом ОЗУ (RM0503, табл. 1 и 5):
| Блок | STM32U031 | STM32U073 | STM32U083 |
|---|---|---|---|
| ОЗУ: SRAM1 + SRAM2 | 8 + 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 2 | 825 нА с RTC, 695 нА без RTC |
| Standby | 160 нА с RTC, 30 нА без RTC |
| Shutdown | 16 нА |
| VBAT | 130 нА с RTC и девятью резервными регистрами |
Сколько устройство проработает от батареи при таких токах, считает калькулятор времени работы от батареи.
Тактирование и такты ожидания
Внутренний генератор MSI настраивается в диапазоне от 100 кГц до 48 МГц и подстраивается по часовому кварцу LSE; кроме него есть HSI16 на 16 МГц, кварцевый HSE от 4 до 48 МГц и PLL (DS14548, с. 1–2). Кэш команд на 1 КБ позволяет исполнять код из флеш-памяти без пауз. Число тактов ожидания флеш-памяти задаёт поле LATENCY регистра FLASH_ACR (RM0503, табл. 9):
| Тактов ожидания | Range 1 | Range 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):
| BOOT0 | nBOOT1 | Откуда старт |
|---|---|---|
| 0 | любой | флеш-память |
| 1 | 1 | системная память — встроенный загрузчик |
| 1 | 0 | SRAM |
С завода 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+
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32U031C6 | LQFP48 | 32 КБ | 12 КБ | 39 |
| STM32U031C6 | UFQFPN48 | 32 КБ | 12 КБ | 39 |
| STM32U031C8 | LQFP48 | 64 КБ | 12 КБ | 39 |
| STM32U031C8 | UFQFPN48 | 64 КБ | 12 КБ | 39 |
| STM32U031F4 | TSSOP20 | 16 КБ | 12 КБ | 27 |
| STM32U031F6 | TSSOP20 | 32 КБ | 12 КБ | 27 |
| STM32U031F8 | TSSOP20 | 64 КБ | 12 КБ | 27 |
| STM32U031G6 | WLCSP27 | 32 КБ | 12 КБ | 24 |
| STM32U031G8 | WLCSP27 | 64 КБ | 12 КБ | 24 |
| STM32U031K4 | UFQFPN32 | 16 КБ | 12 КБ | 27 |
| STM32U031K6 | UFQFPN32 | 32 КБ | 12 КБ | 27 |
| STM32U031K8 | UFQFPN32 | 64 КБ | 12 КБ | 27 |
| STM32U031R6 | UFBGA64 | 32 КБ | 12 КБ | 53 |
| STM32U031R6 | LQFP64 | 32 КБ | 12 КБ | 53 |
| STM32U031R8 | UFBGA64 | 64 КБ | 12 КБ | 53 |
| STM32U031R8 | LQFP64 | 64 КБ | 12 КБ | 53 |
STM32U073 — Cortex-M0+
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32U073C8 | LQFP48 | 64 КБ | 40 КБ | 39 |
| STM32U073C8 | UFQFPN48 | 64 КБ | 40 КБ | 39 |
| STM32U073CB | LQFP48 | 128 КБ | 40 КБ | 39 |
| STM32U073CB | UFQFPN48 | 128 КБ | 40 КБ | 39 |
| STM32U073CC | LQFP48 | 256 КБ | 40 КБ | 39 |
| STM32U073CC | UFQFPN48 | 256 КБ | 40 КБ | 39 |
| STM32U073H8 | WLCSP42 | 64 КБ | 40 КБ | 33 |
| STM32U073HB | WLCSP42 | 128 КБ | 40 КБ | 33 |
| STM32U073HC | WLCSP42 | 256 КБ | 40 КБ | 33 |
| STM32U073K8 | UFQFPN32 | 64 КБ | 40 КБ | 27 |
| STM32U073KB | UFQFPN32 | 128 КБ | 40 КБ | 27 |
| STM32U073KC | UFQFPN32 | 256 КБ | 40 КБ | 27 |
| STM32U073M8 | UFBGA81 | 64 КБ | 40 КБ | 69 |
| STM32U073M8 | LQFP80 | 64 КБ | 40 КБ | 68 |
| STM32U073MB | UFBGA81 | 128 КБ | 40 КБ | 69 |
| STM32U073MB | LQFP80 | 128 КБ | 40 КБ | 68 |
| STM32U073MC | UFBGA81 | 256 КБ | 40 КБ | 69 |
| STM32U073MC | LQFP80 | 256 КБ | 40 КБ | 68 |
| STM32U073R8 | UFBGA64 | 64 КБ | 40 КБ | 53 |
| STM32U073R8 | LQFP64 | 64 КБ | 40 КБ | 53 |
| STM32U073RB | UFBGA64 | 128 КБ | 40 КБ | 53 |
| STM32U073RB | LQFP64 | 128 КБ | 40 КБ | 53 |
| STM32U073RC | UFBGA64 | 256 КБ | 40 КБ | 53 |
| STM32U073RC | LQFP64 | 256 КБ | 40 КБ | 53 |
STM32U083 — Cortex-M0+
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32U083CC | LQFP48 | 256 КБ | 40 КБ | 39 |
| STM32U083CC | UFQFPN48 | 256 КБ | 40 КБ | 39 |
| STM32U083HC | WLCSP42 | 256 КБ | 40 КБ | 33 |
| STM32U083KC | UFQFPN32 | 256 КБ | 40 КБ | 27 |
| STM32U083MC | UFBGA81 | 256 КБ | 40 КБ | 69 |
| STM32U083MC | LQFP80 | 256 КБ | 40 КБ | 68 |
| STM32U083RC | UFBGA64 | 256 КБ | 40 КБ | 53 |
| STM32U083RC | LQFP64 | 256 КБ | 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).
Смотрите также
- STM32Распиновки по корпусам, альтернативные функции, похожие по выводам МК
- STM32L0Cortex-M0+, до 32 МГц, малое потребление: L010, L0x1, L0x2 с USB, L0x3 с ЖКИ — линейки и распиновки
- STM32G0Cortex-M0+, до 64 МГц: G030–G0B0 Value line, G031–G0C1 — линейки и распиновки
- STM32U5Cortex-M33 до 160 МГц с TrustZone и SMPS: от U535 до U5G9 — память, питание, загрузка и распиновки
- Время работы от батареимА·ч, средний ток, сон МК, Вт·ч
- Таймер AVR и STM32Предделитель, OCRnA, PSC и ARR под частоту, мёртвое время, энкодер
- Скорость UARTUBRR, BRR, TH1 и ошибка скорости
- Такт ожиданияЛишние такты при обращении к медленной памяти: частоты, настройка, кэш