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
FUS and BLE update.I would like to know if it is possible to update FUS (1.2.0)(2.1.0) and BLE (1.23.0) via SWD. I need to update two boards simultaneously and am having problems with programming via DFU. One of the boards always shows an error. I usually program one board at a time, and before, I only updated BLE without updating FUS, and everything worked correctly via SWD. Now that I need to update FUS and BLE simultaneously, an error occurs. Is it possible to perform this update, or can I only do it via DFU (it works with one board, but with two, one of them always shows an error)? What is the best way to perform this update? I use the CLI with a script to write, I think it's faster. Edited by Moderator to comply with the community rules.Please use the English language as it is an international community, ensuring that all Community users can understand your post.
I'm currently working on an STM32WB project and would appreciate guidance on the correct sequence to enter STOP2 low-power mode and wake up via an EXTI interrupt, ensuring all peripherals resume normal operation post-wake-up.Specifically, I’m looking for:The recommended steps to enter STOP2 mode, including any pre-conditions or configurations.The proper configuration for EXTI-based wake-up (I’m using a GPIO line for this).Best practices to ensure that all necessary peripherals (UART, SPI, ADC, USB, etc.) are correctly restored after wake-up.Any important considerations related to Core 2 (BLE stack), clock sources, or peripheral clocks that should be handled manually before or after STOP2.I’ve reviewed the reference manual and some ST examples, but a consolidated, recommended sequence or reference to an app note/code example that handles these aspects cleanly would be very helpful.Thank you in advance for your support!Refrence code:int main(void) { /* USER CODE BEGIN 1 */ /* USER CO
This https://blog.st.com/stm32wl5x-stm32wl5m/ seems to suggest that the wireless module could be either 900 or 800 MHz bands."Hence, coupled with the wide frequency range supported by its STM32WL5x, the module can work in Europe, Americas, and Asia."Does this mean that my product can be built with identical hardware for two different markets and the software could select the proper region? Does it need a special antenna to operate over a wider range? Or is it just that this module has different variants for different markets?
Hi, I am using the NUCLEO-WL55JC1 board and referring to the PWR_STOP2_RTC example to measure current consumption. I have isolated the ST-LINK section and am powering the board with an external 3.6 V supply for accurate measurement. However, in sleep (STOP2) mode, the measured current consumption is about 1.64 mA, which seems higher than expected. Please let me know if this is normal for this configuration or if any additional steps are required to further reduce the current consumption.
P-NUCLEO-WB55Just a sanity check really.I'm using the DWT unit to time a chunk of code, am I right that each tick is at 1/32MHz?
Hello. I got my hands on a wba55cg nucleo board and i'm currently studying about ble.I want to create a BLE Beacon that changes its adv_data whenever a user presses one of the button. From messing around using the p2p_server and beacon st examples, i implemented the following steps:1) Create a task that updates the adv_data and register it to the ble back ground sequencer. Added the following line in app_conf.h CFG_TASK_ADV_DATA_UPDATE, 2)Set my device as eddystone uuid. Again added the following line in app_conf.h #define CFG_BEACON_TYPE (CFG_EDDYSTONE_UID_BEACON_TYPE ) 3)On app_ble_init in app_ble.c registered a function to handle my task UTIL_SEQ_RegTask(1U << CFG_TASK_ADV_DATA_UPDATE, UTIL_SEQ_RFU,Ble_adv_data_update); 4) Implemented the adv_data_update_function inside app_ble.c static void Ble_adv_data_update(void) { const char str1[] = "ESS"; const char str2[] = "TODAY IS 11"; uint8_t adv_data[31]; uint8_t len =
I am using LPTIM for pulse counting in ultra low power (stop 2) mode for STM32wl55jc. Now, the problem is on the pin if I connect any pull up/ pull down with 10k-50k range, it draws significant amount of current. Can anyone please suggest a circuit to use for the pin input such that power consumption stays minimal in stop 2 mode? Should I use pull up with higher values? What about EMI/EMC issues?
Hello,We are currently working with the NUCLEO-WL55JC1 board for LoRa communication and have a few technical queries. 1. STM32WL as Gateway / P2P ReceiverWe are planning to use two NUCLEO-WL55JC1 boards, where: One board will act as a LoRa end node The other board will act as a gateway or P2P receiver Is there any gateway or P2P receiver firmware example available in the STM32WL SDK for the NUCLEO-WL55JC1 board? 2. LoRaWAN Gateway Capacity We would also like to understand the theoretical number of end nodes that can be supported by a single LoRaWAN gateway under the following conditions: Payload size: 16 bytes Spreading Factor: SF10 Uplink transmission interval: 1 hour per nodeAny calculation method, reference document, or guideline from your side would be very helpful.
Hello,Recently, I’ve been asking several questions about STM32WB55 BLE behavior, and the respected @FilipKremen has provided me with great support.It turns out that all this time I was actually working with fake Chinese chips. I suspect that some of the strange issues I faced were due to that.So, I’ve now bought original STM32WB55RGV6 chips and replaced them in my devices.However, with exactly the same firmware (which worked fine on the fake chips), the BLE does not start at all.Here’s what I tried:Regenerated the project using CubeMX and CubeIDECreated a fresh new BLE project following this official tutorial: https://www.youtube.com/watch?v=CKYWy7LKL68&list=PLnMKNibPkDnG9JRe2fbOOpVpWY7E4WbJ-&index=16Tested on two different custom boards — same resultOn both boards, other functions seem fine (e.g. I can toggle LEDs on button press, and I can hit the button interrupt in debug)(I flash the chips via J-Link)However, when I set a breakpoint at void APP_BLE_Init(void), th
On a custom board, I would like to use the BlueNRG GUI (v.4.7.1) to run the tests described in AN4818 (rev.8) using the DTM firmware embedded in BlueNRG-1_2 DK 3.2.3.I got a connection and I am able to send basic commands, like ACI_TEST_TONE START and STOP. I see the RF signal very clearly. So, the connection with the device is good.If I open the IFR Device configuration to start LS crystal measurement and HS startup measurement I can select the options but as soon as I press the WRITE button, I got an HCI Timeout error and I need to reset the BlueNRG to get the link again.ON a side note, as soon as I connect with the Blue GUI I got a message saying "Old firmware detected on the motherboard", but I am already using the latest.Any idea? It would be nice to leverage on the BlueNRG GUI to run these tests and fine tune the LF crystal and the HS crystal startup time.Kind regardAndrea
Hello ST Community team,About the Typo, on the Table 1 of the RM0473, we have a reserved region between SRAM1 and SRAM2a (from 0x2000 3000 and 0x2002 FFFF) the size of this region is 180 Kbytes and not 36 KBytes as mentioned on the Doc.please have a look at this.
I am configuring a dual-CPU project for the STM32WL55JC in CubeMX. This microcontroller has two CPUs: a Cortex M4 and a Cortex M0+. CubeMX lets users select the CPU that each peripheral is bound to. As illustrated in the image at the bottom of this post, the SUBGHZ peripheral is forced into being used by the Cortex M0+. In case the text in grey box in the image is unclear, it says "Peripheral SUBGHZ could not be removed from context "Cortex-M0+ (M0P)" as it's forced for this Peripheral."However, the datasheet says "An RF low-layer stack is needed and is to be run on CPU1 or CPU2, whereas the host application code is preferably run on CPU1." (Page 15). Here, CPU1 refers to the Cortex M4 and CPU2 refers to the Cortex M0+. This implies to me that the SUBGHZ peripheral should be bindable to either CPU. Can the SUBGHZ peripheral be operated by the Cortex M4, or is the Cortex M0+ only capable of using it?
Hi!If I look at the datasheet of STM32WL31xx, I find Table 34. PA impedance which tells e.g. an optimum load impedance of 32 Ω // 16 nH in line 5 (high power, 868MHz) This STM32WL31xx is (according to the datasheet) available in VFQFPN32 and VFQFPN48 packages.-----Now, while reading the AN5457 (RF matching network design guide for STM32WL Series), I get confused. This AN should cover the whole STM32WL31 and STM32WL33 series , right? So It should definitely be valid for my STM32WL31K8 in VFQFPN32 pakage?Now to my questions:1.) If the AN5457 is applicable, why does PA matching impedance measurements in Appendix A not contain any PA impedance measurements for the VFQFPN32 package?2.) If I compare the datasheet PA load impedance given at the top of this post with the "next best" data of the UFQFPN48 package, the values are not anywhere near that of the values in the datasheet. Can anyone tell which impedance value I should use as a starting
Hello, I'm having troubles building the two projects of the STM32 Nucleo WL55JC1 belonging to the LoRaWAN End Node DualCore Example under Linux (Ubuntu 24.04). It works on Windows 11, though.Until now I have all projects developed on Linux, this is my preferred OS. The single core version of the LoRaWAN End Node works perfectly under Linux.When I try to compile the project for the CM0PLUS, I get this error:arm-none-eabi-gcc -z max-page-size=1 -o "LoRaWAN_End_Node_DualCore_CM0PLUS.elf" @"objects.list" -mcpu=cortex-m0plus -T"/home/bgoedel/STM32Cube/Repository/STM32Cube_FW_WL_V1.3.1/Projects/NUCLEO-WL55JC/Applications/LoRaWAN_FUOTA_DualCore/LoRaWAN_End_Node_DualCore/STM32CubeIDE/CM0PLUS/STM32WL55JCIX_FLASH.ld" --specs=nosys.specs -Wl,-Map="LoRaWAN_End_Node_DualCore_CM0PLUS.map" -Wl,--gc-sections -static -L../../../../Linker_Common/STM32CubeIDE -L../../../../2_Images_SBSFU/STM32CubeIDE/CM0PLUS/Debug --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
Hello ST Community,I am currently designing a board based on the STM32WL55 and I am aiming to optimize the BOM by utilizing the MCU's internal programmable high-speed capacitors, avoiding external load capacitors for the 32 MHz HSE.I am referencing AN5646 ("How to select a 32 MHz HSE oscillator for STM32WL5x/Ex MCUs") to ensure correct implementation. The Application Note suggests inserting a series capacitor (C_SERIE) to enhance stability over temperature changes when using the internal capacitor bank.However, I am having trouble understanding the derivation of the formula provided in the document regarding the final Load Capacitance (CL) seen by the XTAL when this series capacitor is introduced.My specific question is:Intuitively, I would expect the total load capacitance to be the result of the series combination of the added C_SERIE and the equivalent capacitance usually seen by the crystal (which is the series combination of the internal caps, CL1 and CL2 plus stray capacitance C_
Hi, In the STM32WL5MOC datasheet I can find the 32MHz TXCO HSE accurancy, but not the LSE 32kHz RTC clock accuracy. Could someone look into this and provide the min/max values similar to TXCO characteristics in Table 10? Best Regards,Dave
Hello ST Community, I am working with the NUCLEO-WL55JC1 and the official Sigfox_PushButton example. When running the application, the firmware consistently fails during EEPROM emulation initialization. The execution enters E2P_Init() and stops very early inside the function. Observed behavior: After that, the application ends up in Error_Handler() The failure happens every time during startup Project details: Board: NUCLEO-WL55JC1 MCU: STM32WL55JC1 (dual-core CM4 + CM0+) Toolchain: STM32CubeIDE Firmware package: STM32CubeWL Example: Sigfox_PushButton EEPROM configuration:In sgfx_eeprom_if.h, EEPROM emulation is configured as follows: Flash page size: 0x800 (2 KB) EEPROM bank size: 2 pages (4 KB) EEPROM base address set to the last two Flash pages: EE_BASE_ADRESS = 0x0803F000 (256 KB Flash device, address range 0x08000000 – 0x0803FFFF) I already performed: Full chip erase Clean rebuild Debugging on Cortex-M4 Verification that EEPROM does
Hello all,Anyone successfully implemented the Standby Mode for STM32WBA52/55? I am struggling going thru the examples and I wouldn't be able to enter the standby mode level. My board still consume about 70mA when I enter the standby mode. From the datasheet, it should be under 1uA with SRAM.Thank you.
I have just received 2 NUCLEO-WL55JC1. Upon connecting either one of them via I see The Red (main power) and green LEDs on. The other thre are flashing alternatively (red, orange, blue). I haven't changed the default jumper settings.The following debug probes were found:[0]: STLink V3 -- 0483:3754:0026003A3234510A33353533 (ST-LINK)12:21:32 : STM32CubeProgrammer API v2.21.0 | Linux-64Bits12:21:46 : UR connection mode is defined with the SWrst reset mode12:21:46 : ST-LINK SN : 0026003A3234510A3335353312:21:46 : ST-LINK FW : V3J16M812:21:46 : Board : NUCLEO-WL55JC12:21:46 : Voltage : 3.24V12:21:46 : Unable to get core ID12:21:46 : No STM32 target found! If your product embeds Debug Authentication, please perform a discovery using Debug Authentication12:21:46 : ST-LINK SN : 0026003A3234510A3335353312:21:46 : ST-LINK FW : V3J16M812:21:46 : Board : NUCLEO-WL55JC12:21:46 : Voltage : 3.23V12:21:46 : Error: Unable to get core ID12:21:46 : Error: No STM32 target found! If your product embed
Hi, team I previously worked with a SWB (dual core) microcontroller, and I was able to obtain the stack version using the SHCI_GetWirelessFwInfo function. Now, I am working with a SWBA (single core) but I was unable to find an equivalent function to do it. Do you know if there is an equivalent?, I want to know the stack version on compilation time or runtime, it does not matter. Thanks in advance.
Hi there and happy new year! I am currently trying to develop a dimmable color light with an stm32wb55 (Nucleo Board). Everything seems to work when connecting the device to a zigbee2mqtt server over zigbee. But actually all color server related callbacks are never invoked and i have no clue why. The other clusters are working just fine and the callbacks are called (on/off, brightness). My endpoint setup code: /** * @brief Configure Zigbee application endpoints * None * @retval None */ static void APP_ZIGBEE_ConfigEndpoints(void) { struct ZbApsmeAddEndpointReqT req; struct ZbApsmeAddEndpointConfT conf; memset(&req, 0, sizeof(req)); /* Endpoint: SW1_ENDPOINT */ req.profileId = ZCL_PROFILE_HOME_AUTOMATION; req.deviceId = ZCL_DEVICE_COLOR_DIMMABLE_LIGHT; req.endpoint = SW1_ENDPOINT; ZbZclAddEndpoint(zigbee_app_info.zb, &req, &conf); assert(conf.status == ZB_STATUS_SUCCESS); /* Basic client/server */ zigbee_app_info.basic_client_1 = ZbZclBasicClientAlloc(zigbe
I'm working on a project based on the STM32WB5MMG module that must support the following three building blocks:ZigBee APS Coordinator - Only APS Layer packets, I dont need nor want the ZCL or any compatibility.USBFreeRTOSThe examples for the STM32WB5MM-DK are non-existent and the only useful examples I could find in the STM32Cube_FW_WB_V1.24.0 repository were for the P-NUCLEO-WB55.Nucleo.After weeks of tweaking and much struggle I was able to create a project with USB, FreeRTOS, and ZigBee APS Coordinator that compiles and kinda works. This is how I did it.First, I created a project for the STM32WB5MMG using STM32CubeMX where I added and configured the USB and FreeRTOS. I Also added "RF" since that is the only thing related to ZigBee you can do there. This project which only has USB runs fine and works well.Then, I took the two P-NUCLEO-WB55.Nucleo projects; Zigbee_APS_Coord and Zigbee_OnOff_Server_Coord_FreeRTOS, and I was able to merge them together
Hello, Can you please share an example code where active tampering is enabled in Standby mode and tamper event (disconnect loop) is used to wake up the MCU.I would like to know how we can configure the TAMP as a wakeup source during Standby. If you can show configuration in terms of STM HAL driver that would be great. Let me know if you need more context. Kind Regards,
Hello,I modified the BLE Beacon example to send 5 beacon packets and then enter into the STOP2 mode. It is possible to wake-up and resend 5 packets when a button is activated. However, when the time is set, the MCU wakes-up, and freeze.The function UTIL_LPM_EnterLowPower() is used for entering low-power, and HAL_RTCEx_SetWakeUpTimer_IT() is used for setting the wake-up time. a few seconds are used as wake-up time. The wake-up is only verified by monitoring the current consumption increased from few µA to approx. 2.5mA after the time is elapsed. Beside that turning on one of the LEDs has been implemented in the RTC wake-up interrupt routine, and one just after the __WFI without it's being triggered.It has not been possible to debug, as the debug does not return until the execution is paused, and when it's paused the PC points on the next line of the __WFI instruction.Do you have any ideas of what the reason can be, or any suggestion on debugging?Best regards,Fatih
I want to measure current draw on a Nucleo-WBA65RI board using a Nordic PPK2 power profiler. I put the PPK2 in ammeter mode across JP2 of the Nucleo board, and loaded the BLE_Power_Central example in IDE. The Nucleo board is being powered by the USB connection st-link. This is following STM32WBA Bluetooth® Low Energy – Power consumption applications - stm32mcu When the firmware runs, I see around 4mA drawn for the first 10s setup time. The the red led goes out, as it enters the measurement time, and yet I still see a current draw of 4mA.What do I need to do to truly measure the current draw of the stm32wba65?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.