STM32WB: двухъядерные микроконтроллеры с Bluetooth LE и 802.15.4
STM32WB — беспроводные микроконтроллеры STM32 с радио на 2,4 ГГц: приложение работает на ядре Cortex-M4 с частотой до 64 МГц, а нижние уровни стека Bluetooth Low Energy и IEEE 802.15.4 — на отдельном ядре Cortex-M0+. Здесь — отличия линеек по даташитам и reference manual RM0434, как два ядра делят кристалл, загрузка и страницы с распиновкой каждого микроконтроллера в каждом корпусе.
STM32WB — семейство беспроводных микроконтроллеров STMicroelectronics с радио на 2,4 ГГц для Bluetooth Low Energy и IEEE 802.15.4. На кристалле два ядра: Arm Cortex-M4 с блоком вычислений с плавающей точкой и частотой до 64 МГц для приложения и Cortex-M0+ для нижних уровней радиопротокола (DS11929, разд. 2). Набор режимов питания у STM32WB тот же, что у STM32L4, — от Low-power run до Stop 2, Standby и Shutdown (DS11929, раздел о режимах низкого потребления), а младшая линейка STM32WB15 работает только с Bluetooth LE. В разделе 20 страниц для 21 исполнения в 5 корпусах, 2 линейки: у каждого сочетания микроконтроллера и корпуса — своя страница со схемой выводов и номерами альтернативных функций.
Линейки STM32WB
Значения в таблице собраны из записей базы ST: частота — максимальная для линейки, память — от наименьшего до наибольшего исполнения. База ST объединяет все основные исполнения в линейку STM32WBx5, а упрощённые — в STM32WBx0 Value Line.
| Линейка | Ядро, частота | Флеш-память | ОЗУ | Корпуса | Чем выделяется |
|---|---|---|---|---|---|
| STM32WBx0 Value Line | Cortex-M4, до 64 МГц | 320 КБ – 1 МБ | 48 КБ – 128 КБ | UFQFPN48 | AES, RNG, LPTIM, TSC |
| STM32WBx5 | Cortex-M4, до 64 МГц | 256 КБ – 1 МБ | 48 КБ – 256 КБ | UFBGA129, UFQFPN48, VFQFPN68, WLCSP49, WLCSP100 | USB, QUADSPI, COMP, SAI, AES, RNG, LPTIM, LPUART, TSC |
Что отличает микроконтроллеры внутри этих линеек, по даташитам:
| Микроконтроллер | Радио | Флеш-память / ОЗУ | Интерфейсы и особенности |
|---|---|---|---|
| STM32WB55 | Bluetooth LE 5.4 и IEEE 802.15.4-2011 | до 1 МБ / до 256 КБ | USB, контроллер ЖК-индикатора 8×40, Quad-SPI, SAI, два I²C и два SPI (в UFQFPN48 по данным ST — один SPI) |
| STM32WB35 | Bluetooth LE 5.4 и IEEE 802.15.4-2011 | до 512 КБ / 96 КБ | USB, Quad-SPI, SAI, два I²C и один SPI |
| STM32WB15 | только Bluetooth LE 5.4 | 320 КБ / 48 КБ | по одному USART, LPUART, I²C и SPI |
| STM32WB50, WB30 (Value Line) | Bluetooth LE 5.4 или IEEE 802.15.4 | 1 МБ / 128 КБ и 512 КБ / 96 КБ | по одному USART, I²C и SPI; питание от 2,0 В |
Источники строк: DS11929 (разд. 2) для WB55 и WB35, DS13258 (разд. 2) для WB15, DS13047 (разд. 2) для WB50 и WB30. У STM32WB10 по данным ST те же 320 КБ флеш-памяти и 48 КБ ОЗУ, что у WB15.
Два ядра: CPU1 и CPU2
Приложение пишут для CPU1 — Cortex-M4, у которого шина и ядро работают на частоте до 64 МГц. CPU2 — Cortex-M0+ внутри радиоподсистемы, его шина HCLK2 ограничена 32 МГц (RM0434, 6.2). CPU2 исполняет нижние уровни Bluetooth LE и 802.15.4, а CPU1 общается с ним через контроллер межпроцессорного обмена IPCC с шестью двунаправленными каналами; общие ресурсы делят аппаратные семафоры HSEM (DS11929, разд. 2). Оба ядра пользуются одной флеш-памятью, блоками SRAM1, SRAM2a и SRAM2b, генератором случайных чисел, шифратором AES1, ускорителем PKA, а также блоками тактирования и питания (DS11929, 3.1).
После сброса работает только CPU1: CPU2 стартует, когда программа CPU1 установит бит C2BOOT в регистре PWR_CR4, и читает вектор сброса из байтов опций C2OPT и SBRV (RM0434, 2.4). Стек радиопротокола хранится в защищённой области во флеш-памяти. Её начало задаёт поле SFSA регистра FLASH_SFR с шагом в страницу 4 КБ, а запись в эту область со стороны CPU1 игнорируется и вызывает ошибку шины (RM0434, 3.3.8 и 3.10.18). Устанавливают и обновляют стек через защищённую установку прошивки SFI, в том числе по радио (DS11929, с. 2).
Радиоблок поддерживает Bluetooth LE 5.4 на скорости до 2 Мбит/с и IEEE 802.15.4-2011 (RM0434, 4.2) и выдаёт до +6 дБм; при питании от встроенного понижающего преобразователя SMPS передатчик на этой мощности потребляет 7,8 мА (DS11929, с. 23). Радио тактируется от кварца HSE на 32 МГц (DS11929, схема подключения радиочасти в разд. 3).
Тактирование и такты ожидания
Флеш-память тактируется от шины HCLK4, и число тактов ожидания зависит от её частоты и диапазона напряжения ядра (RM0434, табл. 4):
| Тактов ожидания | Range 1 | Range 2 |
|---|---|---|
| 0 | до 18 МГц | до 6 МГц |
| 1 | до 36 МГц | до 12 МГц |
| 2 | до 54 МГц | до 16 МГц |
| 3 | до 64 МГц | — |
Скорость USART и LPUART от выбранных частот считает калькулятор UART.
Выводы STM32WB: альтернативные функции и загрузка
У каждой линии порта мультиплексор на шестнадцать функций: номер AF0–AF15 записывают в четырёхбитные поля регистров GPIOx_AFRL и GPIOx_AFRH (RM0434, раздел GPIO). В данных ST у STM32WB встречаются номера до AF14. Радиовыход RF1 и выводы питания радиочасти альтернативных функций не имеют.
Значение BOOT0 берётся с вывода PH3-BOOT0 или, если бит nSWBOOT0 в байтах опций сброшен, из бита nBOOT0. Вместе с битом nBOOT1 оно выбирает область старта (RM0434, табл. 2; AN2606, табл. 2):
| BOOT0 | nBOOT1 | Откуда старт CPU1 |
|---|---|---|
| 0 | любой | флеш-память |
| 1 | 1 | системная память — встроенный загрузчик |
| 1 | 0 | SRAM1 |
Если первое слово флеш-памяти не запрограммировано, а выбран старт из неё, микроконтроллер запускает загрузчик (RM0434, табл. 2). Загрузчик занимает 28 КБ системной памяти с адреса 0x1FFF 0000. У STM32WB30, WB35, WB50 и WB55 он работает через USART1, I²C1, I²C3, SPI1, SPI2 и USB DFU, у WB10 и WB15 — через USART1, I²C1 и SPI1 (AN2606, табл. 3, 181 и 183). Выводы: USART1 — PA9 и PA10, I²C1 — PB6 и PB7, SPI1 — PA4–PA7, USB — PA11 и PA12.
Все STM32WB по корпусам
STM32WBx0 Value Line — Cortex-M4, до 64 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32WB10CC | UFQFPN48 | 320 КБ | 48 КБ | 30 |
| STM32WB30CE | UFQFPN48 | 512 КБ | 96 КБ | 30 |
| STM32WB50CG | UFQFPN48 | 1 МБ | 128 КБ | 30 |
STM32WBx5 — Cortex-M4, до 64 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32WB15CCUx | UFQFPN48 | 320 КБ | 48 КБ | 30 |
| STM32WB15CCUxE | UFQFPN48 | 320 КБ | 48 КБ | 36 |
| STM32WB15CC | WLCSP49 | 320 КБ | 48 КБ | 26 |
| STM32WB35CC, STM32WB35CE | UFQFPN48 | 256 КБ / 512 КБ | 96 КБ | 30 |
| STM32WB55CC | UFQFPN48 | 256 КБ | 128 КБ | 30 |
| STM32WB55CE | UFQFPN48 | 512 КБ | 256 КБ | 30 |
| STM32WB55CG | UFQFPN48 | 1 МБ | 256 КБ | 30 |
| STM32WB55RC | VFQFPN68 | 256 КБ | 128 КБ | 49 |
| STM32WB55RE | VFQFPN68 | 512 КБ | 256 КБ | 49 |
| STM32WB55RG | VFQFPN68 | 1 МБ | 256 КБ | 49 |
| STM32WB55VC | UFBGA129 | 256 КБ | 128 КБ | 72 |
| STM32WB55VC | WLCSP100 | 256 КБ | 128 КБ | 72 |
| STM32WB55VE | UFBGA129 | 512 КБ | 256 КБ | 72 |
| STM32WB55VE | WLCSP100 | 512 КБ | 256 КБ | 72 |
| STM32WB55VG | UFBGA129 | 1 МБ | 256 КБ | 72 |
| STM32WB55VG | WLCSP100 | 1 МБ | 256 КБ | 72 |
| STM32WB55VY | WLCSP100 | 640 КБ | 256 КБ | 72 |
Модули STM32WB1MMC и STM32WB5MMG в корпусах LGA есть в данных ST и участвуют в сравнении выводов, но отдельных страниц у них пока нет: их контактные площадки занимают всё дно модуля в несколько рядов, а схема корпуса в атласе пока умеет рисовать только корпуса с выводами по сторонам и с матрицей шариков.
Перед разводкой платы сверяйте выводы с даташитом своего исполнения: в нём указаны допустимые напряжения на выводах, токи, схема согласования антенны и номиналы внешних компонентов SMPS.
Частые вопросы
Чем STM32WB55 отличается от STM32WB35?
Памятью и частью периферии. По разд. 2 даташита DS11929 у STM32WB55 до 1 МБ флеш-памяти и до 256 КБ ОЗУ, у WB35 — до 512 и 96 КБ. Контроллер ЖК-индикатора и до 18 каналов ёмкостных кнопок (кроме корпуса UFQFPN48) есть только у WB55, SPI у него два против одного у WB35. Радио Bluetooth LE 5.4 и IEEE 802.15.4, ядра и USB у обеих линеек одинаковые.
Что делает ядро Cortex-M0+ в STM32WB?
Исполняет нижние уровни стека радиопротокола. По DS11929 (3.1) радиоподсистема состоит из приёмопередатчика 2,4 ГГц, блоков MAC Bluetooth LE и 802.15.4 и собственного ядра Cortex-M0+ (CPU2); приложение работает на Cortex-M4 (CPU1) и обменивается с CPU2 сообщениями через контроллер IPCC. После сброса CPU2 стоит, пока CPU1 не установит бит C2BOOT в регистре PWR_CR4 (RM0434, 2.4).
Почему приложению STM32WB доступна не вся флеш-память?
Потому что в ней хранится стек радиопротокола для CPU2. Его область защищена: начало задаёт поле SFSA регистра FLASH_SFR с шагом в страницу 4 КБ, а попытка CPU1 записать туда игнорируется и вызывает ошибку шины (RM0434, 3.10.18 и 3.3.8). Устанавливают стек через защищённую установку прошивки SFI (DS11929, с. 2), и сколько памяти он займёт, зависит от выбранного стека.
Через какие интерфейсы работает загрузчик STM32WB?
У STM32WB30, WB35, WB50 и WB55 — через USART1, I²C1, I²C3, SPI1, SPI2 и, у исполнений с USB, через USB в режиме DFU; у STM32WB10 и WB15 — через USART1, I²C1 и SPI1 (AN2606, табл. 3). USART1 загрузчика — выводы PA9 (TX) и PA10 (RX).
Что такое STM32WB50 и STM32WB30 Value Line?
Упрощённые исполнения в корпусе UFQFPN48. По даташиту DS13047 у них то же двухъядерное устройство, а радио описано как Bluetooth LE 5.4 или IEEE 802.15.4 — у WB55 и WB35 в DS11929 стоит «и». Из интерфейсов только по одному USART, I²C и SPI, USB и ЖК-контроллера нет; питание — от 2,0 до 3,6 В, температура — от −10 до +85 °C. У WB50 1 МБ флеш-памяти и 128 КБ ОЗУ, у WB30 — 512 и 96 КБ.
Смотрите также
- STM32Распиновки по корпусам, альтернативные функции, похожие по выводам МК
- STM32WBACortex-M33 до 100 МГц с радио 2,4 ГГц: WBA52–WBA55 и WBA62–WBA65 — радио, SMPS, загрузка и распиновки
- STM32WLCortex-M4 до 48 МГц с радио LoRa 150–960 МГц: WLE5, WLE4, WL55, WL54 — радио, ядра, загрузка и распиновки
- STM32L4Cortex-M4 до 80 МГц с режимами низкого потребления: L4x1–L4x6 — линейки, MSI, загрузка и распиновки
- IEEE 802.15.4Маломощное радио для Zigbee и Thread: скорость, диапазон, чипы
- Загрузчик (bootloader)Прошивка МК без программатора через UART или USB
- Скорость UARTUBRR, BRR, TH1 и ошибка скорости