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'm using the STM32WL55 for LoRa communication.I found out that when receiving a packet the RX IRQ from the transceiver is executed in a delay from when the packet finished transmitting.From my tests this delay depends on the channel configuration and the delay is around the time of a single symbol (around 85% of a symbol time, changing slightly between configurations).The timing of this IRQ is crucial for me to time my system's operations.Is this delay expected? If so, is there a formula for it? Is there a way to remove the delay altogether?Thank you
Hi,I have found some questions and discussions with similar topic, but no answer seems to apply to my case. I have an STM32WB55 Nucleo Pack, and I cannot manage to load any of the BLE stack binaries provided with the STM32Cube_FW_WB_V1.16.0 into my device.The non-BLE example applications running only on CPU1 are working without problems.If I use the STM32CubeProgrammer (V2.13.0) via SWB, it connects without issues. If I select the FUS page and press "Read FUS Infos", I get "FUS State: IDLE", "FUS Status: FUS_No_ERROR" , FUS Version "v.0.0.0.0", STACK Version "v0.0.0.0" and FUS Operator "v3.1.0". If I press "Start Wireless Stack", I get "unknown error", presumably because there is no one present. And if I try to load for example "stm32wb5x_FUS_fw_for_fus_0_5_3.bin" at address 0x080ce000 (as specified in Release_Notes.html), I get the following messages: 19:46:18 : Old Firmware delete ... 19:46:18 : Warning: Option Byte: nSWboot0, value: 0x0, was not modified. 19:46:18 : W
Hi all,I'm here beceause I have a question about STM32WL55, I have this board STM32WL55JC and I I look in CAD ressources in schematic file , there is a switch to chosse between High or Low power emission and receive mode. This switch U7 is is ordered by FE_CTRL1/2/3 but where these pin are used in STM32WLxx-HAL_Driver maybe when we call SUBGRF_SetSwitch ?Thanks
I am developing a FreeRTOS project with around 12 tasks, many of which use the open thread ot* functions. However, my program will occasionally deadlock on all OpenThread commands, with the stack for each task showing that it is waiting for "Wait_Getting_Ack_From_M0" to finish.I believe this is related to attempting to concurrently use OpenThread functions within multiple tasks. Is there any documentation or guidance from STM on whether gating OpenThread functions with a mutex is necessary?
Hi, Context:I am currently developing a LoRa board implementing the STM32WL55. I didn't get the SubGHz Middleware to work, so i implemented the approach as detailed in the reference manual page 206. The code compiles, and the tx-complete interrupt is getting triggered, so everything seems to work as it should. I then tried to receive my LoRa messages with a Nucleo Board, where i modified the SubGHz_Phy_PingPong example to not send Pings anymore and print everything it recieves to the USB UART. It works perfectly when I send lora data via another Nucleo. I saw that in the subghz_phy_app.h of the PingPong Example it says: #define LORA_BANDWIDTH 0 /* [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved] */ #define LORA_SPREADING_FACTOR 7 /* [SF7..SF12] */ #define LORA_CODINGRATE 1 /* [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] */ #define LORA_PREAMBLE_LENGTH 8 /* Same for Tx and Rx */ #define LORA_SYMBOL_TIMEOUT 64 /* Symbols */ #define LORA_FIX_LENGTH_PAYLOAD_ON false #define LORA_IQ_INVERSION_ON false
I am using the STM32WB55RG MCU, Bluetooth feature with stack version 1.13.0 and FUS version 1.2.0. Everything was working normal until I tried doing the firmware upgrade of stack from v12.0 to v13.0. I am not able to perform FUS related operations. The version reading shows 0.0.0 for FUS. And following is the log when I hit "Start FUS" 11:09:47 : Warning: Option Byte: nSWboot0, value: 0x0, was not modified. 11:09:47 : Warning: Option Byte: nboot0, value: 0x1, was not modified. 11:09:47 : Warning: Option Byte: nboot1, value: 0x1, was not modified. 11:09:47 : Warning: Option Bytes are unchanged, Data won't be downloaded 11:09:47 : Succeeded to set nSWboot0=0 nboot1=1 nboot0=1 11:09:47 : Memory Programming ... 11:09:47 : Opening and parsing file: 0x495_FUS_Operator.bin 11:09:47 : File : 0x495_FUS_Operator.bin 11:09:47 : Size : 8 KBytes 11:09:47 : &nb
Hello everyoneI produce devices on the WB55CG with a BLE stack.There is a working firmware with libraries 1.10.0, everything worked successfully on chips with FUS 1.1.2.0Now a new batch of devices is in production, now in the MCU FUS 1.2.0.0.1) Do I understand correctly that it is no longer possible to install BLU stack 1.10 for FUS 1.2.0.0? I get an error when trying.2) Is it also impossible to install the old FUS (1.2.0.0 -> 1.1.2.0)?3) If you install a fresh stack - 1.16 - everything works as it should, except for one nuance:After connection, the current consumption increases by 0.3 ma and remains the same after disconnection, which is too much.Perhaps there is some obvious solution to this problem? Or do I need to completely rebuild the project with new libraries?
I am using stm32wl55jc1. I want to use accelerometer at 50khz and microphone at 2khz (2048). I am trying to make fft. With pooling adc method, I can do that easily. with 500 micro second delay. for(int i=0;i<128;i++) { microSecond=micros(); HAL_ADC_PollForConversion(&hadc,1); readValue = HAL_ADC_GetValue(&hadc); data[i] = readValue; delay_us(500+microSecond); } FFT(data,128,2000);I shouldn't blok the cpu so I need to use dma. Sampling Time: 16 ADC clock cycle((12.5+1.5)*1/24MHz=0.58333µs) here is my adjustment of adc:here is my code:uint32_t ADC_VAL[128]; void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { FFT(ADC_VAL,128,2048); } HAL_ADC_Start_DMA(&hadc,ADC_VAL,128);As I said before, I can use fft without problem with pooling and timer. I am writing 0.5 mikrosecond delay and thats it. I want to use dma but I couldn't manage it. How can I adjust sample rate with dma ? and if I do that, can I use accelerometer and microphone wi
Unluckily, I haven't found indications as to which of this functions to use for a basic transmit/receive application. In the HAL documentation and inside the stm32wlxx_hal_subghz.c file the functions are described independently but there is no context for their use. For example, in the case of the function HAL_SUBGHZ_ExecSetCmd it says that it's used to send a command to the radio and although the commands are listed in the stm32wlxx_hal_subghz.h file, I couldn't find what each of them do. In my application I don't need to use RTC and DMA but the code that CubeMX generates doesn't compile if I don't use them because they are required by the timer_if.c and usart_if.c files.On the other hand, I have also tried to modify the code of the SubGHz_Phy_PingPong_DualCore project which is my second opinion because I want to use hal functions. I don't completely understand the code, for example, why are there subghz functions in both core's main.c files if according to CubeMX the subghz periphera
Hello all,I am running a custom BLE application on STM32WB55 and I want to implement low power STOP2 mode because it's the deepest while RF is still alive. The idea is to periodically wakeup, procced some data and go back to STOP2. I may also need to wakeup on a BLE connection request.From my research and what I understund (please do not hesitate to correct me in anyway) : I don't need to care about CPU2 (Cortex-M0+) low power because it will achieve this best availableI need to take care of semaphores when going into STOP2 to synchronize between the 2 cores I've look carefully about the hearth rate project and try to use it as a template. What I've done: I am running on HSE_Sys@32MHz, to be able to use function provide in stm32_lpm_if.c whitout modification.On app_entry.c into MX_APPE_Init():/** * The Standby mode should not be entered before the initialization is over * The default state of the Low Power Manager is to allow the Standby Mode so an request is needed here */ UTIL_LP
Hi, I'm trying to start the zigbee on Nucleo-WB55.After upgrading the FUS to 1.2.0.0 and Stack to 1.16.0.0 without any problem, I get an issue in the running code when it checks the "StackType",it should be 48 or 49 but it returns 0:Tested with two different examples on two boards... What can I check?Thank you, Pierre
Hi All,I have implemented a code using Arduno IDE. In that we are transmitting data at every 5 minutes. For that I am getting sleep current around 6uA. But When I am using STM32cubeIDE to generate same type of code I am getting sleep current around 5mA. How can I reduce this Sleep current. It is very much crucial for my project.Please give your ideas.
..
HelloI have a P-NUCLEO-LRWAN3 kit. I would like to apply some peripheral at Gateway but I didn't find the source code.If I can't get the gateway source code. I would like to get the binary pre-installed on the NUCLEO-WRWAN3 gateway.Thank you.
Hi, I want to choose a ST MCU/MPU and I would like the CPU to have BLE, to be able to run a low power mode (STANDBY), use < 5µA in STANDBY and be able to listen on BLE during STANDBY mode Best is that BLE chip would be in STANDBY as well but listening So MCU/MPU + BLE in STANDBY would use less than 50µA Is there a ST MCU/MPU solution? Thanks,
How to write our own STM32WB BD Address when production? Is there any tool or APIs of Windows to control STM32WB for testing frequency offset/ TX power/ RX sensitivity with 8852.
I'm using a NUCLEO-WB55RG board and if I create a new project in STM32CubeIDE 1.12.0 and enable the STM32_WPAN and HeartRate example it doesn't work because the different buffers that need to be in SRAM2 is not placed there.The app_entry.c defines these buffers like this:PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t EvtPool[POOL_SIZE]; PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t SystemCmdBuffer; PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t SystemSpareEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U]; PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t BleSpareEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255];The automatically generated linker script contains the following, which ends up placing the buffers in RAM1 if I look at the address at runtime using the debugger./* Specify the memory areas */ MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K RAM1 (xrw) : ORIGIN = 0x20000008, LENGTH = 0x2FFF8 RAM_SHARED (xrw) : ORIGIN = 0x2
Hi All,I have implemented EEPROM Emul Middleware in STM32WL project (https://www.st.com/resource/en/application_note/an4894-eeprom-emulation-techniques-and-software-for-stm32-microcontrollers-stmicroelectronics.pdf) in lieu of writing directly in FLASH the NVM Lorawan Context Structure.LorawanEndNode example store the NVM Lorawan Context Structure in FLASH, directly as follow( function OnStoreContextRequest in lora_app.c):if (FLASH_IF_Erase(LORAWAN_NVM_BASE_ADDRESS, FLASH_PAGE_SIZE) == FLASH_IF_OK) { FLASH_IF_Write(LORAWAN_NVM_BASE_ADDRESS, (const void *)nvm, nvm_size); }I changed this function to my own function using EEPROM Emul //store nvm in eeprom writeNVMContext_EEPROMemul ((const void *)nvm, nvm_size);And something similar to restore the context.It is working properly as desired: I store the NVM lorawan context every Uplink/Downlink message. This works for my OTAA session is always ok after poweron/off or hard resets.Save lifetime of FLASH in this case of use:EEPROM Emul: E
I am following this video link showing step by step to create OTA app.https://www.youtube.com/watch?v=mRzZOa3jmuM.I am successfully to create the custom application, download the OTA loader app at 0x08000000, and the custom's app at 0x08007000. The problem I am facing is whenever I sent some data to OTA Reboot characteristic, the custom app is just reset, then go back to the custom app. It didn't enter the OTA loader app. Am I missing something like the erase current app function? I also notice in my custom app, once the ST BLE tool box or ST BLE Sensor app connects to my device, it didn't show the OTA reboot option like when I tried the BLE_p2pServer_ota.
Hello Geeks...Hope all are doing wellRecently, I'm working on STM32WB FUOTAI know the FUOTA terminology of the STM32WB through the application document AN5247Moreover, I have gone through the YouTube Tutorial series of the FUOTA for WB seriesI'm trying to update my application over FUOTA but, some how it's verification always fails and it's rollover to BLE OTA loader app!here are the steps which I'm followingUpdated the linker script as per the "BLE_HeartRate_ota" example commented SCB->VTOR from system_stm32wbxx.c file BLE_CFG_OTA_REBOOT_CHAR set to 1 in ble_conf.hAdded the OTA reboot characteristic (which is working well, and MCU able to reboot during the OTA request) Flashed "BLE_Ota" Firmware starting from 0x08000000 flash memory location Flashed the main application Firmware with OTA enable char. starting from 0x08007000 flash memory location Verified the MagicKeywordAddress address 0x08007140Problem statements & Test procedure 1. Application firmware seems work
Edit: It's always embarrassing when you ask a question and immediately afterwards you find what you where looking for...Please ignore this question.---Original question: I'm starting to work with the STM32WB5MM-DK, but I can't find the schematics. Are they not available yet?For some first visual feedback I wanted to use the RGB LED, but the user manual of the DK says: "In this configuration, GPIO_SELECT2 (PH1) is the chip select for this RGB device on SPI1.The RGB LED is driven by the TLC59731 PWM LED driver from Texas Instruments."Unfortunately theTLC59731 doesn't have a chip select. And the data protocol is not SPI, but some weird "EasySet" single wire interface.So I would like to check the board schematics, to understand how the TLC chip is wired to the STM.
Hi all !Does anyone know if it's possible to port SPI Emulator to the STM32WB5MMG family ? (or have an example of a possible implementation from scratch ?)I would like to implement a simple slow half-duplex master SPI protocol using custom ports.Did give a quick try to adapt the existing library for STM32F but for the moment the compilator mainly complains about this portion of the code (tried to create stm32wbxx_hal_def similarly to what's existing for STM32F series because it doesn't exist in hal library but spi emul needs it)#define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \ do{ \ (__HANDLE__)->__PPP_DMA_FIELD__ = &(__DMA_HANDLE__); \ (__DMA_HANDLE__).Parent = (__HANDLE__); \ } wh
I have a question about STM32WB55RGV6. I will list my current progress below.- First of all, I will be using the NUCLEO-WB55RG board to use the IEEE 802.15.4 MAC Stack. - I want to communicate with the Xbee S2C (XB24CZ7WIT-004) from Digi to send and receive data via USB UART.- The configuration of Xbee S2C is as shown in the picture below. (PanID : 0x3332, Channel : 0x0C ...)- The link below is the information of Digi Xbee S2C.https://www.digi.com/resources/library/data-sheets/ds_xbee_zigbee?view=fullscreen- The connection configuration is as shown in the "Block Diagram" photo below.- I used the example in the link https://github.com/STMicroelectronics/STM32CubeWB- The current version of STM32WB Copro Wireless Binaries is 1.16.0.- The current FUS version is V1.2.0.0.- "...\STM32CubeWB-master_Origin\STM32CubeWB-master\Projects\P-NUCLEO-WB55.Nucleo\Applications\Mac_802_15_4\Mac_802_15_4_FFD\STM32_WPAN\App:" I modified the "app_ffd_mac_802_15_4.c" file in this path to fix the Channel a
I am getting the following errors when debuging the project from the package. I have the standard package downloaded directly from the official website, I've also done a full chip erease and after this, load the firmware again, and the error persists. I am using the version 2.1.0 of the package.On the following I am putting the error prints.set *(int *)0xE000EDFC=*(int *)0xE000EDFC|0x400set *(unsigned int *)0x40015804&=~0x6Temporary breakpoint 1, main () at C:/Users/eduar/OneDrive/Escriptori/STM32CubeExpansion_LRWAN_V2.1.0/Projects/NUCLEO-L073RZ/Applications/LoRaWAN/LoRaWAN_End_Node/Core/Src/main.c:7373 HAL_Init();
Hey everyone, I am trying to send out two different characteristic notifications, one after the other and I am getting error 0x93 (BLE_STATUS_BUSY) in return for the second characteristic update, It then takes at least 100mS (often a lot more than this) before I am able to update the second notification. I am assuming that this is a limitation of the underlying BLE stack but can't find any information of what causes a busy status.When just updating a single characteristic, I get often get an 0x64 which I can easily recover from by listening for the gatt tx pool available event, however I can't find a way of knowing when the second CPU is no longer busy.Any other tips on optimising throughput when updating multiple characteristics would be greatly appreciated.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.