STM32WB BLE Hardware Setup

Revision as of 11:37, 8 December 2021 by Registered User (→‎Application installation)
Under construction.png Coming soon

Click here for BLE overview

1. STM32WB Dual Core

The STM32WB combines a well-know ARM Cortex-M4 for the application, plus, a 2.4 GHz radio subsystem and a ARM Cortex-M0+ processor running the Firmware Upgrade Service and the Wireless Stack .

STM32WB Dual Core


All the code running on ARM Cortex-M0+ (CPU2) is delivered as encrypted binary and it is necessary to upgrade the wireless stack before developing a project on the application side.

  • Black box for customer perspective

All the code running on ARM Cortex-M4 (CPU1) is delivered as source code.
The STM32WB will be pre-loaded with so-called Root Security System (FUS) firmware necessary to authenticate the selected Wireless stack (binary encrypted format) loaded by the customer on st.com.

STM32WB memory mapping



Cortex-M0+ security protects upper parts of Flash and SRAM2 memories. Size of each areas are automatically set during wireless stack install or update.

  • Secure Flash Start Address (SFSA) is the lower boundary of protected Flash memory. It is aligned on 4KBytes(WB5x) or 2KBytes(WB1x) granularity.
  • Secure Backup Ram Start Address (SBRSA) and Secure Non-Backup Ram Start Address (SNBRSA) are respective lower address of protected parts of SRAM2a and SRAM2b memories. Size can be set with a granularity of 1KBytes.

However settings of these option bytes are under the responsibility of FUS. They are set during a first install or an update of the wireless stack. They cannot be modified by the user.


This wiki page contains information to help users how to use STM32Cubeprogrammer[1] to upgrade the secure area of the STM32WB.

2. Hardware Platform Configuration

2.1. P-NUCLEO-WB55[2] and STM32WB5MM-DK Discovery kit[3]

2.1.1. Boards and ST-LINK USB cable connections

Nucleo Discovery Kit


The USB cable from the PC is used to power and interact with the STM32.

3. FUS and Wireless Stack Update

Firmware Upgade Services (FUS) and Bluetooth® Low Energy Stack can be updated using STM32CubeProgrammer software[1]
Regarding FUS, more information can be found on the dedicated wiki page or within the Firmware Upgrade Services for STM32WB series Application Note[4].

3.1. How to Update the FUS

FUS (firmware upgrade services) is a firmware running on STM32WB Cortex®-M0+ and offering following features:

  1. Install, upgrade or delete STM32WB Cortex®-M0+ wireless stack
  2. FUS self-upgrade
  3. Customer authentication key management
  4. User key management
  5. Communication with Cortex®-M4 (user code or bootloader)


Below are described the different steps to Update the FUS of P-NUCLEO-WB55 and STM32WB5MM-DK Discovery platforms.
Connect your platform using STM32Cubeprogrammer[1].

CubeProgrammer: connection

3.1.1. Start FUS

When connected, go to Firmware Upgrade Services interface, and start the actual FUS, clicking on the associated button.

CubeProgrammer: start FUS


Warning white.png Warning
If an error occurs while starting the FUS. Reconnect the board and restart the FUS.


Once the FUS is correctly started, the following logs should be visible on CubeProgrammer logs interface.

CubeProgrammer: FUS started logs

3.1.2. Read FUS

Once the FUS is started read its value.

CubeProgrammer: read FUS

3.1.3. Update FUS

Update FUS with latest version.
The latest version of the FUS can be found in STM32CubeWB MCU Package[5].

Check the Releases Notes to know what is the latest FUS version and the FUS Start Address.

FUS information


If the FUS version of your platform is different than the version specified in Release Notes, proceed to FUS update by following the below steps:

- If the platform FUS version is 0.5.3, use the binary dedicated:
STM32Cube_FW_WB_V[...]\Projects\STM32WB_Copro_Wireless_Binaries\STM32WB5x\stm32wb5x_FUS_fw_for_fus_0_5_3.bin
.

CubeProgrammer: FUS 0.5.3


- If the platform FUS version is different from 0.5.3, then use the other binary: STM32Cube_FW_WB_V[...]\Projects\STM32WB_Copro_Wireless_Binaries\STM32WB5x\stm32wb5x_FUS_fw.bin
.

Click on Firmware Upgrade.

CubeProgrammer: update FUS


A popup occurs to confirm the correct upgrade.

3.1.4. Check new FUS version

Check the new FUS version by clicking on Read FUS info button.

CubeProgrammer: read new FUS

3.2. How to update the BLE Wireless Stack

The BLE Stack can be updated on the same way as the FUS.

Firstly, check the start address of the stack in the Release Notes.

Stack start address


Select the type of stack to be loaded in STM32CubeWB package[5].
For P-NUCLEO-WB55 and STM32WB5MM-DK Discovery platforms, the BLE stack recommended is: STM32Cube_FW_WB_V[...]\Projects\STM32WB_Copro_Wireless_Binaries\STM32WB5x\stm32wb5x_BLE_Stack_full_fw.bin.

Check First Install checkbox if it is the first time you install the stack on your platform.

CubeProgrammer: stack installation

3.3. How to check Bluetooth LE Application is up and running

To ensure FUS and BLE stask are fully fonctional, it is necessary to load an application on the CM4 processor. The STM32CubeWB package[5] provides different applications
install a first ST BLE application on the platform.
Example project binaries are provided in STM32CubeWB package[5] for Nucleo board:
STM32Cube_FW_WB_V[...]\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\[...].

Below lines explain how to install and launch BLE_p2pServer project on Nucleo board.

Go to Erasing & programming interface.
Select the path to the application binary, for example:
STM32Cube_FW_WB_V[...]\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_p2pServer\Binary\BLE_p2pServer_reference.hex.
Then, click on Start Programming button.

CubeProgrammer: install application


One the application correctly flashed on the platform, open a terminal (see UART Interface setup page) and reset the platform.

At this point the FUS and BLE Stack are correctly installed on your platforms, BLE application as should display the FUS and BLE stack version on terminal logs:

application startup logs

3.4. UART Interface

The board is connected to a PC via a USB connection. Use any convenient software terminal to open the serial communication port of the PC to check the messages from the board. Select your Serial port and setup your connection as follow (example done with Tera Term software).

Set a new serial connection to the ST platform:

Tera Term setup (1/2)

Setup your serial connection as below:

Tera Term setup (2/2)

Once the board is connected and the terminal window setup, press the reset button of the board. The following messages are printed to the virtual COM window when the firmware starts successfully:

Terminal logs at startup

4. Related Video

Further information can be found on the following videos:

pc videol.png

Getting Started: Stack loading

pc videol.png

Getting Started: STM32WB USB Dongle

pc videol.png

Stack and FUS Update over USB bootloader

5. Going Further

6. References