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

STM32WB0: Bluetooth LE на Cortex-M0+ с частотой 64 МГц

STM32WB0 — однокристальные системы STM32 для Bluetooth LE: ядро Cortex-M0+ с частотой до 64 МГц, сопроцессор радиоканала и приёмопередатчик 2,4 ГГц с мощностью до +8 дБм. Здесь — чем различаются STM32WB05, WB06, WB07 и WB09 по даташитам ST, радио и питание, запуск через загрузчик в ПЗУ и страницы с распиновкой каждого микроконтроллера в каждом корпусе.

STM32WB0 — семейство беспроводных микроконтроллеров STMicroelectronics для Bluetooth LE: на одном кристалле ядро Arm Cortex-M0+ с частотой до 64 МГц, сопроцессор BlueNRG, который через DMA выполняет критичные по времени операции Bluetooth LE, и приёмопередатчик 2,4 ГГц (DS14591, DS14676 и DS14210, разд. 2). В отличие от двухъядерного STM32WB и от STM32WBA на Cortex-M33, здесь одно ядро Cortex-M0+, а в перечнях возможностей даташитов — Bluetooth LE 5.4 и собственные протоколы 2,4 ГГц через радиодрайвер ST. В разделе 10 страниц для 10 исполнений в 4 корпусах, 4 линейки: у каждого сочетания микроконтроллера и корпуса — своя страница со схемой выводов и номерами альтернативных функций.

Линейки STM32WB0

Значения в таблице собраны из записей базы ST: память — от наименьшего до наибольшего исполнения. Частота в записях не указана; по даташитам всех четырёх линеек ядро работает до 64 МГц. База группирует линейки по последней цифре: STM32WBx5, x6, x7 и x9.

ЛинейкаЯдро, частотаФлеш-памятьОЗУКорпусаЧем выделяется
STM32WBx5Cortex-M0+192 КБ24 КБVFQFPN32, WLCSP36I²S, RNG, LPUART
STM32WBx6Cortex-M0+256 КБ32 КБVFQFPN32, VFQFPN48, WLCSP49I²S, RNG, LPUART
STM32WBx7Cortex-M0+256 КБ64 КБVFQFPN32, VFQFPN48, WLCSP49I²S, RNG, LPUART
STM32WBx9Cortex-M0+512 КБ64 КБVFQFPN32, WLCSP36I²S, RNG, LPUART

Даташитов у семейства три: DS14591 на STM32WB05, DS14676 на WB06 и WB07, DS14210 на WB09. Линейки различаются памятью, интерфейсами и набором функций Bluetooth LE:

ЛинейкаФлеш-памятьОЗУКорпусаОсобенности по даташиту
STM32WB05192 КБ24 КБ и 4 КБ для PKAVFQFPN32, WLCSP36пеленгация (Direction finding), внешние PA и LNA; один SPI с I²S, один I²C
STM32WB06256 КБ32 КБ (SRAM0, SRAM1)VFQFPN32, VFQFPN48, WLCSP49внешний PA; три SPI, два из них с I²S, два I²C, интерфейс цифрового микрофона PDM
STM32WB07256 КБ64 КБ (SRAM0–SRAM3)VFQFPN32, VFQFPN48, WLCSP49то же, что у WB06
STM32WB09512 КБ64 КБ и 4 КБ для PKAVFQFPN32, WLCSP36пеленгация, внешние PA и LNA; один SPI с I²S, один I²C

Источники строк: DS14591 (с. 1–2), DS14676 (с. 1–2 и табл. 1), DS14210 (с. 1–2). Пеленгация и поддержка внешнего малошумящего усилителя LNA названы в перечнях возможностей WB05 и WB09, а в перечне на первой странице DS14676 для WB06 и WB07 их нет. У всех линеек есть аппаратный шифратор AES-128, ускоритель PKA, генератор случайных чисел и 1 КБ однократно программируемой памяти OTP (с. 2 даташитов).

Радио Bluetooth LE 5.4

Радио всех четырёх линеек прошло квалификацию по спецификации Bluetooth Core 5.4 и поддерживает LE 2M и LE Coded, расширенную и периодическую рекламу, изохронные каналы и шифрование рекламных данных; по описанию ST оно подходит и для сетей Bluetooth Mesh (с. 1 и разд. 2 даташитов). Общие параметры (DS14591, DS14676, DS14210, с. 1):

  • скорость передачи — 2 Мбит/с, 1 Мбит/с, 500 и 125 кбит/с;
  • чувствительность — −97 дБм на 1 Мбит/с и −104 дБм на 125 кбит/с;
  • выходная мощность — программируется до +8 дБм на антенном выводе;
  • до 128 физических соединений, встроенный симметрирующий трансформатор (балун);
  • нормы ETSI EN 300 328, EN 300 440, FCC CFR47 часть 15 и ARIB STD-T66.

Для согласования антенны ST предлагает микросхему пассивных компонентов (IPD), а для управления внешним антенным коммутатором — сигналы RADIO_TX_SEQUENCE и RADIO_RX_SEQUENCE, которые у WB06 и WB07 выводятся на PA10 или PB15 и на PA8 или PA11 (DS14676, с. 18).

Питание и режимы сна

STM32WB0 питается от 1,7 до 3,6 В и работает при температуре от −40 до +105 °C; сброс по снижению питания срабатывает, когда VDD падает ниже 1,65 В (разд. 2 даташитов DS14591, DS14676 и DS14210). Встроенный понижающий преобразователь SMPS с режимом обхода есть у всех линеек (с. 2 тех же даташитов). По DS14676 (3.7.3) его выходное напряжение программируется от 1,2 до 1,90 В, он работает на частоте 4 или 8 МГц, а без SMPS микросхема работает, если его выход соединить с VDD. Тактирование — от кварца 32 МГц со встроенными подстроечными конденсаторами, для часов — кварц 32 кГц или внутренний маломощный кольцевой генератор 32 кГц (RO, с. 2 даташитов).

Кроме простоя ядра (IDLE), когда процессор остановлен, а флеш-память работает, режимов низкого потребления два: Deepstop, в котором могут работать таймер пробуждения радио и RTC, а часть ОЗУ сохраняется, и Shutdown (табл. 4 и раздел о режимах питания даташитов). В Deepstop всегда сохраняется SRAM0, а сохранение SRAM1–SRAM3 у WB06 и WB07 выбирает программа (DS14676, табл. 2). Типовые токи по первой странице даташитов:

ПараметрWB05WB06, WB07WB09
Shutdown, 1,8 В8 нА10 нА12 нА
Deepstop с кварцем LSE и пробуждением от радио, 1,8 В0,8 мкА0,6 мкА0,9 мкА
Пиковый ток передачи при 0 дБм, 3,3 В4,3 мА4,3 мА4,9 мА
Пиковый ток приёма, 3,3 В3,4 мА3,4 мА3,6 мА
Динамический ток в работе14 мкА/МГц16,5 мкА/МГц14,47 мкА/МГц

Время работы от батареи при известных токах считает калькулятор времени работы от батареи. У STM32WB06 и WB07 флеш-памяти на 64 МГц нужен один такт ожидания — поле WAIT_STATES регистра конфигурации контроллера флеш-памяти (RM0530, с. 140).

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

У STM32WB06 и WB07 мультиплексор каждой линии порта рассчитан на восемь функций — AF0–AF7, номер записывают в регистры GPIOx_AFRL и GPIOx_AFRH (RM0530, с. 105). В данных ST у всех линеек STM32WB0 встречаются номера до AF7. Антенный вывод RF1, питание радиочасти VDDRF и выводы SMPS (VDDSD, VLXSD, VSSSD, VFBSD) альтернативных функций не имеют.

Загрузка у STM32WB0 устроена иначе, чем у остальных STM32: вывода BOOT0 нет, и после каждого сброса процессор начинает с загрузчика UART, записанного в первые 6 КБ из 7 КБ ПЗУ (DS14591 и DS14676, 3.3.3; DS14210, 3.4.3). Если во время аппаратного сброса на выводе PA10 высокий уровень, загрузчик ждёт команд по UART, иначе запускает программу из флеш-памяти (DS14591, 3.19.1; DS14210, 3.22; AN2606, шаблон 18). У WB06 и WB07 уровни на PA8–PA11 защёлкиваются при включении питания и видны программе в регистре PWRC_SR2 (RM0530, с. 13). Программа после старта может отобразить на адрес 0x0000 0000 флеш-память или SRAM0 битом REMAP контроллера флеш-памяти (DS14591 и DS14676, 3.5; DS14210, 3.6).

Загрузчик работает только через USART (AN2606, табл. 3), тактируется от HSI на 16 МГц, занимает 6 КБ системной памяти с адреса 0x1000 0000, использует последние 3 КБ ОЗУ и сам определяет скорость до 1 Мбит/с (AN2606, табл. 194, 196 и 198; DS14591, 3.19.1). Выводы:

ЛинейкаRXTX
STM32WB05PB0PA1
STM32WB06, WB07PA8PA9
STM32WB09PB0PA1

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

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

STM32WBx5 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32WB05KZVFQFPN32192 КБ24 КБ20
STM32WB05TZWLCSP36192 КБ24 КБ20

STM32WBx6 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32WB06CCWLCSP49256 КБ32 КБ29
STM32WB06CCVFQFPN48256 КБ32 КБ32
STM32WB06KCVFQFPN32256 КБ32 КБ20

STM32WBx7 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32WB07CCWLCSP49256 КБ64 КБ29
STM32WB07CCVFQFPN48256 КБ64 КБ32
STM32WB07KCVFQFPN32256 КБ64 КБ20

STM32WBx9 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32WB09KEVFQFPN32512 КБ64 КБ20
STM32WB09TEWLCSP36512 КБ64 КБ20

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

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

Чем STM32WB0 отличается от STM32WB?

Устройством. У STM32WB55 два ядра: приложение работает на Cortex-M4, а радиостек — на отдельном Cortex-M0+ (DS11929). У STM32WB0 ядро одно — Cortex-M0+ до 64 МГц, — а критичные по времени операции Bluetooth LE выполняет сопроцессор BlueNRG, работающий через DMA (DS14591, DS14676, DS14210, разд. 2). Радио у WB0 — Bluetooth LE 5.4, а для собственных протоколов на 2,4 ГГц ST даёт радиодрайвер.

Как запустить загрузчик STM32WB0?

Подать высокий уровень на PA10 во время аппаратного сброса. После каждого сброса процессор начинает с загрузчика UART в ПЗУ; если PA10 в высоком уровне, загрузчик ждёт команды, иначе запускает программу из флеш-памяти (DS14591, 3.19.1; DS14210, 3.22; AN2606, шаблон 18). Выводы UART: у WB05 и WB09 — PB0 (RX) и PA1 (TX), у WB06 и WB07 — PA8 (RX) и PA9 (TX) (AN2606, табл. 194, 196 и 198).

Чем STM32WB07 отличается от STM32WB06?

Объёмом ОЗУ: у WB07 четыре блока SRAM по 16 КБ — 64 КБ, у WB06 только SRAM0 и SRAM1 — 32 КБ (DS14676, табл. 1). Флеш-память у обеих 256 КБ, корпуса одни и те же — VFQFPN32, VFQFPN48 и WLCSP49, и описаны они в одном даташите DS14676.

Какую мощность и чувствительность даёт радио STM32WB0?

Выходная мощность программируется до +8 дБм на антенном выводе, чувствительность приёмника — −97 дБм на скорости 1 Мбит/с и −104 дБм на 125 кбит/с (режим LE Coded для большой дальности). Скорости — 2 Мбит/с, 1 Мбит/с, 500 и 125 кбит/с. Так у всех четырёх линеек (DS14591, DS14676, DS14210, с. 1).