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

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 LineCortex-M4, до 64 МГц320 КБ – 1 МБ48 КБ – 128 КБUFQFPN48AES, RNG, LPTIM, TSC
STM32WBx5Cortex-M4, до 64 МГц256 КБ – 1 МБ48 КБ – 256 КБUFBGA129, UFQFPN48, VFQFPN68, WLCSP49, WLCSP100USB, QUADSPI, COMP, SAI, AES, RNG, LPTIM, LPUART, TSC

Что отличает микроконтроллеры внутри этих линеек, по даташитам:

МикроконтроллерРадиоФлеш-память / ОЗУИнтерфейсы и особенности
STM32WB55Bluetooth LE 5.4 и IEEE 802.15.4-2011до 1 МБ / до 256 КБUSB, контроллер ЖК-индикатора 8×40, Quad-SPI, SAI, два I²C и два SPI (в UFQFPN48 по данным ST — один SPI)
STM32WB35Bluetooth LE 5.4 и IEEE 802.15.4-2011до 512 КБ / 96 КБUSB, Quad-SPI, SAI, два I²C и один SPI
STM32WB15только Bluetooth LE 5.4320 КБ / 48 КБпо одному USART, LPUART, I²C и SPI
STM32WB50, WB30 (Value Line)Bluetooth LE 5.4 или IEEE 802.15.41 МБ / 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 1Range 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):

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

Если первое слово флеш-памяти не запрограммировано, а выбран старт из неё, микроконтроллер запускает загрузчик (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 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32WB10CCUFQFPN48320 КБ48 КБ30
STM32WB30CEUFQFPN48512 КБ96 КБ30
STM32WB50CGUFQFPN481 МБ128 КБ30

STM32WBx5 — Cortex-M4, до 64 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32WB15CCUxUFQFPN48320 КБ48 КБ30
STM32WB15CCUxEUFQFPN48320 КБ48 КБ36
STM32WB15CCWLCSP49320 КБ48 КБ26
STM32WB35CC, STM32WB35CEUFQFPN48256 КБ / 512 КБ96 КБ30
STM32WB55CCUFQFPN48256 КБ128 КБ30
STM32WB55CEUFQFPN48512 КБ256 КБ30
STM32WB55CGUFQFPN481 МБ256 КБ30
STM32WB55RCVFQFPN68256 КБ128 КБ49
STM32WB55REVFQFPN68512 КБ256 КБ49
STM32WB55RGVFQFPN681 МБ256 КБ49
STM32WB55VCUFBGA129256 КБ128 КБ72
STM32WB55VCWLCSP100256 КБ128 КБ72
STM32WB55VEUFBGA129512 КБ256 КБ72
STM32WB55VEWLCSP100512 КБ256 КБ72
STM32WB55VGUFBGA1291 МБ256 КБ72
STM32WB55VGWLCSP1001 МБ256 КБ72
STM32WB55VYWLCSP100640 КБ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 КБ.