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 everyone,I'm currently trying to flash firmware to a custom board with STM32WLE5CCU6 MCU using the onboard debugger of a NUCLEO-WL55JC1 development board. I'm running into multiple issues and would appreciate any help.Setup:Target MCU: STM32WLE5CCU6 (custom board)Debugger: Integrated ST-LINK on STM32WL55JC1 (used as programmer)Tools: STM32CubeIDE(Ver 1.15.1) and STM32CubeProgrammerIssue Summary:CubeProgrammer only connects at very low frequency (200 kHz SWD clock). Higher frequencies fail to detect the target. Even when connected, flashing consistently fails with different errors on both IDE and Cube programmer depending on the attempt.(in all modes). Errors observed in STM32CubeIDE:Spoiler (Highlight to read)Failed to execute MI command:load ...\LoRaWAN_End_Node.elfError message from debugger back end:Error finishing flash operationFailed to execute MI command:load ...\LoRaWAN_End_Node.elfError message from debugger back end:Error finishing flash operation4. Errors observed in
Hello,Based on the NVM example, after: ZbPersistNotifyRegister(zigbee_app_info.zb,APP_ZIGBEE_persist_notify_cb,NULL).What actions cause the device to enter the callback? Where can this information be found?Thanks,
Hello,I copied the logic from the NVM Zigbee examples. I notice that the end devices almost periodically calls the persistent data callback to save when I am sending sequential data sequences.However, this unfortunately causes the end device to sometimes miss the reception of Zigbee data, and in my case, does not call ZbZcl_custom_ls_ServerSendCommandRsp.The devices end up LOSING connection shortly after saving to persistent data.Is this intended, and are there any solutions?Thanks,
Hello,I am looking how to shorten the timeout and/or failure entering of the callback.I am using ZbZclClusterCommandReq(cluster, &req, callback, arg). I currently have my own ACK timeout implementation, however, the callback still is entered with either ZCL_STATUS_TIMEOUT or ZCL_STATUS_FAILURE. I noticed this may cause flooding-like effects and overload the network.Is there a way to shorten this timeout (to around 300ms instead of its default ~6s) so I can remove my ACK timeout implementation and just work with this? Is that recommended to do?Thanks,
Hi support, I’m currently working with a Nucleo-WB55RG board, and my goal is to perform a firmware update using an ESP32 as the host. The ESP32 is connected to the STM32 via USART1 (PA9 and PA10).The sequence followed is : 1. Connect to the bootloader2. Test the link with Get command3. Erase memory (mass erase)4. Write binary + read for checking data5. Go I’m encountering an issue when sending the Extended Erase command to the bootloader (3. Erase memory). I followed the documentation closely for both the hardware and protocol, as described in AN2606 (pattern 16) and AN3155. Here is my manipulations :=====================First step : activation and synchronization with the bootloader :0x7F sent0x79 received Then, Get command to check supported commands on the chip. Those are following : 0x00, 0x01, 0x02, 0x11, 0x21, 0x31, 0x44, 0x63, 0x73, 0x82, 0x92.-> So, this confirm that the uart interface and hardware setup are working correctly . When I send
I am using the BLE_p2p_Server_ext example on a stm32wba55cg and i want to use ADC_Channel_2 as a way of voltage measurements.My current setup:I use a new adc handle:ADCCTRL_Handle_t adc_channel2_handle = { .Uid = 2, .State = ADCCTRL_HANDLE_NOT_REG, .InitConf = { .ClockPrescaler = ADC_CLOCK_ASYNC_DIV1, .Resolution = ADC_RESOLUTION_12B, .DataAlign = ADC_DATAALIGN_RIGHT, .ScanConvMode = ADC_SCAN_DISABLE, .EOCSelection = ADC_EOC_SINGLE_CONV, .LowPowerAutoPowerOff = DISABLE, .LowPowerAutonomousDPD = ADC_LP_AUTONOMOUS_DPD_DISABLE, .LowPowerAutoWait = DISABLE, .ContinuousConvMode = DISABLE, .NbrOfConversion = 1, .ExternalTrigConv = ADC_SOFTWARE_START, .ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE, .DMAContinuousRequests = DISABLE, .TriggerFrequencyMode = ADC_TRIGGER_FREQ_LOW, .Overrun = ADC_OVR_DATA_OVERWRITTEN, .SamplingTimeCommon1 = ADC_SAMPLETIME_814CYCLES_5, .SamplingTimeCommon2 = ADC_SAMPLETIME_1CYCLE_5, .OversamplingMode = DISABLE, }, .ChannelConf =
In another thread:@vicrr wrote:The Cube LRWAN package you mentioned it not the latest one and has not been updated for years.We recommend you to use the STM32CubeWLSo what about platforms other than WL? Are they abandoned?@vicrr
Hi all,As part of a uni project we are developing a LoRaWAN Weather station project.We have free access (the team is operated on a limited budget) to a I-NUCLEO-LRWAN1 board. This appears to be a very good option as the board has all the integrated sensors required, and is compatible with Australian frequency.How good is the support and integration with current development tools, I see the suggested board on the datasheet is still currently sold (NUCLEO-L053R8). Does anyone have experience with this board, or can point in the direction of something more suitable?Thanks
Hello,I’m working with the X-NUCLEO-WB05KN1 shield and a STM32 Nucleo board.My goal is to make a simple demo: Toggle an LED on the board by sending a command from my smartphone. Display something on the smartphone when pressing the User button on the Nucleo.I understand that I need to update the shield with the BLE_Transparent_Mode_STM32WB05_location_essential firmware from X-CUBE-WB05N_V2.0.0.However: Which exact firmware binary should I flash for this purpose?Which smartphone application should I use to communicate with the board?Is nRF Connect sufficient or is there a recommended alternative? Thanks in advance for your help!
Hello,I'm working with the X-NUCLEO-WB05KN1 shield connected to a STM32 Nucleo board.My goal is to build a simple demo:Toggle an LED from a smartphone commandSend a notification to the smartphone when the User button is pressed.I would like to use STM32 BLE Toolbox as the smartphone application.Which firmware binary should I flash on the WB05 shield to ensure compatibility with STM32 BLE Toolbox?From what I’ve read, the BLE_TransparentMode_UART_with_Updater.hex firmware from X-CUBE-WB5N V2.0.0 seems suitable — can you confirm this, and indicate the exact file to flash?I can also flash : - BLE_TransparentMode_UART_for_Updater.bin- BLE_TransparentMode_UART_for_Updater_C_O.bin and BLE_TransparentMode_UART_with_Updater_C_O.hex- DTM_UART_WITH_UPDATER.bin and DTM_UART_WITH_UPDATER.hex- DTM_UART_WITH_UPDATER_CONTROLLER.bin and DTM_UART_WITH_UPDATER_CONTROLLER.hex Thanks in advance for your support!Best regards,Sheul
Hello, I’m currently working on a smart farming project and trying to interface a capacitive soil moisture sensor with my STM32 board. However, as a beginner in embedded systems, I’ve hit a few roadblocks. I’ve enrolled in a Udemy course and followed several YouTube tutorials, but I still haven’t managed to get reliable readings from the sensor. I would sincerely appreciate the opportunity to have a short online session with someone experienced who can help kick-start my progress and guide me in the right direction. Even a brief walkthrough would go a long way in helping me understand what I might be missing. If anyone is open to a quick one-on-one or can recommend a private tutor I’d be very grateful. Thank you in advance!
Hello,Context: New to stm and HAL. Creating a new dual-core STM32 project on a NUCLEO-WL55JC1 board. Starting from cubeMX generated code with basically only RTC initialized on Core M4. Using STM32CubeWL Firmware package v1.3.1 . M4 builds and loads good.Issue: M0 does not build and I get these errors and warnings:1. C:/Users/Person/Documents/STM32CubeIDE/workspace_LoRaWPC/noTomorrow/Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.c: In function 'HAL_UART_Transmit_IT':../../Drivers/CMSIS/Device/ST/STM32WLxx/Include/stm32wlxx.h:209:13: warning: implicit declaration of function '__LDREXW' [-Wimplicit-function-declaration]209 | val = __LDREXW((__IO uint32_t *)&(REG)) | (BIT); \| ^~~~~~~~C:/Users/Person/Documents/STM32CubeIDE/workspace_LoRaWPC/noTomorrow/Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.c:1373:7: note: in expansion of macro 'ATOMIC_SET_BIT'I get a similar warning for '__STREXW'2. Then 9 of these type errors:C:/Users/Person/Documents/STM32CubeIDE/workspace_LoRaWPC/
Hello all) To work with BLE I need to upload stm32wb5x_BLE_Stack_full_fw.bin with address 0x080CE000 via STM32CubeProgrammer It works as well, I did it many times, if check the box first boot for stack but I forgot (and not first time) to do that and now my BLE doesn't work on one of my devices I made full chip erase, reuploaded stake, removed stack, and installed again dozen times via STM32CubeProgrammer, I did all can via STM32CubeProgrammer (probably) but it doesn't work anymore. Why STM32WB so capricious in this situation? Does it exist any opportunity to erase the chip to factory settings with the stack as well, let's say a more hard option than provided in STM32CubeProgrammer ?
Similar problem to the U5 one reported here STM32CubeMX v6.13.0 generates broken CMake project... - STMicroelectronics CommunitySTM32CubeMX creates broken cmake files for the above Nucleo board. The template doesn't expand properly and the files are littered with {{sr:blah blah}} references.
Hello I have a nucleo wb05kz programmed with BLE_Power_Consumption example project (STM32Cube_FW_WB0_V1.1.0 package) and i want to measure the current consumption.Following the UM3343, I removed the JP1 and JP2 jumpers and connected my power supply (3.3V) to pin 2 of JP2. I placed a multimeter in series with the power supply to measure the current.The board seems to be working correctly (I can see the advertising using a second Nucleo as a P2P client), however, the current consumption is 2.3mA. There is certainly still something to be done on the hardware side, but I can't figure out what. Could you give me a suggestion?
Any working sample code for stm32wle5cc in the examples?
Dear all,We are currently working with STM32WB05KZ MCU and developing unit tests for our BLE application utilizing the Unity test framework.Specifically we are mocking scenarios such as, low-power mode pairing, and other related BLE functionalities enforcing real security measures.We would greatly appreciate any advice or examples the following:Mocking BLE SDK functions for STM32 (e.g., ble_gap_ ble_gatts_*) using Unity or any other unit test libraries that have been successfully implemented.Injecting mocks for the STM32CubeWB BLE stack (e.g., stubs for CI, advertising, pairing testing low-power in a CI environment—any patterns practices using Unity and mock frameworks.Any repositories or reference code for unit testing for STM32WB0 series.Thank you for support and guidance!
Hi,I would like to confirm that STM32WL55 and STM32WLE5 are mutually HW compatible from the point of external circuitry? I.e. can we use either one in a PCB originaly designed for one of them w/o any modifications? (Yes, I checked both datasheets but better to be safe than botching ;))I know that "The STM32WL55 is a Dual core MCU (cortex-M4 and cortex-M0+) but the STM32WLE5 is using only one core (cortex-M4)." so there might be a difference from the FW perspecitve. Thank you
We are developing with the STM32WLE5JC6, everything works, but now we are trying to reduce current consumption. When using the "End node skeleton", it seems to work, however, we are trying to define our own skeleton, because we neither want the ADC nor the trace system for production.I know that the problem is related to the sequencer, because is entering in the low power mode (through the `UTIL_SEQ_Idle`) before the retransmission has finished, so it just does nothing, I guess that the same happens when a TX is done. Most of the code is a copy-paste from the end node skeleton.I suspect that we need to disable the stop mode while it is joining with the `UTIL_LPM_SetStopMode`, however, I do not know where the code should be placed; in the end node skeleton, it is disabled during the vcom transmission, so it is not very clear that it is actually this the problem, is it?Relevant function implementations are found below.The IDLE definition:/* /Core/Src/sys_app.c */ void UTIL_SEQ_Idle(void)
Hello everyone,I'm working on a project using the STM32WL33CC1, based on the example provided in the official ST GitHub repository:https://github.com/STMicroelectronics/STM32CubeWL3https://github.com/STMicroelectronics/STM32CubeWL3/tree/main/Projects/NUCLEO-WL33CC/Examples/PWR/PWR_DEEPSTOP_RTC I’ve implemented the DeepStop (STOP2) low power mode using the same structure as in github example, with the RTC configured to wake the system every 30 seconds. However, I’m encountering the following behavior:-The MCU successfully enters DeepStop (measured current drops to ~100 µA as expected);-But it does not wake up, neither from RTC WakeUp nor EXTI;-On the other hand, the exact same code works correctly in Shutdown mode. What I've verified so far:-LSE clock is active before entering STOP2;-RTC WakeUp is configured correctly;-EXTI and NVIC are properly set. The project includes an external EEPROM, buzzer, Reed Switch with EXTI, LEDs, and Sub-GHz communication (2FSK/OOK).Has anyo
Hi everyone,I’m working on an application using an STM32WLE where the main loop is task-based, and Sub-GHz communication is handled through a message system. I’m currently trying to implement Stop Mode 2 to reduce power consumption.Scenario:Upon receiving a specific command, the device must enter Stop Mode 2.Wake-up should occur only via an EXTI on a WakeUp Pin (GPIO).At the same time, I have:An active RTC Alarm used for Sub-GHz events and software timers.SPI IRQ Handler (which shares the same IRQ with EXTI) for receiving SPI data.Issue:If I don’t disable the RTC Alarm before entering stop mode, the MCU wakes up immediately.However, if I disable the RTC Alarm, the device stays in stop mode, but after wake-up:The power consumption is higher than before entering Stop Mode.The SPI communication stops working properly.Questions:Is it correct to disable the RTC Alarm before entering Stop Mode 2? Is there a better way to handle wake-up without RTC interfering?After wake-up, which peripherals
I am working on stm32wl5moc controller and lora tx is not working every time radio status i am getting back is 5 instead of 6, below is the code snipet, and also check the full code attached with this post if (HAL_SUBGHZ_ExecGetCmd(&hsubghz, RADIO_GET_STATUS, &RadioResult, 1) != HAL_OK) { Error_Handler(); } /* Format Mode and Status receive from SUBGHZ Radio */ RadioMode = ((RadioResult & RADIO_MODE_BITFIELD) >> 4); RadioStatus = ((RadioResult & RADIO_STATUS_BITFIELD) >> 1); if(RadioMode == RADIO_MODE_TX) { /* Wait end of transfer. SUBGHZ Radio go in Standby Mode */ do { /* Reset RadioResult */ RadioResult = 0x00; /* Retrieve Status from SUBGHZ Radio */ if (HAL_SUBGHZ_ExecGetCmd(&hsubghz, RADIO_GET_STATUS, &RadioResult, 1) != HAL_OK) { Error_Handler(); } /* Format Mode and Status receive from SUBGHZ Radio */ RadioMode = ((RadioResult & RADIO_MODE_BITFIELD) >> 4); RadioStatus = ((RadioResult & RADIO_STATUS_BITFIELD
../Middlewares/Third_Party/LoRaWAN/Mac/LoRaMac.c:1650:40: error: 'McpsIndication_t' {aka 'struct sMcpsIndication'} has no member named 'ResponseTimeout'1650 | ( MacCtx.McpsIndication.ResponseTimeout > 0 ) )| ^ The above error is occuring every time , if i remove this then adc_if.c is not found error occurs and I don't want to include the adc_if.c file in my code
Hello everyone, We're working on UART interrupts and would like to wake up the MCU from STOP1 mode to begin UART communication. We're using USART1 as the LoRa peripheral for VCOM instead of the default USART2, in a LoRa End Node architecture. I'm working on Nucleo board STM32WL55JC. At this point, we’ve successfully managed to wake up the MCU using a UART interrupt, but I'm having trouble identifying which callback is triggered when the system wakes up from STOP mode via UART. Our goal is to stay in Low Power Sleep mode after processing the UART interrupt. In this state, we would like to be able send data over uart constantly (what we have been able to do via the sequencer). Here are our Enter/Exit Stop mode: void PWR_EnterStopMode(void) { /* USER CODE BEGIN EnterStopMode_1 */ // Save peripheral states and de-initialize before entering stop mode // stop ADC conversions HAL_ADC_Stop(&hadc); // deinit SPI HAL_SPI_DeInit(&hspi1); // De-deinit I2C
"Can someone please check this code? It's for normal LoRa point-to-point (P2P) communication. I’ve attached the file with this post. The problem I'm facing is that a software interrupt is supposed to occur every second and trigger my scheduled task — but it's not happening. Please help me fix it."
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.