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
Hello,I am working with a STM32WB09KE mcu on a custom pcb. I am trying to write a softwareloop that measures something every x min and afterwards goes into deepstop mode. I was following some online documentation, but it seems like the wb09-series is not represented alot. Currently I have configured the RTC to generate an alarm at every 5 minutes (at 12:05:00, 12:10:00, etc exact). This interrupt is confirmed to be working.Now I am writing a function to enter deepstop mode in the main loop based on some examples online. Currently I have this:void Enter_DeepStopMode(void) { __HAL_PWR_CLEAR_FLAG(PWR_WU_FLAG_ALL); HAL_SuspendTick(); __HAL_RCC_LSI_ENABLE(); HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI); HAL_ResumeTick(); SystemClock_Config(); } The problem is that the compiler (using STM32CubeIDE) does not find this function and argument 'HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);'I'm not sure if the wb09 can use this function. I have looked through the examples in the wb0
We recently developed a custom STM32WL5MOCH-based board. The VREF+ output is not supplying anything right now. The GPIOs seem to be floating and do not output anything. We're using the Visual Studio Code environment and simply imported the CMake project created by CubeMX. VDDA is measured at 3.3V. VREF+ output is measured at 0.008V to 0.03V. The GPIOs all read 0.5V to 0.6V, they do not Push / Pull and seem to be floating. The LEDs are properly inserted and can activate as verified by external probing. We have tried eliminating the RTOS / SubGHZ middleware to start from scratch, but the results are the same. We have tried changing the system clock mux from HSE to the internal MSI RC, but the same results occur. We tried changing the sys timebase source from TIM17 to SysTick, but nothing changes. We figure there is something wrong with the software configuration, but aren't
Hello, I have custom PCB with STM32WB5MM module configured as beacon. I am successfully advertising configured data.I have configured a task in sequencer (the task gets executed, checked with debugging). When I leave task empty, the BLE advertises, but when I add function to update adv data, the advertising stops.Configured data manufacturer specific data: 100000000000000090 "New" configured data manufacturer specific data: 100000000011111190 My function: void MyTask(void){ uint8_t alt_AdvData[28] = { 2, AD_TYPE_TX_POWER_LEVEL, 0 /* -0.15dBm */, /* Transmission Power */ 7, AD_TYPE_COMPLETE_LOCAL_NAME, 'F', 'P', '0', '0', '0', '1', /* Complete name */ 3, AD_TYPE_16_BIT_SERV_UUID_CMPLT_LIST, 0x0D, 0x18, 12, AD_TYPE_MANUFACTURER_SPECIFIC_DATA, 0x30, 0x00, 0x10 /* */, 0x00 /* */, 0x00 /* */, 0x00 /* */, 0x00 /* */, 0x11 /* */, 0x11 /* */, 0x11 /* */, 0x90 /* */, }; aci_gap_update_adv_data(sizeof(alt_AdvData), (uint8_t*) alt_AdvData); } 
Hello,Do the STM32WL3x series of microcontrollers come with a DBGMCU_IDCODE register? All the other MCUs in the STM32WL have one, but I don't see it listed for the WL3x series.If it has one, what is the value of that register?If not, is there any other way for software to correctly identify the microcontroller as a STM32WL3x MCU?Thanks
Having issues generating random numbers while being connected via BLE.In general use, HAL RNG works fine, and I get a random number without timeouts.BUT,Upon finishing the connection flow,connection mtu exchange pairing ,I start to get timeouts when trying to generate a new random number.Increasing the timeout , initializing, did not resolve the issue.I am currently trying to use HCI_RND command instead in the hopes it will get me my random number.If it helps, I am on one of the latest BLE stacks 1.20 or 1.21Cheers,and let us all have random numbers when connected!
Hello,I’m trying to create a simple program to test BLE functionality of my board. The board does not have HSE but it has LSE. I'm not sure if that is a problem. I'm using PlatformIO for the programming, configurations and building/flashing. When I upload the program to board it goes to infinite loop on if (!BLE.begin()) { while (1); } more specific on __WEAK void shci_cmd_resp_wait(uint32_t timeout) { for (unsigned long start = millis(); (millis() - start) < timeout;) { if (CmdRspStatusFlag == SHCI_TL_CMD_RESP_RELEASE) // <---- looping here { break; } } return; } This could be result of multiple reasons. Some things I have tested are:1. Use STM32CubeProgrammer to flash stm32wb5x_FUS_fw.bin to address 0x080EC000 stm32wb5x_BLE_HCILayer_fw.bin to address 0x080E0000and set application code target address to 0x08000000as per release notesCubeProgrammer is able to read FUS infos and also start wireless stack2. Generate linker scri
Hi all.I'm working on stm32WB MCU, I have a bootloader and an application. The bootloader only check if any update needed and jump to app. When app stops at main I can see that flash status register is set with PGAERR, SIZERR and PGSERR and I have no idea why it happens. To fix it I added error flags clear on the first flash operation and it works.I know there are some problems with the second CPU handling ble communication, like the need to clear OPTVERR on startup.Is there any known problem or am I doind something wrong?Thanks in advance.
Hello everyone, I am currently working with the STM32WB09KE microcontroller and need to implement EEPROM emulation, as this device does not have built-in EEPROM. However, I couldn't find specific documentation or resources related to EEPROM emulation for this particular model. Could anyone guide me on how to achieve EEPROM emulation on the STM32WB09KE? Additionally, if there are any relevant application notes, example codes, or libraries that could be helpful, I would really appreciate it if you could share them. Thank you in advance for your help! Best regards, Reginaldo
Hi, I am setting up a p2p Client and p2p Server example using 2x B-WB1M-WPAN1 boards. There is no example I can find for the B-WB1M-WPAN1 so I have taken the Nucleo example and modified to suit the B-WB1M-WPAN1. I cannot connect the p2p Server to the p2p Client. Here is where I am at:- P2P Server is operational and available on the ST BLE Toolbox phone app. - P2P Server advertising settings as below- P2P Client is running and a button press will initiate a scan as below. Questions:1. Does the p2p_Client application apply a device filter to the scan procedure, and if so what is being filtered and where can I modify this filter to find my device? Could this be my issue?2. In future I would like to only connect to devices with a specific ID, where could I set this ID and is there an automatic re-connect capability if the ID is fixed? Thank you for any help.
Hi,Anybody from ST or Users done any development or research on the "new" relay node on the STM32WL.Will the stack be updated or will we have to do this on our own?RegardsStefan
Hi, I'm working on an OTA BLE bootloader for the STM32WB5MM module.I created from scratch with STM32CubeMX the same code as the OTA example for NUCLEO-WB55.I'm on BLE stack 1.21So far so good, I can update with the smartphone app.The problem I'm having is that at the end, after receiving the BLE reset in the OTA, the microcontroller reboots correctly in the customer firmware, but remains stuck at CPU2 initialization, when hci_reset() is called in the Ble_Hci_Gap_Gatt_Init() function.The power supply must be removed for CPU2 to work. After this action, the customer firmware is working properly.A reset via the RESET pin does not improve the situation.I found several similar messages about this:https://community.st.com/t5/stm32-mcus-wireless/issue-in-ble-stack-advertisement-after-jumping-with-bootloader/m-p/63165https://community.st.com/t5/stm32-mcus-wireless/stm32wb-cpu1-stuck-waiting-cpu2-at-init/td-p/80505https://community.st.com/t5/stm32-mcus-wireless/stm32wb5mmg-cpu2-stuck-in-non-dis
I was updating application firmware on an STM32WB15CC, but my user application wasn't advertising correctly. I decided to re-install the wireless firmware. However, I am unable to do so, as my FUS refuses to start. Reading the FUS infos shows a FUS version v0.0.0.0 and STACK version v0.0.0.0.I have successfully updated wireless firmware on this MCU before, and I've never had an error during this process, so I'm not sure what to do to recover this device. My SBRV value does not seem to be correct as mentioned in other forum posts about this issue. I'm not sure where to go from here, as a can flash user applications but am unable to flash wireless stack firmware.
The device is designed i a way that, it should wake up every 30 seconds via RTC wake up timer or upon button press, read sensor values (for temperature and humidity ), if there is any change in these values , send packets via radio (SUBGhz) and enter STOP 2 mode. This works for 3-4 days after which it does not wake up.The radio core is held in reset before entering STOP 2 mode.
I had created a custom Nordic UART service. Ble sending :static tBleStatus Generic_STM_App_Update_Char_Ext(uint16_t ConnectionHandle, uint16_t ServiceHandle, uint16_t CharHandle, uint16_t CharValueLen, uint8_t *pPayload){tBleStatus ret = BLE_STATUS_INVALID_PARAMS; ret = aci_gatt_update_char_value_ext(ConnectionHandle,
When will ST support Lora Basics Modem and, perhaps, Relay, FUOTA? Thank you, Dana
Hello, I want to enable the secure connection key type as 'DEBUG' in STM32WB55 with my custom setup. The cube IDE does not allow this setting in the configuration of .ioc file. I followed this tutorial and added the following line in my code inside the definition of Ble_Hci_Gap_Gatt_Init() function, but it returns with error code 0x12 (Invalid HCI parameters). What am I missing here? static const uint8_t SC_KEY_TYPE_DEBUG = 1; static const uint8_t SC_KEY_TYPE_NORMAL = 0; ret = aci_hal_write_config_data(0x35U, 1, (uint8_t*)&SC_KEY_TYPE_DEBUG); if (ret != BLE_STATUS_SUCCESS) { APP_DBG_MSG(" Fail : aci_hal_write_config_data command - CONFIG_DATA_SC_KEY_TYPE_OFFSET, result: 0x%x \n", ret); } else { APP_DBG_MSG(" Success: aci_hal_write_config_data command - CONFIG_DATA_SC_KEY_TYPE_OFFSET\n"); }I am also following AN5270 for development, and the offset to set SC_KEY_TYPE seems to be correct. This is what I am seeing when I run the code: I made sure that CFG_
Hello, I am using STM32WB55 chip on my custom setup. I have configured my device in peripheral mode. I want to be able to accept / reject pairing requests initiated by the client device. I am following AN5270 for development. I have added code to set bit3 in SMP_MODE register to enable the generation of pairing request event. Although, the documentation says "SMP MAY generate the event". Why is that? The documentation also says that if I bypass the SMP, all the events that go to SMP will be transmitted to the application. However, what are the other events handled by SMP? I am not able to find a list of events handled by SMP. Is there any other documentation that I am missing? I also looked at an older thread in which the functionality to accept / reject pairing request did not exist. But since not it exists, do you have an example code where it actually works?Any help is appreciated! Here's the old thread: https://community.st.com/t5/stm32-mcus-wireless/what-is-th
Hello ST Community,I was successfully working with my STM32WB55RG Nucleo-64 and had FUS (Firmware Upgrade Service) and the BLE stack properly uploaded and running initially. However, after attempting to modify some register values in the Option Bytes, I encountered a serious issue where FUS and the wireless stack appear to be corrupted.Now, when I try to upgrade or reinstall the BLE stack, I am facing errors, and FUS is no longer functioning properly. FUS Version is now corrupted and shows invalid values (attached screenshot).FUS upgrade is failing – attempting to reflash FUS results in errors.BLE stack cannot be reinstalled due to the corrupted FUS state.Attempts to start FUS fail with FUS_STATE_ERR_UNKNOWN.Steps Tried to Fix the Issue:1. Attempted to Reinstall the BLE Stack (stm32wb5x_BLE_Stack_full_fw.bin) → Failed due to FUS corruption.2. Tried Deleting the Wireless Stack in STM32CubeProgrammer → Did not resolve the issue.3. Performed a Full Chip Erase → FUS corrupt
Hello, I'm configuring an STM32WB55CEU6 in STM32CubeIDE and am setting up the BLE part now and I noticed that the IDE only let's me setup 5 characteristics per service. In my application (a remote control) I need about 15 characteristics. Is there a way to increase that number?
I am using the stm32wb5x_BLE_Stack_full_extended_fw.bin (1.18) on my STM32WB55. I would expect to get the HCI_COMMAND_COMPLETE_EVENT after calling hci_reset(), but I never get the event. I get the other HCI events such as HCI_DISCONNECTION_COMPLETE_EVENT, HCI_LE_META_EVT_CODE, HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE. Should I HCI_COMMAND_COMPLETE_EVENT after calling hci_reset()?
Hi allWe are using STM32WB55 for BLE application. By default, the TX power is added to AD data structure. Got to know that we can use this below API to remove the field from advertisement. ret = aci_gap_delete_ad_type(AD_TYPE_TX_POWER_LEVEL);Is there a way to completely remove the TX power from AD structure? So, every time I start the advertisement, I don't need to explicitly remove the TX power parameter.
HelloI'm working with a custom STM32WB55RG board which initially was working properly, reading documentation regarding failures and STM32WB Firmware Upgrade Service upgrade.I tried to upgrade and follow the steps indicated, I also tried to follow several solutions that are in the forum but none of them succeeded to give me a solution.I connect my card to the CubeProgrammer program.16:37:27:317 : Disconnected16:37:27:318 : Disconnected from device.16:37:28:025 : UR connection mode is defined with the HWrst reset mode16:37:28:135 : ST-LINK SN : 066AFF55485786836710240716:37:28:135 : ST-LINK FW : V2J45M3116:37:28:135 : Board : NUCLEO-WB55RG16:37:28:135 : Voltage : 3.26V16:37:28:135 : SWD freq : 4000 KHz16:37:28:135 : Connect mode: Normal16:37:28:135 : Reset mode : Software reset16:37:28:135 : Device ID : 0x49516:37:28:135 : Revision ID : Rev X16:37:28:135 : flash loader C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin/FlashLoader/0x495.stldr is loaded16:37:28:135 : De
Hello Everyone,I am working on STM32WLE5CC and I am new to this. I am getting current consumption of 520uA of Core only in which I have initialized HAL_Init() and SystemClock_Config() with MSI of 1MHz. And datasheet states that in Active mode it takes 72uA/Mhz. I have also disabled debugger configurations too.Please help me with solution ,how can i match datasheet current consumption?And my second question is, I want my NVM of 16k to have data all the time even after reprogramming ,I don't want to use option bytes for it. Is there another way other than option byte to do this? Thanks
Hi @STTwo-32 ,I am using the BLE_p2pServer example with NUCLEO-WBA55 and want to use USART2 instead of USART1. If I use USART1 and send a byte via HTerm, the task UTIL_SEQ_SetTask( 1<<CFG_TASK_SEND_NOTIF_ID, CFG_SEQ_PRIO_0); should be executed as soon as an RxCpltCallback event (in file usart_if.c) is triggered.static void UsartIf_RxCpltCallback(UART_HandleTypeDef *huart) { /* USER CODE BEGIN UsartIf_RxCpltCallback 1 */ UTIL_SEQ_SetTask( 1<<CFG_TASK_SEND_NOTIF_ID, CFG_SEQ_PRIO_0); /* USER CODE END UsartIf_RxCpltCallback 1 */ RxCpltCallback(&charRx, 1, 0); HAL_UART_Receive_IT(&huart1, &charRx, 1); /* USER CODE BEGIN UsartIf_RxCpltCallback 2 */ /* USER CODE END UsartIf_RxCpltCallback 2 */ }When I establish a BLE connection with the “nRF Connect” app, I receive the corresponding notification (Same effect as when I press button1)and I also receive the corresponding logs via HTerm.But if I now change “serial links for logs” to USART2 and configure
Hello, I'm working on a project based on NUCLEO-WB55.USBDongle. According to Zigbee specification paragraph 3.6.1.2 referring to to the NLME-PERMIT-JOINING.request procedure:When this procedure is initiated with the PermitDuration parameter set to a value between 0x01 and 0xfe, the NLME shall set the macAssociationPermit PIB attribute in the MAC sub-layer to TRUE. The NLME shall then start a timer to expire after the specified duration. On expiration of this timer, the NLME shall set the macAssociation-Permit PIB attribute in the MAC sub-layer to FALSEWhen this procedure is initiated with the PermitDuration parameter set to 0xff, the NLME shall set the macAssociationPermit PIB attribute in the MAC sub-layer to TRUE for an unlimited amount of time, unless another NLME-PERMIT-JOINING.request primitive is issued.I implemented the following code on coordinator to update the join permit: struct ZbZdoPermitJoinReqT req; memset(&req, 0, sizeof(req)); req.destAddr = ZB_NWK_ADD
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.