cancel
Showing results for 
Search instead for 
Did you mean: 

I am trying to migrate the BLE P2P Server app, for the STM32WB55 to the STM32WB5M and I need the .svd file. However, no matter where I look, STM32WB5M is always missing from the list. I would also love to find an updated STM32 migration video tutorial.

KHall.1
Associate II

Hello all! I am a recent graduate in Computer Engineering and I am taking my very first stab at firmware development. However, the board my customer picked, is proving to be the most annoying from the STM32WB series (regarding support, examples, tutorials, videos, etc.). I was moving along nicely on this board, until I was told to pass data over BLE (I can on UART). I have been grinding away on this guy for a week solid and I am at the point I am open to any outside advice.

(Note: The STM32WB5M specific BVLPeripheral works perfectly for me. I can send audio both ways, but I don't need to send audio and that project is full of stuff we don't need (mainly Opus). My Senior CpE suggested using the STM32WB55's BLE P2P Server example and modifying it for the STM32WB5M.)

Main question: Why does it seem impossible to find the .svd file for the STM32WB5MM (or STM32WB5xx)? It's ridiculous this board is not listed on the main ARM CMSIS website: https://developer.arm.com/tools-and-software/embedded/cmsis/cmsis-search

I have looked where suggested in multiple ST threads on here. I have downloaded and then searched all related ST website downloads, checked the official CMSIS site (couldn't find that specific board, but seemed like EVERY other board was there) and I have dug through most of the files on my computer, all with no luck.

Are we meant to use a different .svd file with the STM32WB5MM, such as the STM32WB55? If anyone knows of a good tutorial/guide that is focused on the STM32WB5M, I'd love to see one. I have most of the ST documents, but I can't find any comprehensive documents focused on this board.

The reason I am asking, is because I'd like to figure out how to select my board in CubeIDE 1.6.1 and without the .svd file, I have no idea how to do it.

I am so glad my customer picked this board, rather than the STM32WB55.... The support & ease of use differences between these two devices are huge.

This lack of specific (comprehensive) support docs is what makes me wonder what the real differences are between those two boards (the only specific docs are ~40 pages). Most of the STM32WB5M documents you find on here, are written for the STM32WB55. I have compared what I could find on them and the core hardware seems to be identical. It's really just the LED, Switch and LCD that have differences in their port/pin assignments. One issue comes when you need to re-assign these pins and ports; you can't just drop the STM32WB5M files into a STM32WB55 program (as the migration tutorial shows). There are a bunch of reasons why, but the most basic being the define variables are named differently (and you'll break everything).

Even the structure of the SPI defines is problematic. I know I am not the only person who has tried to do this, I would REALLY appreciate some assistance here. Currently, I can connect to the BLE P2P Server through the ST Sensor app on my phone and I can see the RSSI value changing, however I can't get the alarm to work. I know why the LED switch doesn't work (PWM LED on STM32WB5M vs. 3x LEDs on STM32WB55), but I really thought the switch alarms would, since I modified their GPIO port/pins to match the correct board in the stm32wbxx_nucleo.h file.

Lastly, is this the most up to date tutorial on migrating an application between two STM32 boards? Is there one focused on STM32WB? https://www.youtube.com/watch?v=YU4jivUZJm8

Thanks in advance for any help/advice!

My current setup for the STM32WB5M buttons, inside the STM32WB55's main definition header.

#define BUTTONn                                 3
 
/**
 * @brief Key push-buttons
 */
#define BUTTON_SW1_PIN                          GPIO_PIN_12
#define BUTTON_SW1_GPIO_PORT                    GPIOC
#define BUTTON_SW1_GPIO_CLK_ENABLE()            __HAL_RCC_GPIOC_CLK_ENABLE()
#define BUTTON_SW1_GPIO_CLK_DISABLE()           __HAL_RCC_GPIOC_CLK_DISABLE()
#define BUTTON_SW1_EXTI_LINE                    EXTI_LINE_12
#ifdef CORE_CM0PLUS
#define BUTTON_SW1_EXTI_IRQn                    EXTI15_4_IRQn
#else
#define BUTTON_SW1_EXTI_IRQn                    EXTI15_10_IRQn
#endif
 
#define BUTTON_SW2_PIN                          GPIO_PIN_13
#define BUTTON_SW2_GPIO_PORT                    GPIOC
#define BUTTON_SW2_GPIO_CLK_ENABLE()            __HAL_RCC_GPIOC_CLK_ENABLE()
#define BUTTON_SW2_GPIO_CLK_DISABLE()           __HAL_RCC_GPIOC_CLK_DISABLE()
#define BUTTON_SW2_EXTI_LINE                    EXTI_LINE_13
#ifdef CORE_CM0PLUS
#define BUTTON_SW2_EXTI_IRQn                    EXTI15_4_IRQn
#else
#define BUTTON_SW2_EXTI_IRQn                    EXTI15_10_IRQn
#endif
 
#define BUTTON_SW3_PIN                          GPIO_PIN_1
#define BUTTON_SW3_GPIO_PORT                    GPIOD
#define BUTTON_SW3_GPIO_CLK_ENABLE()            __HAL_RCC_GPIOD_CLK_ENABLE()
#define BUTTON_SW3_GPIO_CLK_DISABLE()           __HAL_RCC_GPIOD_CLK_DISABLE()
#define BUTTON_SW3_EXTI_LINE                    GPIO_PIN_1
#ifdef CORE_CM0PLUS
#define BUTTON_SW3_EXTI_IRQn                    EXTI1_0_IRQn
#else
#define BUTTON_SW3_EXTI_IRQn                    EXTI1_IRQn
#endif
 
#define BUTTONx_GPIO_CLK_ENABLE(__INDEX__)    do { if ((__INDEX__) == BUTTON_SW1) BUTTON_SW1_GPIO_CLK_ENABLE(); else \
                                              if ((__INDEX__) == BUTTON_SW2) BUTTON_SW2_GPIO_CLK_ENABLE(); else \
                                              if ((__INDEX__) == BUTTON_SW3) BUTTON_SW3_GPIO_CLK_ENABLE();} while(0)
 
#define BUTTONx_GPIO_CLK_DISABLE(__INDEX__)    do { if ((__INDEX__) == BUTTON_SW1) BUTTON_SW1_GPIO_CLK_DISABLE(); else \
                                              if ((__INDEX__) == BUTTON_SW2) BUTTON_SW2_GPIO_CLK_DISABLE(); else \
                                              if ((__INDEX__) == BUTTON_SW3) BUTTON_SW3_GPIO_CLK_DISABLE();} while(0)

2 REPLIES 2

That is just the basic websites where these boards are and I already said I tried these files. I downloaded most everything for the two boards and none of them have a .svd file in that is specific to the WB5MM or WB5xx, all I ever see is WB55.

I even searched all over the ST github and still no luck: https://github.com/search?p=1&q=org%3ASTMicroelectronics+CMSIS&type=Repositories

Can I use header files rather than a .svd? Based on how short it is, I'm thinking no.

https://github.com/STMicroelectronics/STM32CubeWB/tree/master/Drivers/CMSIS/Device/ST/STM32WBxx/Include

This is a small preview into what I've been trying for days.