1.. zephyr:board:: nucleo_wb55rg 2 3Overview 4******** 5 6The Nucleo WB55RG board is a multi-protocol wireless and ultra-low-power device 7embedding a powerful and ultra-low-power radio compliant with the Bluetooth® 8Low Energy (BLE) SIG specification v5.0 and with IEEE 802.15.4-2011. 9 10 11- STM32 microcontroller in VFQFPN68 package 12- 2.4 GHz RF transceiver supporting Bluetooth® specification v5.0 and 13 IEEE 802.15.4-2011 PHY and MAC 14- Dedicated Arm® 32-bit Cortex® M0+ CPU for real-time Radio layer 15- Three user LEDs 16- Board connector: USB user with Micro-B 17- Two types of extension resources: 18 19 - Arduino Uno V3 connectivity 20 - ST morpho extension pin headers for full access to all STM32 I/Os 21 22- Integrated PCB antenna or footprint for SMA connector 23- On-board ST-LINK/V2-1 debugger/programmer with SWD connector 24- Flexible power-supply options: ST-LINK USB VBUS or external sources 25- On-board socket for CR2032 battery 26- On-board ST-LINK/V2-1 debugger/programmer with USB re- enumeration capability: 27 mass storage, virtual COM port and debug port 28 29More information about the board can be found at the `Nucleo WB55RG website`_. 30 31Hardware 32******** 33 34STM32WB55RG is an ultra-low-power dual core Arm Cortex-M4 MCU 64 MHz,Cortex-M0 32MHz 35with 1 Mbyte of Flash memory, Bluetooth 5, 802.15.4, USB, LCD, AES-256 SoC and 36provides the following hardware capabilities: 37 38- Ultra-low-power with FlexPowerControl (down to 600 nA Standby mode with RTC and 32KB RAM) 39- Core: ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU, frequency up to 64 MHz 40- Radio: 41 42 - 2.4GHz 43 - RF transceiver supporting Bluetooth® 5 specification, IEEE 802.15.4-2011 PHY and MAC, 44 supporting Thread and ZigBee|reg| 3.0 45 - RX Sensitivity: -96 dBm (Bluetooth|reg| Low Energy at 1 Mbps), -100 dBm (802.15.4) 46 - Programmable output power up to +6 dBm with 1 dB steps 47 - Integrated balun to reduce BOM 48 - Support for 2 Mbps 49 - Dedicated Arm|reg| 32-bit Cortex|reg| M0 + CPU for real-time Radio layer 50 - Accurate RSSI to enable power control 51 - Suitable for systems requiring compliance with radio frequency regulations 52 ETSI EN 300 328, EN 300 440, FCC CFR47 Part 15 and ARIB STD-T66 53 - Support for external PA 54 55- Clock Sources: 56 57 - 32 MHz crystal oscillator with integrated trimming capacitors (Radio and CPU clock) 58 - 32 kHz crystal oscillator for RTC (LSE) 59 - 2x Internal low-power 32 kHz RC (|plusminus| 5% and |plusminus| 500ppm) 60 - Internal multispeed 100 kHz to 48 MHz oscillator, auto-trimmed by 61 LSE (better than |plusminus| 0.25 % accuracy) 62 - 2 PLLs for system clock, USB, SAI and ADC 63 64- RTC with HW calendar, alarms and calibration 65- LCD 8 x 40 or 4 x 44 with step-up converter 66- Up to 24 capacitive sensing channels: support touchkey, linear and rotary touch sensors 67- 16x timers: 68 69 - 2x 16-bit advanced motor-control 70 - 2x 32-bit and 5x 16-bit general purpose 71 - 2x 16-bit basic 72 - 2x low-power 16-bit timers (available in Stop mode) 73 - 2x watchdogs 74 - SysTick timer 75 76- Up to 114 fast I/Os, most 5 V-tolerant, up to 14 I/Os with independent supply down to 1.08 V 77- Memories 78 79 - Up to 1 MB Flash, 2 banks read-while-write, proprietary code readout protection 80 - Up to 320 KB of SRAM including 64 KB with hardware parity check 81 - External memory interface for static memories supporting SRAM, PSRAM, NOR and NAND memories 82 - Quad SPI memory interface 83 84- 4x digital filters for sigma delta modulator 85- Rich analog peripherals (down to 1.62 V) 86 87 - 12-bit ADC 4.26Msps, up to 16-bit with hardware oversampling, 200 uA/Msps 88 - 2x ultra-low-power comparator 89 - Accurate 2.5 V or 2.048 V reference voltage buffered output 90 91- System peripherals 92 93 - Inter processor communication controller (IPCC) for communication with 94 Bluetooth|reg| Low Energy and 802.15.4 95 - HW semaphores for resources sharing between CPUs 96 - 2x DMA controllers (7x channels each) supporting ADC, SPI, I2C, USART, 97 QSPI, SAI, AES, Timers 98 - 1x USART (ISO 7816, IrDA, SPI Master, Modbus and Smartcard mode) 99 - 1x LPUART (low power) 100 - 2x SPI 32 Mbit/s 101 - 2x I2C (SMBus/PMBus) 102 - 1x SAI (dual channel high quality audio) 103 - 1x USB 2.0 FS device, crystal-less, BCD and LPM 104 - Touch sensing controller, up to 18 sensors 105 - LCD 8x40 with step-up converter 106 - 1x 16-bit, four channels advanced timer 107 - 2x 16-bits, two channels timer 108 - 1x 32-bits, four channels timer 109 - 2x 16-bits ultra-low-power timer 110 - 1x independent Systick 111 - 1x independent watchdog 112 - 1x window watchdog 113 114- Security and ID 115 116 - 3x hardware encryption AES maximum 256-bit for the application, 117 the Bluetooth|reg| Low Energy and IEEE802.15.4 118 - Customer key storage / key manager services 119 - HW public key authority (PKA) 120 - Cryptographic algorithms: RSA, Diffie-Helman, ECC over GF(p) 121 - True random number generator (RNG) 122 - Sector protection against R/W operation (PCROP) 123 - CRC calculation unit 124 - 96-bit unique ID 125 - 64-bit unique ID. Possibility to derive 802.15.5 64-bit and 126 Bluetooth|reg| Low Energy 48-bit EUI 127 128- Up to 72 fast I/Os, 70 of them 5 V-tolerant 129- Development support: serial wire debug (SWD), JTAG, Embedded Trace Macrocell |trade| 130 131 132More information about STM32WB55RG can be found here: 133 134- `STM32WB55RG on www.st.com`_ 135- `STM32WB5RG datasheet`_ 136- `STM32WB5RG reference manual`_ 137 138Supported Features 139================== 140 141The Zephyr nucleo_wb55rg board configuration supports the following hardware features: 142 143+-----------+------------+-------------------------------------+ 144| Interface | Controller | Driver/Component | 145+===========+============+=====================================+ 146| NVIC | on-chip | nested vector interrupt controller | 147+-----------+------------+-------------------------------------+ 148| UART | on-chip | serial port-polling; | 149| | | serial port-interrupt | 150+-----------+------------+-------------------------------------+ 151| PINMUX | on-chip | pinmux | 152+-----------+------------+-------------------------------------+ 153| GPIO | on-chip | gpio | 154+-----------+------------+-------------------------------------+ 155| I2C | on-chip | i2c | 156+-----------+------------+-------------------------------------+ 157| SPI | on-chip | spi | 158+-----------+------------+-------------------------------------+ 159| PWM | on-chip | pwm | 160+-----------+------------+-------------------------------------+ 161| ADC | on-chip | adc | 162+-----------+------------+-------------------------------------+ 163| WATCHDOG | on-chip | independent watchdog | 164+-----------+------------+-------------------------------------+ 165| RADIO | on-chip | Bluetooth Low Energy | 166+-----------+------------+-------------------------------------+ 167| die-temp | on-chip | die temperature sensor | 168+-----------+------------+-------------------------------------+ 169| RTC | on-chip | rtc | 170+-----------+------------+-------------------------------------+ 171 172Other hardware features are not yet supported on this Zephyr port. 173 174The default configuration can be found in the defconfig file: 175:zephyr_file:`boards/st/nucleo_wb55rg/nucleo_wb55rg_defconfig` 176 177Bluetooth and compatibility with STM32WB Copro Wireless Binaries 178================================================================ 179 180To operate bluetooth on Nucleo WB55RG, Cortex-M0 core should be flashed with 181a valid STM32WB Coprocessor binaries (either 'Full stack' or 'HCI Layer'). 182These binaries are delivered in STM32WB Cube packages, under 183Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x/ 184For compatibility information with the various versions of these binaries, 185please check `modules/hal/stm32/lib/stm32wb/hci/README <https://github.com/zephyrproject-rtos/hal_stm32/blob/main/lib/stm32wb/hci/README>`__ 186in the hal_stm32 repo. 187Note that since STM32WB Cube package V1.13.2, "full stack" binaries are not compatible 188anymore for a use in Zephyr and only "HCI Only" versions should be used on the M0 189side. 190 191Connections and IOs 192=================== 193 194Nucleo WB55RG Board has 6 GPIO controllers. These controllers are responsible for pin muxing, 195input/output, pull-up, etc. 196 197Default Zephyr Peripheral Mapping: 198---------------------------------- 199 200.. rst-class:: rst-columns 201 202- UART_1 TX/RX : PB7/PB6 203- LPUART_1 TX/RX : PA3/PA2 (arduino_serial) 204- I2C_1_SCL : PB8 205- I2C_1_SDA : PB9 206- I2C_3_SCL : PC0 207- I2C_3_SDA : PC1 208- USER_PB : PC4 209- USER_PB1 : PD0 210- USER_PB2 : PD1 211- LD1 : PB5 212- LD2 : PB0 213- LD3 : PB1 214- SPI_1_NSS : PA4 (arduino_spi) 215- SPI_1_SCK : PA5 (arduino_spi) 216- SPI_1_MISO : PA6 (arduino_spi) 217- SPI_1_MOSI : PA7 (arduino_spi) 218- PWM_2 CH 1 : PA0 219- ADC_1_CH3 : PC2 220 221System Clock 222------------ 223 224Nucleo WB55RG System Clock could be driven by internal or external oscillator, 225as well as main PLL clock. By default System clock is driven by HSE clock at 32MHz. 226 227Serial Port 228----------- 229 230Nucleo WB55RG board has 2 (LP)U(S)ARTs. The Zephyr console output is assigned to USART1. 231Default settings are 115200 8N1. 232 233 234Programming and Debugging 235************************* 236 237Nucleo WB55RG board includes an ST-LINK/V2-1 embedded debug tool interface. 238 239Applications for the ``nucleo_wb55rg`` board configuration can be built the 240usual way (see :ref:`build_an_application`). 241 242Flashing 243======== 244 245The board is configured to be flashed using west `STM32CubeProgrammer`_ runner, 246so its :ref:`installation <stm32cubeprog-flash-host-tools>` is required. 247 248Alternatively, OpenOCD or pyOCD can also be used to flash the board using 249the ``--runner`` (or ``-r``) option: 250 251.. code-block:: console 252 253 $ west flash --runner openocd 254 $ west flash --runner pyocd 255 256If you prefer, you can use pyOCD, but it requires to enable "pack" support with 257the following pyOCD command: 258 259.. code-block:: console 260 261 $ pyocd pack --update 262 $ pyocd pack --install stm32wb55rg 263 264 265Flashing an application to Nucleo WB55RG 266---------------------------------------- 267 268Connect the Nucleo WB55RG to your host computer using the USB port. 269Then build and flash an application. Here is an example for the 270:zephyr:code-sample:`hello_world` application. 271 272Run a serial host program to connect with your Nucleo board: 273 274.. code-block:: console 275 276 $ minicom -D /dev/ttyUSB0 277 278Then build and flash the application. 279 280.. zephyr-app-commands:: 281 :zephyr-app: samples/hello_world 282 :board: nucleo_wb55rg 283 :goals: build flash 284 285You should see the following message on the console: 286 287.. code-block:: console 288 289 Hello World! arm 290 291Debugging 292========= 293 294You can debug an application in the usual way. Here is an example for the 295:zephyr:code-sample:`blinky` application. 296 297.. zephyr-app-commands:: 298 :zephyr-app: samples/basic/blinky 299 :board: nucleo_wb55rg 300 :maybe-skip-config: 301 :goals: debug 302 303.. _Nucleo WB55RG website: 304 https://www.st.com/en/evaluation-tools/p-nucleo-wb55.html 305 306.. _STM32WB55RG on www.st.com: 307 https://www.st.com/en/microcontrollers-microprocessors/stm32wb55rg.html 308 309.. _STM32WB5RG datasheet: 310 https://www.st.com/resource/en/datasheet/stm32wb55rg.pdf 311 312.. _STM32WB5RG reference manual: 313 https://www.st.com/resource/en/reference_manual/dm00318631.pdf 314 315.. _STM32CubeProgrammer: 316 https://www.st.com/en/development-tools/stm32cubeprog.html 317