1.. _nucleo_wba55cg_board:
2
3ST Nucleo WBA55CG
4#################
5
6Overview
7********
8
9NUCLEO-WBA55CG is a Bluetooth® Low Energy wireless and ultra-low-power board
10embedding a powerful and ultra-low-power radio compliant with the Bluetooth®
11Low Energy SIG specification v5.3.
12
13The ARDUINO® Uno V3 connectivity support and the ST morpho headers allow the
14easy expansion of the functionality of the STM32 Nucleo open development
15platform with a wide choice of specialized shields.
16
17- Ultra-low-power wireless STM32WBA55CG microcontroller based on the Arm®
18  Cortex®‑M33 core, featuring 1 Mbyte of flash memory and 128 Kbytes of SRAM in
19  a UFQFPN48 package
20
21- MCU RF board (MB1863):
22
23  - 2.4 GHz RF transceiver supporting Bluetooth® specification v5.3
24  - Arm® Cortex® M33 CPU with TrustZone®, MPU, DSP, and FPU
25  - Integrated PCB antenna
26
27- Three user LEDs
28- Three user and one reset push-buttons
29
30- Board connectors:
31
32  - USB Micro-B
33  - ARDUINO® Uno V3 expansion connector
34  - ST morpho headers for full access to all STM32 I/Os
35
36- Flexible power-supply options: ST-LINK USB VBUS or external sources
37- On-board STLINK-V3MODS debugger/programmer with USB re-enumeration capability:
38  mass storage, Virtual COM port, and debug port
39
40.. image:: img/nucleowba55cg.jpg
41   :align: center
42   :alt: Nucleo WBA55CG
43
44Hardware
45********
46
47The STM32WBA55xx multiprotocol wireless and ultralow power devices embed a
48powerful and ultralow power radio compliant with the Bluetooth® SIG Low Energy
49specification 5.3. They contain a high-performance Arm Cortex-M33 32-bit RISC
50core. They operate at a frequency of up to 100 MHz.
51
52- Includes ST state-of-the-art patented technology
53
54- Ultra low power radio:
55
56  - 2.4 GHz radio
57  - RF transceiver supporting Bluetooth® Low Energy 5.3 specification
58  - Proprietary protocols
59  - RX sensitivity: -96 dBm (Bluetooth® Low Energy at 1 Mbps)
60  - Programmable output power, up to +10 dBm with 1 dB steps
61  - Integrated balun to reduce BOM
62  - Suitable for systems requiring compliance with radio frequency regulations
63    ETSI EN 300 328, EN 300 440, FCC CFR47 Part 15 and ARIB STD-T66
64
65- Ultra low power platform with FlexPowerControl:
66
67  - 1.71 to 3.6 V power supply
68  - - 40 °C to 85 °C temperature range
69  - Autonomous peripherals with DMA, functional down to Stop 1 mode
70  - 140 nA Standby mode (16 wake-up pins)
71  - 200 nA Standby mode with RTC
72  - 2.4 µA Standby mode with 64 KB SRAM
73  - 16.3 µA Stop mode with 64 KB SRAM
74  - 45 µA/MHz Run mode at 3.3 V
75  - Radio: Rx 7.4 mA / Tx at 0 dBm 10.6 mA
76
77- Core: Arm® 32-bit Cortex®-M33 CPU with TrustZone®, MPU, DSP, and FPU
78- ART Accelerator™: 8-Kbyte instruction cache allowing 0-wait-state execution
79  from flash memory (frequency up to 100 MHz, 150 DMIPS)
80- Power management: embedded regulator LDO supporting voltage scaling
81
82- Benchmarks:
83
84  - 1.5 DMIPS/MHz (Drystone 2.1)
85  - 407 CoreMark® (4.07 CoreMark/MHz)
86
87- Clock sources:
88
89  - 32 MHz crystal oscillator
90  - 32 kHz crystal oscillator (LSE)
91  - Internal low-power 32 kHz (±5%) RC
92  - Internal 16 MHz factory trimmed RC (±1%)
93  - PLL for system clock and ADC
94
95- Memories:
96
97  - 1 MB flash memory with ECC, including 256 Kbytes with 100 cycles
98  - 128 KB SRAM, including 64 KB with parity check
99  - 512-byte (32 rows) OTP
100
101- Rich analog peripherals (independent supply):
102
103  - 12-bit ADC 2.5 Msps with hardware oversampling
104
105- Communication peripherals:
106
107  - Three UARTs (ISO 7816, IrDA, modem)
108  - Two SPIs
109  - Two I2C Fm+ (1 Mbit/s), SMBus/PMBus®
110
111- System peripherals:
112
113  - Touch sensing controller, up to 20 sensors, supporting touch key, linear,
114     rotary touch sensors
115  - One 16-bit, advanced motor control timer
116  - Three 16-bit timers
117  - One 32-bit timer
118  - Two low-power 16-bit timers (available in Stop mode)
119  - Two Systick timers
120  - Two watchdogs
121  - 8-channel DMA controller, functional in Stop mode
122
123- Security and cryptography:
124
125  - Arm® TrustZone® and securable I/Os, memories, and peripherals
126  - Flexible life cycle scheme with RDP and password protected debug
127  - Root of trust thanks to unique boot entry and secure hide protection area (HDP)
128  - SFI (secure firmware installation) thanks to embedded RSS (root secure services)
129  - Secure data storage with root hardware unique key (RHUK)
130  - Secure firmware upgrade support with TF-M
131  - Two AES co-processors, including one with DPA resistance
132  - Public key accelerator, DPA resistant
133  - HASH hardware accelerator
134  - True random number generator, NIST SP800-90B compliant
135  - 96-bit unique ID
136  - Active tampers
137  - CRC calculation unit
138
139- Up to 35 I/Os (most of them 5 V-tolerant) with interrupt capability
140
141- Development support:
142
143  - Serial wire debug (SWD), JTAG
144
145- ECOPACK2 compliant package
146
147More information about STM32WBA series can be found here:
148
149- `STM32WBA Series on www.st.com`_
150
151Supported Features
152==================
153
154The Zephyr nucleo_wba55cg board configuration supports the following hardware features:
155
156+-----------+------------+-------------------------------------+
157| Interface | Controller | Driver/Component                    |
158+===========+============+=====================================+
159| NVIC      | on-chip    | nested vector interrupt controller  |
160+-----------+------------+-------------------------------------+
161| UART      | on-chip    | serial port-polling;                |
162|           |            | serial port-interrupt               |
163+-----------+------------+-------------------------------------+
164| PINMUX    | on-chip    | pinmux                              |
165+-----------+------------+-------------------------------------+
166| GPIO      | on-chip    | gpio                                |
167+-----------+------------+-------------------------------------+
168| I2C       | on-chip    | i2c                                 |
169+-----------+------------+-------------------------------------+
170| SPI       | on-chip    | spi                                 |
171+-----------+------------+-------------------------------------+
172| ADC       | on-chip    | adc                                 |
173+-----------+------------+-------------------------------------+
174| WATCHDOG  | on-chip    | independent watchdog                |
175+-----------+------------+-------------------------------------+
176| RNG       | on-chip    | True Random number generator        |
177+-----------+------------+-------------------------------------+
178| RADIO     | on-chip    | Bluetooth Low Energy                |
179+-----------+------------+-------------------------------------+
180| RTC       | on-chip    | rtc                                 |
181+-----------+------------+-------------------------------------+
182
183Other hardware features are not yet supported on this Zephyr port.
184
185The default configuration can be found in the defconfig file:
186:zephyr_file:`boards/st/nucleo_wba55cg/nucleo_wba55cg_defconfig`
187
188Bluetooh support
189----------------
190
191BLE support is enabled on nucleo_wba55cg. To build a zephyr sample using this board
192you first need to install Bluetooth Controller libraries available in Zephyr as binary
193blobs.
194
195To fetch Binary Blobs:
196
197.. code-block:: console
198
199   west blobs fetch stm32
200
201Connections and IOs
202===================
203
204Nucleo WBA55CG Board has 4 GPIO controllers. These controllers are responsible for pin muxing,
205input/output, pull-up, etc.
206
207Default Zephyr Peripheral Mapping:
208----------------------------------
209
210.. rst-class:: rst-columns
211
212- USART_1 TX/RX : PB12/PA8
213- I2C_1_SCL : PB2
214- I2C_1_SDA : PB1
215- USER_PB : PC13
216- LD1 : PB4
217- SPI_1_NSS : PA12 (arduino_spi)
218- SPI_1_SCK : PB4 (arduino_spi)
219- SPI_1_MISO : PB3 (arduino_spi)
220- SPI_1_MOSI : PA15 (arduino_spi)
221
222System Clock
223------------
224
225Nucleo WBA55CG System Clock could be driven by internal or external oscillator,
226as well as main PLL clock. By default System clock is driven by HSE+PLL clock at 100MHz.
227
228Serial Port
229-----------
230
231Nucleo WBA55CG board has 1 U(S)ARTs. The Zephyr console output is assigned to USART1.
232Default settings are 115500 8N1.
233
234
235Programming and Debugging
236*************************
237
238Nucleo WBA55CG board includes an ST-LINK/V3 embedded debug tool interface.
239It could be used for flash and debug using either OpenOCD or STM32Cube ecosystem tools.
240
241Flashing
242========
243
244STM32CubeProgrammer is configured as flashing tool by default.
245If available, OpenOCD could be used. Same process applies with both tools.
246
247Flashing an application to Nucleo WBA55CG
248-----------------------------------------
249
250Here is an example for the :zephyr:code-sample:`blinky` application.
251
252.. zephyr-app-commands::
253   :zephyr-app: samples/basic/blinky
254   :board: nucleo_wba55cg
255   :goals: build flash
256
257You will see the LED blinking every second.
258
259Debugging
260=========
261
262Debugging using OpenOCD
263-----------------------
264
265You can debug an application in the usual way using OpenOCD. Here is an example for the
266:zephyr:code-sample:`blinky` application.
267
268.. zephyr-app-commands::
269   :zephyr-app: samples/basic/blinky
270   :board: nucleo_wba55cg
271   :maybe-skip-config:
272   :goals: debug
273
274Debugging using STM32CubeIDE
275----------------------------
276
277You can debug an application using a STM32WBA compatible version of STM32CubeIDE.
278
279For that:
280
281- Create an empty STM32WBA project by going to File > New > STM32 project
282- Select your MCU, click Next, and select an Empty project.
283- Right click on your project name, select Debug as > Debug configurations
284- In the new window, create a new target in STM32 Cortex-M C/C++ Application
285- Select the new target and enter the path to zephyr.elf file in the C/C++ Application field
286- Check Disable auto build
287- Run debug
288
289.. _STM32WBA Series on www.st.com:
290   https://www.st.com/en/microcontrollers-microprocessors/stm32wba-series.html
291
292.. _OpenOCD official Github mirror:
293   https://github.com/openocd-org/openocd/commit/870769b0ba9f4dae6ada9d8b1a40d75bd83aaa06
294