This is an old revision of the document!


NUCLEO-WB15CC

wb15cc.jpg btapp.jpg

This board contains a dual core processor with a Bluetooth radio.

The primary processor is for the user application and the secondary processor runs a firmware blob to control the radio.

It's not possible to utilise the radio directly since there are no docs for that.

WARNING: There is an option byte called ESE on this board, it you disable it the board will refuse to operate (untested).

Firmware upgrade services

FUS is used to install the software stack on the co-pro.

The STM32CubeProgrammer desktop application provides a FUS page where the you can `Read FUS infos'.

The factory default `infos' are as follows.

InfoValue
FUS State FUS_IDLE
FUS Status FUS_NO_ERROR
FUS Version v1.2.20
Stack Version ——
FUS Operator v3.1.0

If the FUS version reads all zeros you must `Start FUS' and try again.

NB This process appears to erase the user firmware on the device to operate.

Firmware upgrade blobs

Here is the list of blobs for V1.18.0 / 30-Oct-2023

Wireless Coprocessor Binarystm32wb1x(320K)Version
stm32wb1x_BLE_HCILayer_extended_fw.bin 0x0802D000V1.18.0
stm32wb1x_BLE_HCILayer_fw.bin 0x08032000V1.18.0
stm32wb1x_BLE_HCI_AdvScan_fw.bin 0x0803D000V1.18.0
stm32wb1x_BLE_LLD_fw.bin 0x0803F800V1.18.0
stm32wb1x_BLE_Stack_full_extended_fw.bin0x08018800V1.18.0
stm32wb1x_BLE_Stack_full_fw.bin 0x08021000V1.18.0
stm32wb1x_BLE_Stack_light_fw.bin 0x08029000V1.18.0
stm32wb1x_Safeboot_fw.bin0x08044000V2.0.0

Mostly these are bluetooth blobs and the final blob is used to reset the option bytes.

The Android app demos work with stm32wb1x_BLE_Stack_full_fw.bin so probably best to stick with that one.

Upgrade procedure

The following procedure was followed from the docs and it appears to work correctly once a demo hex file is also loaded.

Fetch blobs

mkdir -p /mnt/c/ST
cd /mnt/c/ST
wget "https://github.com/STMicroelectronics/STM32CubeWB/archive/refs/heads/master.zip"
unzip STM32CubeWB-master.zip

This upgrades firmware to stm32wb1x_BLE_Stack_full_fw.bin

Browse to

/mnt/c/ST/STM32CubeWB/tree/master/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB1x

Select

stm32wb1x_BLE_Stack_full_fw.bin

It should say STACKV 1.18.0

Enter start address from table

0x08021000

Now press firmware upgrade.

Demo firmware

To program the device with a user application use the command line utility not the desktop app.

A few demos exist for the the Android app named “ST BLE Sensor”

P2P server demo
Program
"/mnt/c/Program Files/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/STM32_Programmer_CLI.exe" -c port=SWD ap=0 -q -w BLE_p2pServer_reference.hex -v -hardRst

The hex file can be found in the Applications directory for the board along with the blobs downloaded above.

Console

Connecting a console via ST-LINK show the following dialog when booting, connecting and turning the blue led on and off.

$ picocom --imap lfcrlf --quiet -b 115200 /dev/ttyS12
Wireless Firmware version 1.18.0
Wireless Firmware build 3
FUS version 1.2.2
>>== SHCI_SUB_EVT_CODE_READY
>>== WIRELESS_FW_RUNNING
>>== DBGMCU_GetRevisionID= 2001
>>== DBGMCU_GetDeviceID= 494
  Success: SHCI_C2_BLE_Init command
==>> Start Ble_Hci_Gap_Gatt_Init function
  Success: hci_reset command
  Success: aci_hal_write_config_data command - CONFIG_DATA_PUBADDR_OFFSET
  Public Bluetooth Address: 00:80:e1:22:f9:7c
  Success: aci_hal_write_config_data command - CONFIG_DATA_IR_OFFSET
  Success: aci_hal_write_config_data command - CONFIG_DATA_ER_OFFSET
  Success: aci_hal_set_tx_power_level command
  Success: aci_gatt_init command
  Success: aci_gap_init command
  Success: hci_le_set_default_phy command
  Success: aci_gap_set_io_capability command
  Success: aci_gap_set_authentication_requirement command
  Success: aci_gap_configure_whitelist command
==>> End Ble_Hci_Gap_Gatt_Init function
  Success: aci_hal_set_radio_activity_mask command
LED BLUE OFF
==>> aci_gap_set_discoverable - Success
==>> Success: Start Fast Advertising
>>== HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE - Connection handle: 0x801
     - Connection established with Central: @:45:38:ac:a7:19:ac
     - Connection Interval:   50.00 ms
     - Connection latency:    0
     - Supervision Timeout: 5000 ms
>>== HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE
     - Connection Interval:   7.50 ms
     - Connection latency:    0
     - Supervision Timeout: 5000 ms
>>== HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE
     - Connection Interval:   50.00 ms
     - Connection latency:    0
     - Supervision Timeout: 5000 ms
-- P2P APPLICATION SERVER : NOTIFICATION ENABLED

-- P2P APPLICATION SERVER  : INFORM CLIENT BUTTON 1 PUSHED

-- GATT : LED CONFIGURATION RECEIVED
-- P2P APPLICATION SERVER 1 : LED1 ON

-- GATT : LED CONFIGURATION RECEIVED
-- P2P APPLICATION SERVER 1 : LED1 OFF
GATTtool
$ gatttool -b 00:80:E1:22:F9:7C -I
[00:80:E1:22:F9:7C][LE]> connect
Attempting to connect to 00:80:E1:22:F9:7C
Connection successful
[00:80:E1:22:F9:7C][LE]> primary
attr handle: 0x0001, end grp handle: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0005, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000c, end grp handle: 0x0011 uuid: 0000fe40-cc7a-482a-984a-7f2ed5b3e58f
[00:80:E1:22:F9:7C][LE]> characteristics 0x0001 0x0004
handle: 0x0002, char properties: 0x20, char value handle: 0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb
[00:80:E1:22:F9:7C][LE]> characteristics 0x0005 0x000b
handle: 0x0006, char properties: 0x0a, char value handle: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0008, char properties: 0x02, char value handle: 0x0009, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x000a, char properties: 0x02, char value handle: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb
[00:80:E1:22:F9:7C][LE]> characteristics 0x000c 0x0011
handle: 0x000d, char properties: 0x06, char value handle: 0x000e, uuid: 0000fe41-8e22-4541-9d4c-21edae82ed19
handle: 0x000f, char properties: 0x10, char value handle: 0x0010, uuid: 0000fe42-8e22-4541-9d4c-21edae82ed19
[00:80:E1:22:F9:7C][LE]>

The UUID “0000fe40-cc7a-482a-984a-7f2ed5b3e58f” is used to communicate with the p2pServer STM32_WPAN application firmware.

The handles that are known to operate p2pServer are 0x000E and 0x0011

Handle 0x0011 turns button notification on and off and 0x000E is the blue LED.

For example, to turn on the LED:

char-write-cmd 0x000E 0x01

The console log was

-- GATT : LED CONFIGURATION RECEIVED
-- P2P APPLICATION SERVER  : LED1 ON

NB Whether the above works or not appears to be inconsistent.

Resources

This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information