.. _nucleo_wba52cg_board: ST Nucleo WBA52CG ################# Overview ******** NUCLEO-WBA52CG is a Bluetooth® Low Energy wireless and ultra-low-power board embedding a powerful and ultra-low-power radio compliant with the Bluetooth® Low Energy SIG specification v5.3. The ARDUINO® Uno V3 connectivity support and the ST morpho headers allow the easy expansion of the functionality of the STM32 Nucleo open development platform with a wide choice of specialized shields. - Ultra-low-power wireless STM32WBA52CG microcontroller based on the Arm® Cortex®‑M33 core, featuring 1 Mbyte of flash memory and 128 Kbytes of SRAM in a UFQFPN48 package - MCU RF board (MB1863): - 2.4 GHz RF transceiver supporting Bluetooth® specification v5.3 - Arm® Cortex® M33 CPU with TrustZone®, MPU, DSP, and FPU - Integrated PCB antenna - Three user LEDs - Three user and one reset push-buttons - Board connectors: - USB Micro-B - ARDUINO® Uno V3 expansion connector - ST morpho headers for full access to all STM32 I/Os - Flexible power-supply options: ST-LINK USB VBUS or external sources - On-board STLINK-V3MODS debugger/programmer with USB re-enumeration capability: mass storage, Virtual COM port, and debug port .. image:: img/nucleowba52cg.jpg :align: center :alt: Nucleo WBA52CG More information about the board can be found at the `Nucleo WBA52CG website`_. Hardware ******** The STM32WBA52xx multiprotocol wireless and ultralow power devices embed a powerful and ultralow power radio compliant with the Bluetooth® SIG Low Energy specification 5.3. They contain a high-performance Arm Cortex-M33 32-bit RISC core. They operate at a frequency of up to 100 MHz. - Includes ST state-of-the-art patented technology - Ultra low power radio: - 2.4 GHz radio - RF transceiver supporting Bluetooth® Low Energy 5.3 specification - Proprietary protocols - RX sensitivity: -96 dBm (Bluetooth® Low Energy at 1 Mbps) - Programmable output power, up to +10 dBm with 1 dB steps - Integrated balun to reduce BOM - Suitable for systems requiring compliance with radio frequency regulations ETSI EN 300 328, EN 300 440, FCC CFR47 Part 15 and ARIB STD-T66 - Ultra low power platform with FlexPowerControl: - 1.71 to 3.6 V power supply - - 40 °C to 85 °C temperature range - Autonomous peripherals with DMA, functional down to Stop 1 mode - 140 nA Standby mode (16 wake-up pins) - 200 nA Standby mode with RTC - 2.4 µA Standby mode with 64 KB SRAM - 16.3 µA Stop mode with 64 KB SRAM - 45 µA/MHz Run mode at 3.3 V - Radio: Rx 7.4 mA / Tx at 0 dBm 10.6 mA - Core: Arm® 32-bit Cortex®-M33 CPU with TrustZone®, MPU, DSP, and FPU - ART Accelerator™: 8-Kbyte instruction cache allowing 0-wait-state execution from flash memory (frequency up to 100 MHz, 150 DMIPS) - Power management: embedded regulator LDO supporting voltage scaling - Benchmarks: - 1.5 DMIPS/MHz (Drystone 2.1) - 407 CoreMark® (4.07 CoreMark/MHz) - Clock sources: - 32 MHz crystal oscillator - 32 kHz crystal oscillator (LSE) - Internal low-power 32 kHz (±5%) RC - Internal 16 MHz factory trimmed RC (±1%) - PLL for system clock and ADC - Memories: - 1 MB flash memory with ECC, including 256 Kbytes with 100 cycles - 128 KB SRAM, including 64 KB with parity check - 512-byte (32 rows) OTP - Rich analog peripherals (independent supply): - 12-bit ADC 2.5 Msps with hardware oversampling - Communication peripherals: - Three UARTs (ISO 7816, IrDA, modem) - Two SPIs - Two I2C Fm+ (1 Mbit/s), SMBus/PMBus® - System peripherals: - Touch sensing controller, up to 20 sensors, supporting touch key, linear, rotary touch sensors - One 16-bit, advanced motor control timer - Three 16-bit timers - One 32-bit timer - Two low-power 16-bit timers (available in Stop mode) - Two Systick timers - Two watchdogs - 8-channel DMA controller, functional in Stop mode - Security and cryptography: - Arm® TrustZone® and securable I/Os, memories, and peripherals - Flexible life cycle scheme with RDP and password protected debug - Root of trust thanks to unique boot entry and secure hide protection area (HDP) - SFI (secure firmware installation) thanks to embedded RSS (root secure services) - Secure data storage with root hardware unique key (RHUK) - Secure firmware upgrade support with TF-M - Two AES co-processors, including one with DPA resistance - Public key accelerator, DPA resistant - HASH hardware accelerator - True random number generator, NIST SP800-90B compliant - 96-bit unique ID - Active tampers - CRC calculation unit - Up to 35 I/Os (most of them 5 V-tolerant) with interrupt capability - Development support: - Serial wire debug (SWD), JTAG - ECOPACK2 compliant package More information about STM32WB55RG can be found here: - `STM32WBA52CG on www.st.com`_ - `STM32WBA52CG datasheet`_ - `STM32WBA52CG reference manual`_ Supported Features ================== The Zephyr nucleo_wba52cg board configuration supports the following hardware features: +-----------+------------+-------------------------------------+ | Interface | Controller | Driver/Component | +===========+============+=====================================+ | NVIC | on-chip | nested vector interrupt controller | +-----------+------------+-------------------------------------+ | UART | on-chip | serial port-polling; | | | | serial port-interrupt | +-----------+------------+-------------------------------------+ | PINMUX | on-chip | pinmux | +-----------+------------+-------------------------------------+ | GPIO | on-chip | gpio | +-----------+------------+-------------------------------------+ | I2C | on-chip | i2c | +-----------+------------+-------------------------------------+ | SPI | on-chip | spi | +-----------+------------+-------------------------------------+ | ADC | on-chip | adc | +-----------+------------+-------------------------------------+ | WATCHDOG | on-chip | independent watchdog | +-----------+------------+-------------------------------------+ | RNG | on-chip | True Random number generator | +-----------+------------+-------------------------------------+ 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/nucleo_wba52cg/nucleo_wba52cg_defconfig` Connections and IOs =================== Nucleo WBA52CG Board has 4 GPIO controllers. These controllers are responsible for pin muxing, input/output, pull-up, etc. Default Zephyr Peripheral Mapping: ---------------------------------- .. rst-class:: rst-columns - USART_1 TX/RX : PB12/PA8 - I2C_1_SCL : PB2 - I2C_1_SDA : PB1 - USER_PB : PC13 - LD1 : PB4 - SPI_1_NSS : PA12 (arduino_spi) - SPI_1_SCK : PB4 (arduino_spi) - SPI_1_MISO : PB3 (arduino_spi) - SPI_1_MOSI : PA15 (arduino_spi) System Clock ------------ Nucleo WBA52CG System Clock could be driven by internal or external oscillator, as well as main PLL clock. By default System clock is driven by HSE+PLL clock at 100MHz. Serial Port ----------- Nucleo WBA52CG board has 1 U(S)ARTs. The Zephyr console output is assigned to USART1. Default settings are 115200 8N1. Programming and Debugging ************************* Nucleo WBA52CG board includes an ST-LINK/V3 embedded debug tool interface. It could be used for flash and debug using either OpenOCD or STM32Cube ecosystem tools. Flashing ======== STM32CubeProgrammer is configured as flashing tool by default. If available, OpenOCD could be used. Same process applies with both tools. Flashing an application to Nucleo WBA52CG ----------------------------------------- Here is an example for the :zephyr:code-sample:`blinky` application. .. zephyr-app-commands:: :zephyr-app: samples/basic/blinky :board: nucleo_wba52cg :goals: build flash You will see the LED blinking every second. Debugging ========= Debugging using OpenOCD ----------------------- You can debug an application in the usual way using OpenOCD. Here is an example for the :zephyr:code-sample:`blinky` application. .. zephyr-app-commands:: :zephyr-app: samples/basic/blinky :board: nucleo_wba52cg :maybe-skip-config: :goals: debug Debugging using STM32CubeIDE ---------------------------- You can debug an application using a STM32WBA compatible version of STM32CubeIDE. For that: - Create an empty STM32WBA project by going to File > New > STM32 project - Select your MCU, click Next, and select an Empty project. - Right click on your project name, select Debug as > Debug configurations - In the new window, create a new target in STM32 Cortex-M C/C++ Application - Select the new target and enter the path to zephyr.elf file in the C/C++ Application field - Check Disable auto build - Run debug .. _Nucleo WBA52CG website: https://www.st.com/en/evaluation-tools/nucleo-wba52cg.html .. _STM32WBA52CG on www.st.com: https://www.st.com/en/microcontrollers-microprocessors/stm32wba52cg.html .. _STM32WBA52CG datasheet: https://www.st.com/resource/en/datasheet/stm32wba52cg.pdf .. _STM32WBA52CG reference manual: https://www.st.com/resource/en/reference_manual/rm0493-multiprotocol-wireless-bluetooth-lowenergy-armbased-32bit-mcu-stmicroelectronics.pdf .. _OpenOCD official Github mirror: https://github.com/openocd-org/openocd/commit/870769b0ba9f4dae6ada9d8b1a40d75bd83aaa06