TODAY | STM32 Summit 2026
Ask questions and discuss STM32 wireless solutions and their implementation for running Bluetooth LE, Zigbee, LoRaWAN applications.
Most recent activity
Does STM32WB chip comes pre-programmed with DFU bootloader from factory?If not where I can find the compiled version of bootloader? (The available DFU bootloaders in STM32Cube files look different than system bootloader)
Hello,When using the Coprocessor binarie "stm32wb5x_BLE_HCILayer_fw.bin" I'd like to know which vendor specific commands are still available.I'm very interested having access to "HCI extension commands" in order to get firmware build number, set tx power level & tone features.Thanks for your help.
I have a P-NUCLEO-LRWAN3 toolkit and I would like to know how I can get the firmware&code for Lora GW which is runing on NUCLEO-F746ZG. The I-CUBE-LRWAN only contain that for Lora End Node which is running on NUCLEO-L073RZ.In the document DM00620948 I see the follow words "The gateway firmware binary is available upon request directly from STMicroelectronics.". So I would like to know if I can get the newest firmware(current I'm using "2.1.7, Nov 6 2018").What's more, is the source code of gateway firmware available to me? I want to add some extra logic on gateway. I'll be highly appreciate if you could provide the source(source with libraries is also accessable).Thank you!
I am using the software I-CubeLoRaWAN to create a class A end node from a STM32 and SX1272. From the spec the protocol LORAWAN have a MAC command to request the server time. This function is implemented in I-CubeLoRaWAN (file lora.c) :#ifdef LORAMAC_CLASSB_ENABLED #if defined( USE_DEVICE_TIMING ) static LoraErrorStatus LORA_DeviceTimeReq( void){ MlmeReq_t mlmeReq; mlmeReq.Type = MLME_DEVICE_TIME; if( LoRaMacMlmeRequest( &mlmeReq ) == LORAMAC_STATUS_OK ){ return LORA_SUCCESS; }else{ return LORA_ERROR; } }As showed in the code, the function is not defined if LORAMAC_CLASSB_ENABLED is not defined. Since i am using a class A end node how should i modify this?
Hi, i am using the BL072Z board and in the ADC examples with interrupts the HAL_GetTick() function doesn't works, it returns 0 , also in the examples of LoRa like the called "end_node" happens the same, now i have built a project with cubemx and HAL_GetTick() works but not as it use to works with other boards like the stm32f411 , in that board i did not need to put the HAL_GetTick() inside the while loop (because is fired by an interrupt) but in the BL072Z LoRa board is necessary to put that function inside the loop, why?
Hi, I'm fairly new to the STM32 world. I'm running CubeIDE 1.2.0 with a P-NUCLEO-WB55 board and stm32cube_fw_wb_v140.I am using the built-in task scheduler and I believe the IDE is generating invalid code. I am pretty sure the code in Core/Inc/app_conf.h shown in the first attachment "original.png" should actually read like the code in "corrected.png" (Ie the -1 should actually be a +1).Without the change the scheduler does not run my custom task. I first noticed this in CubeIDE 1.1.0 and stm32cube_fw_wb_v130. I have not checked for versions earlier than that.So for a quick fix I have to run this command in a shell after every code generation:sed -i 's/CFG_FIRST_TASK_ID_WITH_NO_HCICMD = CFG_LAST_TASK_ID_WITH_HCICMD - 1/CFG_FIRST_TASK_ID_WITH_NO_HCICMD = CFG_LAST_TASK_ID_WITH_HCICMD + 1/' $projectdir/Core/Inc/app_conf.hPlease review and let me know if the change is required, or if I am not understanding things correctly.Thanks!
Hello.I am trying to do single-channel touch-sensing without using the TSC. For that, I put a weak pull-up on that pin. In a cyclic process, I make the pin OUTPUT-LOW, then release it and measure the rise time through Input Capture. It's a very basic test application, and I have successfully done it on many other controllers including BlueNRG-2. Unfortunately, I am not able to do the same in this.Through various measures, I have confirmed that the user application loses control of the pin as soon as the corresponding timer (associated to the pin for Input Capture) is enabled, no matter what Pin-Timer combination I use.Does anyone have any idea how to bring the control back to the user application with the Input-Capture enabled?Please note, I am configuring the controller and all its peripherals, including the Input-Capture Timer, through the latest version of STM32CubeMX.Any suggestions on how to resolve this is highly appreciated.
I want to use the OpenThread UDP API. So far I implemented the UDP datagram reception without any problems. Sending a datagram using the CLI works fine. When it comes to sending a datagram via the API I always get either OT_ERROR_INVALID_SOURCE_ADDRESS or OT_ERROR_DROP when I call the otUdpSend function.The invalid source address seems to be a problem with the otIp6GetUnicastAddresses and otThreadGetLinkLocalIp6Address functions. Both of them are returning addresses like "::" instead of the Link-Local or other valid addresses. Are those functions correctly implemented?Can someone please provide a fully working example how to send a UDP datagram using the OpenThread API on an STM32WBxx? Thank you very much.Currently used STM32CubeWB is 1.4
Is there any place I can find the source code for OpenOCD bundled with current release of STM32CubeIDE? I'm asking because I think source for this should be provided as it is under GPL, I'm asking since STM32WB is not supported in source available on SF and I want to compile everything from scratch.
Hi, I want to connect my cellphone to a speaker through STM32WB using Bluetooth.
Good morning everyone,I'm coding with Atollic Truestudio and CubeMX.I would like to ask for some helps concerning a function called "arm_bitreversal_32" in the "arm_cfft_f32.c".Here is my problem.I'm trying to use the function "arm_cfft_f32(x,x,x,x)" from the "arm_cfft_f32.c" file. And I got this error in this C file:undefined reference to `arm_bitreversal_32' I'm not sure if some files are missed or I should implement it by myself because the function "arm_bitreversal_32()" is declare externally (extern void arm_bitreversal_32()). I thank everyone who will try to help me to resolve my error.arm_cfft_f32.c":#include "arm_math.h" #include "arm_common_tables.h" extern void arm_radix8_butterfly_f32( float32_t * pSrc, uint16_t fftLen, const float32_t * pCoef, uint16_t twidCoefModifier); extern void arm_bitreversal_32( uint32_t * pSrc, const uint16_t bitRevLen, const uint16_t * pBitRevTable);void arm_cfft_f32( const arm_cfft_instance_f32 * S, float32_t * p1, uint8_
Hi, I have in hand a customer board with a STM32WB55CEU6 MCU. I was able to program CPU1 (M4) firmware but it seem that CPU2 (M0+) didn't have any firmware programmed.I have found that I need to program stm32wb5x_BLE_Stack_fw.bin into CPI2. Did you have a simple procedure to do that?Board only have jtag interface SWCLK, SWDIO line, no uart or USB connector, BOOT0 line is available but NC for now.Any help will be greatly appreciated.Regards,Marc Drouin
We are currently working on STM32WBCC. Let's say my device name is DEVA. Have the following questions:1. DEVA needs any ability to connect to another BLE device DEVB.2. DEVA needs to maintain the lowest possible power when having the connection in tact with DEVB. What power state should my DEVA be in.3. I need to get a theoritical calculation on how much my device would consume in this state, also what would the entire connection cycle look like in terms of current consumption.
can anyone help me out on how to configure these devices and code them. thank you
i have been Using STM32WB55 Nucleo Board , and have successfully implemented BLE examples from repository and its Working fine, but suddenly now my board is not executing any BLE Applications , so i have updated M0 Cortex firmware i.e BLE stack From repository (stm32wb5x_BLE_Stack_fw.bin) in bootloader mode using USB . Still its not working .Also in Debug mode i am able to go into APP_BLE_Init(), which means my BLE get initialized.please help me with the query .Is it in the Firmware or there may be Hardware issue Also?
How i can do it?
Hello,I'm working on a product that integrates Murata's CMWX1ZZABZ-078 to do either LoRa or Sigfox (in different configurations, with different firmwares). I've tested it with ST-provided example applications for LoRa (AT_Slave and PingPong), and it works fine. But using the Sigfox ModemAT example, with its precompiled library objects, it appears I can't emit on the radio.First I've built the software using GCC and GNU Make, with a homemade Makefile and small alterations to the code and linker script. Then I've gotten my hands on an IAR EWARM trial version to build the code as provided by ST.I don't have credentials to access the Sigfox network yet, so I'm testing radio with the command "AT$CW=868". I can see no wave being emitted, and the device seems frozen after the command.I then tried the same steps on my B-L072Z-LRWAN1, and got the same result, except an additional SFX_ERR_INT_GET_DEVICE_INFO on startup (code 0x0099, no manufacturer error code).For some reason I can't get OpenOCD
Is it possible to connect an USB HID to STM32WB Nucleo Board ? Thank you in advice!Stanislav
What's the anticipated availability of this part?
I am currently working on STM32CubeExpansion_LRWAN_V1.3.1 projects. I am using STM32l073 mcu. In End-Node project, the LSE clock is used as RTC source. But I want to use the LSI clock as RTC source instead of LSE. So far I could not be succesful.Could you help me about this issue? How can I implement the LSI clock correctly as RTC source in LRWAN project?
I've been trying to make connection with STM32F0 Discovery and hc-06 bluetooth module via USART2. I've configured Discovery as shown on figure below. Additionally there is an nvic interruption. Hc-06 is configured the same way as Discovery.uint8_t bluetooth_recive = 1; HAL_UART_Receive_IT(&huart2, &bluetooth_recive, 1);I've checked hc-06 if it's passing values sended form app on smartphone. App I was using was Bluetooth terminal HC-05. I was sending ASCII code. Connected hc-06 via usb_uart converterwas passing values to computer's application Realterm.So my question is if there is a configuration problem or something else..
I wonder why are all ACI commands, that imply using pointer-to-const parameters actually use non-const ones? Is there any reason? Will it ever be fixed?For example:tBleStatus aci_gatt_add_service(uint8_t Service_UUID_Type, Service_UUID_t *Service_UUID, uint8_t Service_Type, uint8_t Max_Attribute_Records, uint16_t *Service_Handle) { <...> Osal_MemCpy((void *) &cp0->Service_UUID, (const void *) Service_UUID, size); <...> }
I am running the above mentioned board about 3 meters away from two gateways, a TTIG and a RAK7258. I made two modifications to the stock End Node application - I modified Commissioning.h with the EUI, etc. for one of the gateways (have tried both), and changed the preprocessor define from REGION_EU868 to REGION_US915.I monitor packets on both gateways. After resetting the B-L072Z-LRWAN1 board, it will join whichever gateway I have it configured for, but it takes it anywhere from 2 to 6 attempts. After that the uplink packets appear intermittently on both gateway traces with RSSI values that vary wildly. For some packets, the RSSI is around -28, with an SNR of 8 to 14. These packets show up on both traces. Other packets either never show up, or show up on only one gateway with RSSI around -120 and SNR of -11. Most of the time I am missing 50% or more of the packets. Every once in a while things will straighten up and I receive 100% of the packets for hours.So it appears that there is a
We were planning to replace our STM32WB55 design with an STM32WB50CG, unfortunately we saw the errata document DM00625356.In particular we need to operate with LSI2 for the Bluetooth and cannot add an LSE crystal.When will there be a silicon revision to STM32WB50 that fixes this issue?
In the linker scripts for BLE_p2pServer_ota in CubeWB1.3.0, the ld script puts the OTA_TAG at 0x08007178:/* Specify the memory areas */ MEMORY { FLASH (rx) : ORIGIN = 0x08007000, LENGTH = 1k RAM1 (xrw) : ORIGIN = 0x20000004, LENGTH = 191k RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10k OTA_TAG (rx) : ORIGIN = 0x08007178 , LENGTH = 599k }However, the BLE_ota example checks a COMPLETELY different address in CheckFwAppValidity:static uint8_t CheckFwAppValidity( void ) { uint8_t status; uint32_t magic_keyword_address; uint32_t last_user_flash_address; magic_keyword_address = *(uint32_t*)(FLASH_BASE + (CFG_APP_START_SECTOR_INDEX * 0x1000 + 0x140)); last_user_flash_address = (((READ_BIT(FLASH->SFR, FLASH_SFR_SFSA) >> FLASH_SFR_SFSA_Pos) << 12) + FLASH_BASE) - 4; if( (magic_keyword_address < FLASH_BASE) || (magic_keyword_address > last_user_flash_address) ) {In particular the line:magic_keyword_address = *(uint32_t*)(FLASH_BASE + (CFG_APP_START_SECTOR_I
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.