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