You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
317 lines
11 KiB
317 lines
11 KiB
.. _stm32wb5mmg_bluetooth_module: |
|
|
|
ST STM32WB5MMG |
|
################ |
|
|
|
Overview |
|
******** |
|
|
|
STM32WB5MMG is an ultra-low-power and small form factor certified 2.4 GHz |
|
wireless module. It supports Bluetooth|reg| Low Energy 5.4, Zigbee|reg| 3.0, |
|
OpenThread, dynamic, and static concurrent modes, and 802.15.4 proprietary |
|
protocols. This board support is added in order to make it possible use this |
|
module on other boards as HCI layer (Specefically B-U585I-IOT02A Development board). |
|
|
|
STM32WB5MMG supports the following features: |
|
|
|
- Bluetooth module in SiP-LGA86 package |
|
- Integrated chip antenna |
|
- Bluetooth|reg| Low Energy 5.4, Zigbee|reg| 3.0, OpenThread certified |
|
Dynamic and static concurrent modes |
|
- IEEE 802.15.4-2011 MAC PHY Supports 2 Mbits/s |
|
- Frequency band 2402-2480 MHz |
|
- Advertising extension |
|
- Tx output power up to +6 dBm |
|
- Rx sensitivity: -96 dBm (Bluetooth|reg| Low Energy at 1 Mbps), -100 dBm (802.15.4) |
|
- Range: up to 75 meters |
|
- Dedicated Arm|reg| Cortex|reg|-M0+ CPU for radio and security tasks |
|
- Dedicated Arm|reg| Cortex|reg|-M4 CPU with FPU and ART (adaptive real-time accelerator) up to 64 MHz speed |
|
- 1-Mbyte flash memory, 256-Kbyte SRAM |
|
- Fully integrated BOM, including 32 MHz radio and 32 kHz RTC crystals |
|
- Integrated SMPS |
|
- Ultra-low-power modes for battery longevity |
|
- 68 GPIOs |
|
- SWD, JTAG |
|
|
|
.. image:: img/STM32WB5MMG.jpg |
|
:align: center |
|
:alt: STM32WB5MMG |
|
|
|
More information about the board can be found at the `` `STM32WB5MMG on www.st.com`_. |
|
|
|
Hardware |
|
******** |
|
|
|
STM32WB5MMG is an ultra-low-power and small form factor certified 2.4 GHz |
|
wireless module. It supportsBluetooth|reg| Low Energy 5.4, Zigbee|reg| 3.0, OpenThread, |
|
dynamic, and static concurrent modes, and 802.15.4proprietary protocols. Based |
|
on the STMicroelectronics STM32WB55VGY wireless microcontroller,STM32WB5MMG |
|
provides best-in-class RF performance thanks to its high receiver sensitivity |
|
and output power signal. Its low-power features enable extended battery life, |
|
small coin-cell batteries, and energy harvesting. STM32WB5MMG revision Y is |
|
based on cut 2.1 of the STM32WB55VGY microcontroller. Revision X is based on |
|
cut 2.2. |
|
|
|
- Ultra-low-power with FlexPowerControl (down to 600 nA Standby mode with RTC and 32KB RAM) |
|
- Core: ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU, frequency up to 64 MHz |
|
- Radio: |
|
|
|
- 2.4GHz |
|
- RF transceiver supporting Bluetooth|reg| 5.4 |
|
specification, IEEE 802.15.4-2011 PHY |
|
and MAC, supporting Thread 1.3 and |
|
- Zigbee|reg| 3.0 |
|
- RX sensitivity: -96 dBm (Bluetooth |reg| Low |
|
Energy at 1 Mbps), -100 dBm (802.15.4) |
|
- Programmable output power up to +6 dBm |
|
with 1 dB steps |
|
- Integrated balun to reduce BOM |
|
- Support for 2 Mbps |
|
- Support GATT caching |
|
- Support EATT (enhanced ATT) |
|
- Support advertising extension |
|
- Dedicated Arm|reg| 32-bit Cortex|reg| M0+ CPU |
|
for real-time Radio layer |
|
- Accurate RSSI to enable power control |
|
- Suitable for systems requiring compliance |
|
with radio frequency regulations ETSI EN |
|
300 328, EN 300 440, FCC CFR47 Part 15 |
|
and ARIB STD-T66 |
|
|
|
|
|
- Clock Sources: |
|
|
|
- 32 MHz crystal oscillator with integrated |
|
trimming capacitors (Radio and CPU clock) |
|
- 32 kHz crystal oscillator for RTC (LSE) |
|
- Internal low-power 32 kHz (±5%) RC (LSI1) |
|
- Internal low-power 32 kHz (stability |
|
±500 ppm) RC (LSI2) |
|
- Internal multispeed 100 kHz to 48 MHz |
|
oscillator, auto-trimmed by LSE (better than |
|
±0.25% accuracy) |
|
- High speed internal 16 MHz factory |
|
trimmed RC (±1%) |
|
- 2x PLL for system clock, USB, SAI, ADC |
|
|
|
- 2x DMA controllers (seven channels each) supporting ADC, SPI, I2C, USART, QSPI, SAI, AES, timers |
|
- 1x USART (ISO 7816, IrDA, SPI master, Modbus and Smartcard mode) |
|
- 1x LPUART (low power) |
|
- Two SPI running at 32 Mbit/s |
|
- 2x I2C (SMBus/PMBus) |
|
- 1x SAI (dual channel high quality audio) |
|
- 1x USB 2.0 FS device, crystal-less, BCD and LPM |
|
- 1x Touch sensing controller, up to 18 sensors |
|
- 1x LCD 8x40 with step-up converter |
|
- 1x 16-bit, four channels advanced timer |
|
- 2x 16-bit, two channels timers |
|
- 1x 32-bit, four channels timer |
|
- 2x 16-bit ultra-low-power timers |
|
- 1x independent Systick |
|
- 1x independent watchdog |
|
- 1x window watchdog |
|
- Up to 72 fast I/Os, 70 of them 5 V-tolerant |
|
|
|
- Memories |
|
|
|
- Up to 1 MB flash memory with sector |
|
protection (PCROP) against R/W |
|
operations, enabling radio stack and |
|
application |
|
- Up to 256 KB SRAM, including 64 KB with |
|
hardware parity check |
|
- 20x 32-bit backup register |
|
- Boot loader supporting USART, SPI, I2C |
|
and USB interfaces |
|
- OTA (over the air) Bluetooth® Low Energy |
|
and 802.15.4 update |
|
- Quad SPI memory interface with XIP |
|
- 1 Kbyte (128 double words) OTP |
|
|
|
- 4x digital filters for sigma delta modulator |
|
- Rich analog peripherals (down to 1.62 V) |
|
|
|
- 12-bit ADC 4.26 Msps, up to 16-bit with |
|
hardware oversampling, 200 μA/Msps |
|
- 2x ultra-low-power comparator |
|
- Accurate 2.5 V or 2.048 V reference |
|
voltage buffered output |
|
|
|
|
|
- Security and ID |
|
|
|
- Secure firmware installation (SFI) for |
|
Bluetooth|reg| Low Energy and 802.15.4 SW stack |
|
- 3x hardware encryption AES maximum 256-bit for |
|
the application, the Bluetooth|reg| |
|
- Low Energy and IEEE802.15.4 |
|
- Customer key storage/manager services |
|
- HW public key authority (PKA) |
|
- Cryptographic algorithms: RSA, Diffie-Helman, ECC over GF(p) |
|
- True random number generator (RNG) |
|
- Sector protection against R/W operation (PCROP) |
|
- CRC calculation unit |
|
- Die information: 96-bit unique ID |
|
- IEEE 64-bit unique ID, possibility to derive 802.15.4 64-bit |
|
and Bluetooth|reg| Low Energy |
|
- 48-bit EUI |
|
|
|
More information about STM32WB55RG can be found here: |
|
|
|
- `STM32WB5MMG on www.st.com`_ |
|
- `STM32WB5MMG datasheet`_ |
|
|
|
Supported Features |
|
================== |
|
|
|
The Zephyr STM32WB5MMG board configuration supports the following hardware features: |
|
|
|
+-----------+------------+-------------------------------------+ |
|
| Interface | Controller | Driver/Component | |
|
+===========+============+=====================================+ |
|
| UART | on-chip | serial port-polling; | |
|
| | | serial port-interrupt | |
|
+-----------+------------+-------------------------------------+ |
|
| RADIO | on-chip | Bluetooth Low Energy | |
|
+-----------+------------+-------------------------------------+ |
|
|
|
|
|
Other hardware features are not yet supported on this Zephyr port. |
|
|
|
The default configuration can be found in the defconfig file: |
|
:zephyr_file:`boards/st/stm32wb5mmg/stm32wb5mmg_defconfig` |
|
|
|
Bluetooth and compatibility with STM32WB Copro Wireless Binaries |
|
================================================================ |
|
|
|
To operate bluetooth on STM32WB5MMG, Cortex-M0 core should be flashed with |
|
a valid STM32WB Coprocessor binaries (either 'Full stack' or 'HCI Layer'). |
|
These binaries are delivered in STM32WB Cube packages, under |
|
Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x/ |
|
For compatibility information with the various versions of these binaries, |
|
please check `modules/hal/stm32/lib/stm32wb/hci/README`_ |
|
in the hal_stm32 repo. |
|
Note that since STM32WB Cube package V1.13.2, "full stack" binaries are not compatible |
|
anymore for a use in Zephyr and only "HCI Only" versions should be used on the M0 |
|
side. |
|
|
|
Connections and IOs |
|
=================== |
|
|
|
|
|
Default Zephyr Peripheral Mapping: |
|
---------------------------------- |
|
|
|
.. rst-class:: rst-columns |
|
|
|
- UART_1 TX/RX : PB7/PB6 |
|
- LPUART_1 TX/RX : PA3/PA2 |
|
- USB : PA11/PA12 |
|
- SWD : PA13/PA14 |
|
|
|
System Clock |
|
------------ |
|
|
|
STM32WB5MMG System Clock could be driven by internal or external oscillator, |
|
as well as main PLL clock. By default System clock is driven by HSE clock at 32MHz. |
|
|
|
Serial Port |
|
----------- |
|
|
|
STM32WB5MMG board has 2 (LP)U(S)ARTs. LPUART1 is connected to the main U585I |
|
microcontroller that is used as HCI controller port. USART1 is not connected |
|
to any external pinout, so it is not possible to debug the module directly. |
|
Rather, users can use the available USB port (CN12) to run virtual com port |
|
(VCP) USB stack for the debugging. |
|
|
|
|
|
Programming and Debugging |
|
************************* |
|
|
|
Applications for the ``stm32wb5mmg`` board configuration can be built the |
|
usual way (see :ref:`build_an_application`). |
|
|
|
Flashing the module |
|
=================== |
|
|
|
The onboard ST-Link on the ``b_u585i_iot02a`` board can be used to flash the |
|
STM32WB5MMG module. To do this you should put SW4 on OFF and SW5 on ON mode. |
|
In this case the firmware will be uploaded on the STM32WB5MMG module. |
|
|
|
The module is configured to be flashed using west `STM32CubeProgrammer`_ runner, |
|
so its :ref:`installation <stm32cubeprog-flash-host-tools>` is required. |
|
|
|
Alternatively, openocd can also be used to flash the board using |
|
the ``--runner`` (or ``-r``) option: |
|
|
|
.. code-block:: console |
|
|
|
$ west flash --runner openocd |
|
|
|
Flashing ``hci_uart`` application to STM32WB5MMG |
|
------------------------------------------------ |
|
|
|
Connect the B-U585I-IOT02A to your host computer using the USB port. Put |
|
the SW4 (MCU SWD) in OFF mode and SW5 (SWD BLE) in ON mode. Then build |
|
and flash an application. Here is an example for the |
|
:zephyr:code-sample:`bluetooth_hci_uart` application. |
|
|
|
Run a serial host program to connect with your B-U585I-IOT02A board: |
|
|
|
.. code-block:: console |
|
|
|
$ minicom -D /dev/ttyACM0 |
|
|
|
Then build and flash the application for the STM32WB5MMG module. |
|
|
|
.. zephyr-app-commands:: |
|
:zephyr-app: samples/bluetooth/hci_uart |
|
:board: stm32wb5mmg |
|
:goals: build flash |
|
|
|
Next, reverse back the buttons to default mode (SW4 on ON and SW5 |
|
on OFF) mode. In this case we will upload the Bluetooth sample on the |
|
main microcontroller.Then, build the bluetooth |
|
:zephyr_file:`samples/bluetooth/observer` demo application for |
|
B-U585I-IOT02A board: |
|
|
|
.. zephyr-app-commands:: |
|
:zephyr-app: samples/bluetooth/observer |
|
:board: b_u585i_iot02a |
|
:goals: build flash |
|
|
|
Rest the board and you should see the following messages on the console: |
|
|
|
.. code-block:: console |
|
|
|
Starting Observer Demo |
|
Started scanning... |
|
Exiting main thread. |
|
Device found: 2C:98:F3:64:58:06 (random) (RSSI -82), type 3, AD data len 31 |
|
Device found: CE:5B:9A:87:69:4F (random) (RSSI -80), type 3, AD data len 8 |
|
Device found: 7B:1E:DD:38:23:E1 (random) (RSSI -85), type 0, AD data len 17 |
|
|
|
|
|
Debugging |
|
========= |
|
|
|
You can debug an application in the usual way. Here is an example for the |
|
:zephyr:code-sample:`bluetooth_hci_uart` application. |
|
|
|
.. zephyr-app-commands:: |
|
:zephyr-app: samples/bluetooth/observer |
|
:board: b_u585i_iot02a |
|
:maybe-skip-config: |
|
:goals: debug |
|
|
|
.. _STM32WB5MMG on www.st.com: |
|
https://www.st.com/en/microcontrollers-microprocessors/stm32wb5mmg.html |
|
|
|
.. _STM32WB5MMG datasheet: |
|
https://www.st.com/resource/en/datasheet/stm32wb5mmg.pdf |
|
|
|
.. _modules/hal/stm32/lib/stm32wb/hci/README: |
|
https://github.com/zephyrproject-rtos/hal_stm32/blob/main/lib/stm32wb/hci/README |
|
|
|
.. _STM32CubeProgrammer: |
|
https://www.st.com/en/development-tools/stm32cubeprog.html
|
|
|