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 ST, We are using the STM32WLE5 controller in our product.The system always works on 1.8V. Based on demand, we switch to 3.3V and fallback to 1.8V.Our product is IoT-based, charged through solar to a supercapacitor.The main problem is that the controller is booting from the embedded bootloader even after setting boot options, which I will describe later.We require that it must boot from the user flash, not from the system bootloader, because a few GPIOs, like PA4 and PA7, used in the internal bootloader for SPI are used in our circuit, which turns on the supply of some components, which can consume a lot of power, and the power line goes down below 1.71V, which results in restarts while boot up if there is no enough charge in super capacitor.The settings that I use to boot from the user flash mentioned below,1. I set BOOT_LOCK, and based on the boot table here in the section "2.2 Boot configuration", it must boot from the user flash, but no luck.2. Here I clear the
STM32WBA54 SAI work in slave mode with DMA: SAI1_Block_A Slave out, SAI1_Block_B Slave in. test code as: MX_SAI1_Init();//in __HAL_LINKDMA(&hsai_BlockB1, hdmarx, handle_GPDMA1_Channel2); MX_RxQueue_Config(); HAL_DMAEx_List_SetCircularMode(&RxQueue); HAL_DMAEx_List_LinkQ(&handle_GPDMA1_Channel2, &RxQueue); if (HAL_SAI_Receive_DMA(&hsai_BlockB1, (uint8_t *) aSrcBuff, SAI_MAX_BUFF_SIZE*2) != HAL_OK) { } //Out__HAL_LINKDMA(&hsai_BlockA1, hdmatx, handle_GPDMA1_Channel1); MX_TxQueue_Config(); HAL_DMAEx_List_SetCircularMode(&TxQueue);HAL_DMAEx_List_LinkQ(&handle_GPDMA1_Channel1, &TxQueue);if (HAL_SAI_Transmit_DMA(&hsai_BlockA1, (uint8_t *)aSnkBuff, SAI_MAX_BUFF_SIZE*2) != HAL_OK) { } TxDMA = HAL_SAI_DMAStop(&hsai_BlockA1);RxDMA = HAL_SAI_DMAStop(&hsai_BlockB1); TxSai = HAL_SAI_DeInit(&hsai_BlockA1);RxSai = HAL_SAI_DeInit(&hsai_Block
I'm working with the STM32WB5MMG module and have been using SPI communication with DMA successfully. Previously, in a bare-metal setup, the following was working perfectly:HAL_SPI_TransmitReceive_DMA() starts the transferHAL_SPI_TxRxCpltCallback() is triggered upon DMA completionSPI and DMA configurations were verified, and the interrupt fired reliablyHowever, after integrating FreeRTOS into the project, I noticed that the DMA transfer still starts successfully (HAL_OK is returned), but the DMA interrupt no longer fires, and HAL_SPI_TxRxCpltCallback() is never called.Additional Notes:DMA and SPI are initialized the same way as before (generated via STM32CubeMX)SPI state and error checks show normal operation (HAL_SPI_GetError() returns 0)NVIC interrupts for DMA channels are enabledFreeRTOS is running with default settings, and I'm not using CMSIS-RTOS wrappers for SPI or DMANo changes were made to SPI or DMA configuration between bare-metal and RTOS versions Are there any specific
Hi, we are designing a product around the STM32WB5MMGH6TR but cannot find a full datasheet.On the product page we can find what is described as a datasheet (main purple download button at the top) but is only a 37 pages "technical brochure" that does not show the current consumption in various modes, nor many technical parameters.There are plenty other documents but none of them show the current consumption nor all the technical specs and details you normally get from an MCU datasheet.Where can I find a full datasheet showing the all current consumption data?Thank youRick
I am new to the NUCLEO WL55JC1 and wanted to experiment with LoRaWAN.I've followed the YT series on the topic, especially the 3rd part (https://www.youtube.com/watch?v=8KNfrWoa1fw&t=26s). My End node is properly joined and connected to the things network. I am using the 868 MHz band in EU. However after several successful transmits that I can observe on the UART, the device seems to reset after a timeout. What could be the reason?... ###### ========== MCPS-Confirm ============= 420s356:VDDA: 254 420s356:temp: 21 420s360:TX on freq 868500000 Hz at DR 0 420s363:SEND REQUEST 422s009:MAC txDone 427s041:RX_1 on freq 868500000 Hz at DR 0 427s239:IRQ_RX_TX_TIMEOUT 427s239:MAC rxTimeOut 427s996:RX_2 on freq 869525000 Hz at DR 3 428s055:IRQ_RX_TX_TIMEOUT 428s055:MAC rxTimeOut ###### ========== MCPS-Confirm ============= 430s364:VDDA: 254 430s364:temp: 21 430s364:Next Tx in : ~3169 second(s) FATAL: read zero bytes from port term_exitfunc: reset failed for dev UNKNOWN: Input/output err
Hello everyone, I am strugling with a STM32WB5MMGH that I am using with transparent mode. I am using the STM32WB5MMGH on a custom board with a STM32L4R9VIT6. The goal of the project is to use the STM32WB5 as a bridge to send data from a smartphone app to the L4. I use LPUART to cummunicate between the two MCU.From my understanding the transparent mode is the best for my application as it will redirect the data from the phone directly to the LPUART. The issue that i'm facing is that when I run the WB in transparent mode it's not advertizing (I use NRFconnect).I use stm32wb5x_BLE_Stack_full_extended_fw.bin stack as mentioned in the transparent mode exemple readme. The WB was advertizing when I use stm32wb5x_BLE_Stack_full_fw.bin stack with a custom template server. It means that my hardware is OK (The LPUART work fine too when I didn't use the WB as a BLE project). I don't really know what I am doing wrong here. Any help would be great!&n
Please tell me how to enable FTD in X-CUBE-MATTER. Is it possible to have it function as a Thread Router?
Hi everyone, im using an STM32WB and i just managed to get my own BLE<->UART bridge to "half work".But my problem is about UART managing.If i receive data with length of less than 247bytes(set by me) just stays in the rx bufer and no DMA transfer complete happens.I set up the DMA to listen for the next incoming 247 bytesHAL_UARTEx_ReceiveToIdle_DMA(&huart1, NotifyCharData, RxBuf_SIZE); __HAL_DMA_DISABLE_IT(&hdma_usart1_rx,DMA_IT_HT);//we dont want the half done transaction interruptWhenever the data arrives(stream of data uartRx) ,it gets written into a BLE characteristic, everything works like a charm, but if the last uart received message is less than 247length DMA rx doesnt trigger after an idle time.No IDLE event occurs./** * @brief Receive an amount of data in DMA mode till either the expected number of data is received or an IDLE event occurs. * @note Reception is initiated by this function call. Further progress of reception is achieved thanks * to DMA services,
Hello everyone, I'm writing in search of some help, as I'm not sure what else to check. I have just built a custom board controlled by an STM32WBA65RIV6, and I'm trying to connect it via DFU mode. Everything seems to be set up correctly, but the device is not detected by my computer (a MacBook). What is working:I can successfully flash the processor via ST-Link (SWD).I have run a simple test program (toggling a pin high/low every 3 seconds) without issues. This confirms the chip is alive and basic operation is fine.DFU Setup & Debugging Steps Taken:The BOOT0 pin is pulled up to 3.3V with a 10k resistor to enter the system bootloader (DFU).I've confirmed this works: when BOOT0 is high, my test program does not run. When BOOT0 is pulled low, the program runs. This confirms the boot mode selection is working as intended.I have double-checked the D- (Data Minus) and D+ (Data Plus) lines for continuity and to ensure they are not swapped.I also (after initially forgetting)
Hello,I would like to build a project using a STM32WL33 µC on IAR Embedded Workbench IDE v9.30.1. Unfortunately, this version of IAR does not support this µC and I would like to import it but i cannot find any package suitable for IAR. Do you have an easy solution? Best regards, Schaeffer Guillaume
I'm implementing "User defined skeleton" application. I correctly join to gateway and server chirpstack is logging 'join accept', 'join_request. When i can send some data to server i get 2 errors from library Lorawan, 'LORAMAC_HANDLER_ERROR' in function 'OnJoinRequest' and 'LORAMAC_EVENT_INFO_STATUS_RX2_TIMEOUT'. Server says that join request is OK, and accepts Join.Gateway is working Ok because it works with another node.MCU: STM32WLE5CCU6,Params Lorawan: #define ACTIVE_REGION LORAMAC_REGION_EU868#define APP_TX_DUTYCYCLE 10000//#define APP_TX_DUTYCYCLE_RND 1000#define LORAWAN_USER_APP_PORT 2#define LORAWAN_SWITCH_CLASS_PORT 3#define LORAWAN_DEFAULT_CLASS CLASS_C#define LORAWAN_ADR_STATE LORAMAC_HANDLER_ADR_ON ///LORAMAC_HANDLER_ADR_ON#define LORAWAN_DEFAULT_DATA_RATE DR_0#define LORAWAN_DEFAULT_TX_POWER TX_POWER_3#define LORAWAN_DEFAULT_ACTIVATION_TYPE ACTIVATION_TYPE_OTAA#define LORAWAN_DEFAULT_CONFIRMED_MSG_STATE LORAMAC_HANDLER_UNCONFIRMED_MSG#define LORAWAN_DEFAULT_PING_SLOT_
I cannot get STM32WLE5 (on a RAK3172 module) to exit from stop mode on either RTC timer or rising EXTI pin. I'm using STM Cube HAL functions and the stm32_lpm_if.c library. I have tried pin PB3 as either EXTI3 or as PWR_WKUP3. If I use EXTI3, I set an interrupt handler. The handler gets called when the pin goes high in normal running, but when in stop2 mode, it does not wake up. Does anyone have example code using this chip/module to do a wakeup on timer OR external pin?
Hello,Is there is any board delivered by STM32 with WiFi capabilities?BR
Greetings,There is a post explaining how the aci_gatt_write_char_desc() function should be used to enable notification events for a characteristic that may be notified by the server/peripheral. The opcode, defined asrq.ogf = 0x3f;rq.ocf = 0x121;is the 16 bit opcode 0xFD21. The September 2025 release of AN5270 (revision 32) omits this command.Can we get an update to the AN5270 with an explanation of this command?Cheers
Regarding the pad size for the Bluetooth module “STM32WBA5MMGH6TR,” there are discrepancies between the datasheet and the CAD data listed on the website, resulting in instability. We would like detailed data confirming the actual dimensional values and request that you send us the relevant documentation.
Hello,I am working with an STM32WBA65RI that is on our custom board, and working to reduce our power usage. Along this journey I found the issue with the HAL_PCD_MspInit() / DeInit() where the logic for the RCC PWR was inverted, which was another post I made.On our current hardware, I am noticing a large jump in current draw at the function call for __HAL_RCC_USB_OTG_HS_PHY_CLK_ENABLE() in HAL_PCD_MspInit().Just prior to the function call, the board is drawing 7.5mA, and immediately following the call it is drawing 33.09mA.I also tested this against the NUCLEO-WBA65 board, measuring across JP2, and see a jump from 3.05mA to 11.99mA, which seems more reasonable, albeit still quite large (according to DS14736, the max power draw from the OTG_HS PHY should be 5.7mA):For reference, our board has the following power setup:VBAT is 3.9 (for this test I am using a power supply). This feeds a PMIC (MAX77658). The PMIC takes the 3.9V in and creates a 3.3V using an internal switching regulat
I have a set of BLE characteristics set up, and working ok. The project uses FreeRTOS. I want to be able to have the stm32wba65 sleep in low power, then wake up at a specific time of day. After wakeup,I have a 5-second RTOS timer to take a series of measurements. Once all measurements are taken, the stm32 should sleep again. I want to set the time of day once from a PC over BLE, then disconnect and have the stm32 go to sleep. I have a 32kHz oscillator providing LSE, which seems to be running ok, as the startup code does not hang waiting for LSE to start. If I try to put the RTC into "Free running BCD calendar and binary mode" in the .ioc file then the RTOS timer no longer fires.To summarise, I need:BLElow power sleepwake at specific time of dayRTOS timers once awake.Does anyone have an example of this type of scheme?
Hi, I was trying to upgrade my ble wireless stack from CubeProgrammer but everything give me this error. I tried to install stm32wb5x_FUS_fw or stm32wb5x_FUS_fw_for_fus_0_5_3 to their correct addresses from release notes but nothing works. I am able to flash code from cube ide but these wont work. I can start FUS or take BOOT0 to 1 but these did not work too. Only thing I have in my mind is maybe my cube programmer. Due to language settings my cube programmer installation step 8 is stuck(I read this error from the forum too) but I can access to cube programmer from program files and it can connect/read/flash so I dont think this is the problem too. On the board RX/TX pins between st link and mcu are not connected but it should not be the problem as well because I am using st link and can flash anything from cube ide
Hi,I'm developing a board where i'm using the STM32WB55xx microcontroller. I do not intend to use the BLE interface for now and I do not want to have this pins wired. My question is what should i do with the RF1 pin of the microcontroller given that i do not intend to use the functionality. Should I leave it hanging or should it be connected to GND or VCC?Per the description of the datasheet, the RF1 pin is the pin to connect to an antenna. It's not clear on the Datasheet what to do when I do not intend to use it. Best,Alessandro
Hi,I’m looking for some help — I’m trying to generate a continuous waveform at 432.492 MHz using the Nucleo WL55JC2, but I haven’t had any success so far. I also tried at 861.1 MHz, but still got no output.After extensive troubleshooting, I discovered that the issue was caused by the TCXO (PB0) not being powered at 3.3 V, and the SP3T not being properly configured because PC3/PC4/PC5 remained at 0 V instead of 3.3 V.To address this, I modified the project — without generating the CW signal for now — simply to control the state levels of PB0, PC3, PC4, and PC5, and to make it work correctly with both the CM0+ and CM4 cores.M0PLUS main.c is:#include "stm32wlxx_hal.h" static void Error_Handler(void) { __disable_irq(); while (1) { } } int main(void) { HAL_Init(); /* Clocks GPIOB/GPIOC */ __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); /* Configure PB0, PC3/PC4/PC5 en sortie push-pull */ GPIO_InitTypeDef g = {0}; g.Mode = GPIO_MODE_OUTPUT_PP; g.Pull = GPIO_NOPULL; g.Speed =
Hi,I'm working on Low Power mode of the LoRa on STM32WLE5. My main moto is to get the best possible low power consumption. By experimenting and documentation, Radio consumes more power. So, I wanted to make that into Standby mode and from that I wanted to set the radio into CAD mode by setting the cad Parameters. And also I have reconfigured the Radio every time the radio is being timed out.I'm using SF7 Spreading factor and TX and RX preamble length is 6. So I set the recommended CAD parameters as per the reference manual. Radio.Standby();SUBGRF_SetCadParams(LORA_CAD_02_SYMBOL, 22, 10, LORA_CAD_RX, 0xFA00);Radio.StartCad(); static void OnCadDone(bool channelActivityDetected){if(channelActivityDetected == true){APP_LOG(TS_ON, VLEVEL_L, "Woke up with CAD\n");} else {APP_LOG(TS_ON, VLEVEL_L, "CAD Timeout\n");Radio.SetChannel(868000000);Radio.SetRxConfig(MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,LORA_SYMBOL_TIMEOUT, LORA_FIX_
Dear ST Support Team,I am currently working with the P-NUCLEO-WB55 development board and using STM32CubeWB firmware package. I am trying to run the official example: Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS The project builds successfully, and I am flashing the application to CPU1 using STM32CubeIDE. The BLE stack firmware (stm32wb5x_BLE_Stack_full_fw.bin) has been successfully flashed to CPU2 using STM32CubeProgrammer and confirmed as "Firmware Upgrade Success".However, the application consistently gets stuck at the following line in void APP_BLE_Init(void): status = SHCI_C2_BLE_Init(&ble_init_cmd_packet); This prevents the BLE stack from starting, and no further initialization happens. I have already ensured:Low-power mode is disabled (CFG_LPM_SUPPORTED = 0)The transport layer is initialized (shci_init() and TL_Enable() are called)The debugger loses connection shortly after hitting this point, or the code enters Error_Handle
Dear ST Support Team,I am using STM32WB55 with firmware stm32wb5x_BLE_Thread_dynamic_fw.bin release V1.23 and application based on samples in STM32CubeFW. I flashed two devices and set both devices:OT_LinkMode.mRxOnWhenIdle = 1U;OT_LinkMode.mDeviceType = 1U;OT_LinkMode.mNetworkData = 1U;and coap capabilities.I noticed the following behaviour:Device1:EUI-64: 76:1A:D6:A4:98:A7:2C:70Preferred IPv6: fdeb:6e2:6135:d326:0:ff:fe00:5c00Preferred IPv6: fdeb:6e2:6135:d326:23d4:335f:27aa:3a48Preferred IPv6: fe80:0:0:0:741a:d6a4:98a7:2c70RLOC16: 0x5c00Device2:EUI-64: 76:1A:D6:A4:98:A7:2C:70Preferred IPv6: fdeb:6e2:6135:d326:0:ff:fe00:5402Preferred IPv6: fdeb:6e2:6135:d326:23d4:335f:27aa:3a48Preferred IPv6: fe80:0:0:0:741a:d6a4:98a7:2c70RLOC16: 0x5402Both devices have the same extAddr and same IPv6! (eui-64 read thanks otLinkGetExtendedAddress(...) ).If I use otLinkSetExtendedAddress(...) with extAdrr coming from reading at @UID64_BASE (according to user manual Flash 64 sec
HiI have 6 BLE peripherals with some ADC's. I need to make sure that all 6 devices sample at the same time. The Accurracy needs to be below 500 micro seconds. Is there a way to synchronise devices via BLE stack ?Thx
Dear community, On my board, a STM32WB55CEU6. My aim is to add the DFU BLE possibility for code update.On the first picture, you will see mu CUbeProgrammer Interface.After click on "Read FUS infos", i'm able to read status.The FUS is ok, but the stack version ( 0.0.0) seems to say "no version".When i'm trying to flash the official binary of BLE_STACK_light (Light, full, extended,... same problem).I'v got an warning.An idea ?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.