Get ready for the STM32 Summit 2026 | Online, November 3
Ask questions and discuss STM32 wireless solutions and their implementation for running Bluetooth LE, Zigbee, LoRaWAN applications.
Most recent activity
Hi.I'm working on stm32wb for some time, handling CPU2 updates of BLE stack application.Lately, version 1.23 was published with new FUS version, so I tried updating it with my application running on user flash. I searched for the magic word but I found something strange, empty word in the middle of the footer:I compared it to previous version and it appear there also.As described in AN5185, magic word is placed after FW version, so what am I missing?Any help is welcome.Thanks in advance.
Hello everyone,I’m working with an STM32WB55 microcontroller with BLE stack. I use also low-power modes in my app. Before entering a low-power mode, I set an RTC ALARM_A to wake the system up at a specific time. The device then enters either Sleep or STOP2 mode with the RTC enabled.However, I’m noticing an issue where, when in these low-power modes, the RTC ALARM_A does not seem to wake the device as expected. The timing appears to freeze or behave unpredictably, and the alarm sometimes triggers late or not at all.Here is the output just before entering sleep mode with the configured alarm:Current time vs Alarm RTC Settings:(PREDIV_S = maximal SubSec = 32000)| Field | Current (Cur) | Alarm (Alm) ||------------|------------|--------|| SubSec | 7234 | 6594|| Sec | 21 | 21 || Min | 0 | 0 || Hr
Hi,I want to integrate on the same PCB both a STM32WB5MMGH6TR and a STM32WL5MOC. Are there any issue in terms of RF interference? Are there any shielding recommendations to avoid problems while both modules are transmitting?ThanksMatteo
We have developed an IoT sensor using the STM32WLE5JC LoRa module. It is a device we expect to reboot a few times (when necessary). It was discovered that when a downlink command (to reboot the device) is sent, the device reboot, but then it hangs during the join process.After much debugging, it looks like NVM context data is corrupted. Then I disabled context management by setting the flag CONTEXT_MANAGEMENT_ENABLED to 0. . After this, the device consistently joins after a reboot. We can also see that keys are cleared and the join process is fresh each time.Additional context: According to lorawan_conf.h, where CONTEXT_MANAGEMENT_ENABLED is defined, the comments state that "context management must be enabled for LoRaWAN 1.0.4 or later ". We ar currently on LoRaWAN version 1.0.3 and don't expect that to change for the foreseeable future.Question - Are there any critical concerns or downsides to disabling context management?
Hello everyone,I’m working with an STM32WLE5CCU6 and I have implemented a bootloader that should be able to start applications stored in two flash regions (“slots”).Bootloader at 0x08000000Slot 1 (FW1) at 0x08005000Slot 2 (FW2) at 0x08015000Applications are built with IAR EWARM using ROPI (Read-Only Position Independent).The bootloader uses the following jump code:__attribute__((naked)) static void jump_to_app(uint32_t pc, uint32_t sp) { __asm volatile("msr msp, r1 \n" /* load r1 into MSP */ "bx r0 \n" /* branch to the address at r0 */ ); } #define VECTOR_TABLE_SIZE 0x138 static void start_app(uint32_t *fw_addr) { // Remap 0x0000 (NVIC table location) to SRAM1 SYSCFG->MEMRMP = 0b011; const uint32_t *app_code = fw_addr; volatile uint32_t *sram = (uint32_t *)0x00000000; // Copy SP (no offset) sram[0] = app_code[0]; // Copy PC (with offset) sram[1] = app_code[1] + (uint32_t)fw_addr; // Copy the rest of the vector table for (int i = 2; i < VECTOR_TABLE_SIZE / 4; ++i) {
I'm developing a Sigfox product using the STM32wlxx series.For testing purposes, I'm trying to provision Sigfox using the STM32 programmer,but I can't log in using the link https://my.st.com/cas/login?service=https://my.st.com/sfxp.
Hello,I wrote a custom bootloader (that loads firmware image from an external flash) for a device that was using an STM32WL55CCU6. Now I want to use the same bootloader on a device with a similar uC, the STM32WL5MOCH6TR.The bootloader works correctly up and until the point where it needs to jump to the main application. The code that I am using is this:static void jump_to_user_app(void) { typedef void (*FUNC_PTR_T)(void); FUNC_PTR_T jumpTo = (FUNC_PTR_T)(*(__IO uint32_t *)(FLASH_INT_APP_START + 4U)); // de-initialize the used peripherals HAL_SPI_MspDeInit(SPI_BUS); // disable interrupts, set the stack pointer and ... fingers crossed __disable_irq(); __set_MSP(*((__IO uint32_t *)FLASH_INT_APP_START)); jumpTo(); }I checked the registers at the moment of the jump, and they are correct. My application was compiled with the correct vector table offset, and it runs correctly otherwise.But when the bootloader jumps to the application, it crashes. And looking at the stack,
I'm currently tinkering with the BLE_Ota example for the P-NUCLEO-WB55.Nucleo and created a debug build spec for it. The default linker script is /* Specify the memory areas */ MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 28K RAM1 (xrw) : ORIGIN = 0x20000008, LENGTH = 0x2FFF8 RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10K }but the image built with the debug build spec is larger, so the length of the flash area to use must be adjusted: /* Specify the memory areas */ MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 32K RAM1 (xrw) : ORIGIN = 0x20000008, LENGTH = 0x2FFF8 RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10K } that made me wonder, is it possible to define constants in the build specs such that conditional statements (e.g using the DEFINED statement) inside the .ld file can be used? something like FLASH (rx) : ORIGIN = 0x08000000, LENGTH = DEFINED(DEBUG) ? 32K : 28K
Hi everyone, I'm experiencing abnormal power consumption in STOP2 mode with my custom board featuring the STM32WB5MMGH module. According to the datasheet, the power consumption in STOP2 mode should be between 2 and 3 µA. However, my board is drawing around 20 µA. After some troubleshooting, I've narrowed down the issue to the LCD module: when I disable it, the power consumption drops to the expected values. Here's my current LCD module configuration: /* USER CODE END LCD_Init 1 */ hlcd.Instance = LCD; hlcd.Init.Prescaler = LCD_PRESCALER_2; hlcd.Init.Divider = LCD_DIVIDER_27; hlcd.Init.Duty = LCD_DUTY_1_8; hlcd.Init.Bias = LCD_BIAS_1_4; hlcd.Init.VoltageSource = LCD_VOLTAGESOURCE_INTERNAL; hlcd.Init.Contrast = LCD_CONTRASTLEVEL_3; hlcd.Init.DeadTime = LCD_DEADTIME_0; hlcd.Init.PulseOnDuration = LCD_PULSEONDURATION_1; hlcd.Init.MuxSegment = LCD_MUXSEGMENT_DISABLE; hlcd.Init.BlinkMode = LCD_BLINKMODE_OFF; hlcd.Init.BlinkFrequency = LCD_BLINKFREQUENCY_DIV16; hlcd.Init.HighDri
Hello Together,I would like to try out the STM32CubeMonitor-RF (V2.15.0) with the NUCLEO-WBA55CG board. I downloaded the stm32cubewba mcu package (V1.7.0) and flashed the .bin file from the BLE_TransparentMode example to the board with the STMCubeProgrammer (V2.20.0)(start address: 0x08000000).When starting the STM32CubeMonitor-RF, however, the message "Device under Test not responding" appears. I then loaded the project with the STM IDE (V1.19.0) and selected the BLE_TransparentMode project for my board via the Example Selector when creating a new STM32 project.The same error message appears on the RF Monitor. Do I have to integrate the BLE stack separately?Where can I find the BLE stack?I have noticed that the loaded project structure in the IDE differs from the one from the ST Wiki for the transparent mode. The file "ll_sys_hclk_client.c" and the two libraries "LinkLayer_BLE_Full_lib.a" and "stm32wba_ble_stack_full.a" are missing in the middleware. Thanks for the
We need some help with cable replacement feature. Our project using WB1M as a client device, sharing data over UART. Android application must be server. STBLESensor_Android source code not include any sample code with Cable replacement feature. Were we can get one?
Hello, @STTwo-32 I am working with the NUCLEO-WB05KZ (MB1801 + MB2032B target). I received two boards from the ST eStore. One board works fine: STM32CubeProgrammer detects the target, and I can erase/flash/debug with no issue. The second board initially connected once, but after flashing a BLE firmware example via STM32CubeIDE, the target MCU no longer responds. Symptoms: ST-LINK is enumerated correctly in Windows (Virtual COM Port visible, target voltage ≈ 3.28 V). In STM32CubeProgrammer: “No STM32 target found” or “ST-LINK error (DEV_TARGET_CMD_ERR)” Cannot connect even when selecting SWD + Hardware reset, lowering SWD frequency, or holding RESET while connecting. Tried with BOOT0 jumper set to “Bootloader” and with “User Flash,” no success. ST-LINK firmware is up to date. Jumpers are in default positions: JP1=5V_STLK, JP2=ON, SW1=3V3. What I already tried: Multiple USB cables and ports. “Connect under reset” procedure (RESET held while connec
Hello everyone,I am working with a custom board based on the STM32WB5MMG. On the very first attempt, the FUS firmware update works fine and completes successfully. The problem starts when I try to update the FUS again. Once it has been updated for the first time, any further attempt to re-update the FUS fails.If I delete the firmware and try to flash it again, STM32CubeProgrammer gives the error Error: failed to download image!Even after full chip erase, when I try to re-install the FUS firmware, I end up with the same error.For reference, I am using stm32wb5x_FUS_fw.bin V1.2.0 with STM32CubeProgrammer, I am programming the device via ST-LINK.Has anyone else experienced this with STM32WB5MMG?Any advice or suggestions would be greatly appreciated.Thanks in advance.
Hey,I am using the stm32wb55rev6 boards as the client and server to send and receive the data.i am able to establish the connection between the server and the client.How can i be able to send the data from the server to the client using the usart1.Do i need to create a new task in the sequencer using the util _regtask or is there any document related to that?
Hello,I am planning to develop a small low-power wearable device using the STM32WB05KNV6TR.My goal is to use the STM32WB05KNV6TR as a standalone MCU while implementing BLE communication.From what I have found, this IC seems to be often used only for BLE communication, so I would like to clarify a few points:Can the STM32WB05KNV6TR be used as an MCU that runs logic using peripherals such as ADC and SPI, while also handling BLE communication at the same time?If it is possible, which development board would be suitable for testing the STM32WB05KNV6TR before hardware development?I purchased the NUCLEO-WB05KZ board, but it seems to be in a module form (around 20x10 mm in size) instead of just the IC. Is this normal, or did I purchase the wrong version?On the other hand, the IC on the STM32WB5MM-DK Discovery Kit looks like an appropriate size. Would this board be a good option to use?Thank you in advance for your support.
Hello, I am using p-nucleo-wb55. I have a code with an RTC alarm interrupt triggered every 5 seconds. In the ISR, I set a sequencer task that sends a message via BLE. I have enabled the LPM as I want the MCU to enter sleep mode while it isn't working and only wakeup with the RTC alarm. I realized that the MCU doesn't stay in the sleep mode and when I debug, I realized that it wakes up so fast as the IPCC RX Interrupt is triggered continuously with high frequency.How can I control this, knowing that I don't need the MCU to do any task through those 5 seconds, I just want it to sleep and wakeup only after 5 seconds. Thanks in advance
Good day I am trying to run the Lorawan FUOTA demo on my nucleo-wl55jc1 and havinf trouble. Once i build files in the recommended order and they build successfully, i am getting this issue: struggling to find out what i need to change in order for it to work. I am using cubeIDE version 1.19.0. Please assist as we plan into going into production very soon on our own PCB board.
CubeIDE, P-Nucleo STM32WB55 I have a BLE project that works, it sends data from 2 temperature sensors & 2 accelerometers (x, y & z for each)Within Cube I copied the project then pasted with a new name.Added some code to take 1000 samples of the accelerometer data and calculate the mean for each axis on each sensor. That's the only addition to the code, everything else is exactly the same.Compiles & gets on the board with no issues.Check the serial debug, all senors up & running, averaging is working just fineThe device just doesn't show up when scanning BLE devices. Revert to previous project & there it is advertising as it should. reflash.... nope no such device.What's going on there?
I've tested the OOB function using 2 BLE MCU WBA54,case 1, one provide the OOB data then send to the other case 2, both proved the OOB data then send to each other 2 cases are OK, pairing success and bonded.OOB data provide use:ret = aci_gap_set_oob_data(0x00, 0x00, 0x00, 0x00, 0x00, 0x00);ret = aci_gap_get_oob_data(0x01, &addtype, address, &len, random);ret = aci_gap_get_oob_data(0x02, &addtype, address, &len, confirm);OOB data set use:ret = aci_gap_set_oob_data(0x01, addtype, address, 0x01, 16, random);ret = aci_gap_set_oob_data(0x01, addtype, address, 0x02, 16, confirm); There is a problem when I want to use OOB pairing with IOS, for IOS cannot provide OOB data or force OOB pairing request, now the only possible way is WBA54 provide the OOB data and send to IOS and also force OOB pairing feature. But when WBA54 only provide OOB data, it seems that it cannot trigger the OOB in SMP pairing feature exchange.I've tested that the OOB f
I'm working with an STM32WB55 Nucleo board and encountering a strange issue. My project uses an SPI display and an I2C accelerometer, along with BLE.When the board is powered via the ST-Link/USB, everything works perfectly: the BLE functions, the onboard LEDs toggle, and both the SPI display and I2C accelerometer work as expected.However, when I try to power the board from a Nordic Power Profiler Kit (PPK) and remove the jumpers as instructed to isolate the ST-Link (see attached image), the SPI display and I2C accelerometer stop working entirely. The BLE and LED toggling functions continue to work correctly, which is puzzling.Why would the peripherals fail in this specific power configuration, while the rest of the code continues to run? Any insights into what could be causing this are greatly appreciated.
Hello everyone,I am performing some tests over the NUCLEO-WBA65RI board, related to low power mode and BLE functionality.I managed to test the BLE_p2pserver example correctly and checked the current consume is about 500 μA on this case until it goes on low power mode and changes to 20 μA.The low power mode stays like that and we are not publishing unless B1 button is pushed.I was wondering if there is any document that explains how this is performed and to ask if it was possible to have the BLE stack publishing in low power mode(stop2mode) like it could be done in in the WB55 which is a dual core.Thanks in advance!
Hello STM32 Community,I'm working on a project using the STM32WB55RG microcontroller (specifically the P-NUCLEO-WB55 evaluation board) to implement a sleepy end device in a Zigbee network. The goal is to transmit data over Zigbee periodically and then enter shutdown mode, with the RTC serving as the wake-up source to minimize power consumption during sleep periods.Setup and Configuration:Hardware: P-NUCLEO-WB55 EVM based on STM32WB55RG.Functionality: The device wakes up from shutdown mode via RTC, enters active mode to perform Zigbee transmission, and then returns to shutdown.Clock Settings:Cortex-M4 core clock set to 32 MHz (default).Cortex-M0+ core clock also set to 32 MHz (matching the M4 frequency).Note on M0+ Clock: We attempted to reduce the M0+ clock frequency for potential power savings, but the IOC (STM32CubeMX configuration tool) does not allow this adjustment – it enforces the same frequency as the M4.Issue Observed:When the device wakes up from RTC-triggered shutdown and en
Hi all,I'm trying to create a custom bootloader with openbl on rak3172 sip buil with stm32wl, so Ive used this repos here. I've just ipdate the main like this#define APP_ADDRESS 0x08008000U HAL_PWR_EnableBkUpAccess(); __HAL_RCC_RTC_ENABLE(); init_led(); if(get_bootloader_flag() == BOOTLOADER_MAGIC){ set_led_bootloader(); OpenBootloader_Init(); while (1) { OpenBootloader_ProtocolDetection(); } }else{ set_led(); jump_to_app(APP_ADDRESS); } void jump_to_app(uint32_t address) { uint32_t i=0; void (*SysMemBootJump)(void); __disable_irq(); /* Disable Systick timer */ SysTick->CTRL = 0; /* Set the clock to the default state */ HAL_RCC_DeInit(); /* Clear Interrupt Enable Register & Interrupt Pending Register */ for (i=0;i<5;i++) { NVIC->ICER[i]=0xFFFFFFFF; NVIC->ICPR[i]=0xFFFFFFFF; } /* Re-enable all interrupts */ __enable_irq(); /* Set up the jump to boot loader address + 4 */ SysMemBootJump = (void (*)(void)) (*((uint
Hi everyone,I’m working on a product using the STM32WB55 with BLE and Zigbee static concurrency, and it’s now moving into the FCC certification stage.I’ve come across the Phy_802_15_4_Cli application along with the wireless coprocessor firmware (stm32wb5x_Phy_802_15_4_fw.bin), and I want to confirm whether it covers the requirements for test mode.My requirements are:1. Continuous transmission (both unmodulated and modulated) on a single channel2. Channel selection (e.g., 2402, 2440, 2480 MHz for low, mid, high)3. Maximum duty cycle (100%) transmission4. Fixed transmit power at the maximum rated level5. Option to enable hopping/modulation patterns (for BLE)From what I’ve seen, the Phy_802_15_4_Cli application seems to provide almost everything except hopping. Would this application be sufficient for FCC test cases?Also, has anyone here used other applications or tools for FCC or similar certification testing?Thank You.
Dear ST Community, I'm developing a Zigbee sensor node using an STM32WB55RG Nucleo board as an end device that should join my existing Zigbee network (Raspberry Pi 4 + CC2531 running Zigbee2MQTT). Despite successful build and flash operations, my STM32WB55 won't join the network, and I'm not seeing any LED feedback despite setting CFG_FULL_LOW_POWER=0. My SetupCoordinator: Raspberry Pi 4 + CC2531 (Zigbee2MQTT)PAN ID: 46212 (0xB484)Channel: 15Network Key: [117, 131, 80, 245, 206, 246, 76, 112, 61, 246, 117, 178, 116, 246, 135, 64]End Device: STM32WB55RG NucleoSTM32CubeIDE: 1.13.0STM32CubeWB: 1.23.0Wireless Coprocessor Firmware: STM32WB5x_BLE_Zigbee_RFD_dynamic_fw.bin (flashed to M0+ core)Application Example: BLE_Zigbee_Dyn_SED (chosen specifically as it's designed to join existing networks as an end device) Steps TakenFlashed STM32WB5x_BLE_Zigbee_RFD_dynamic_fw.bin to M0+ core using STM32CubeProgrammerImported BLE_Zigbee_Dyn_SED project into STM32CubeIDESet CFG_FULL_LOW_P
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.