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,Our application is to count fast external interrupt with denouncing in EXTI_callback().only When this interrupt is ongoing and try to write flash ,then STM32WLE5CC hangs, and reboot using Independent watchdog.Write to flash code:void emulated_eeprom_write_buf(uint8_t * buf, uint16_t length){ if((length)>2047) return; uint32_t base_addr=0; base_addr=getHexAddressPage(DATA_PAGE); memoryPageErase(DATA_PAGE); HAL_FLASH_Unlock(); for (uint32_t i = 0; i < length; i += 8) { uint64_t data64 = u8touint64(buf+i); if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, i + base_addr, data64) != HAL_OK) { HAL_FLASH_Lock(); return ; } } HAL_FLASH_Lock(); }In HAL_GPIO_EXTI_Callback() there is 50ms debounce check.If there is no interrupt, then this issue doesn't arise.please help us to solve this issue.Thank You
Hi,I'm using stm32wb55 for ble application.I want to check the connection state of BLE for conditioning case.Is there any global instance or register which contain the state of BLE?Thanks.
The datasheet indicates the value of 470nF for the SMPS mode on the VFBSMPS pin. But for the LDO mode, I didn't find the required value.Thanks
Hello guys,I want connect to a bluetooth device from STM32WB.I've used this function inspiered to setup the connection with the device found when scanning but it won't connect to it it always print out Connection To Slave Failed with reason 0x46 which means connection, not allowed, am i missing something here?for info : the connection works fine when using p2p_client examplestatic void vConnectionRequest(eAppBleConnectionStatus __e_NewStatus) { uint8_t __au8_MacAddressP2PSrv[6U]={0xE5,0xD7,0x25,0xE1,0x80,0x00}; tBleStatus result; if (_t_BleApplicationContext.e_DeviceConnectionStatus != APP_BLE_CONNECTED_CLIENT) { result = aci_gap_create_connection ( 0x320, 0x320, 0x00, __au8_MacAddressP2PSrv, 0x00, 40U, 80U, 0U, 0x1F4, 16U, 16U ); if (result == BLE_STATUS_SUCCESS) { _t_BleApplicationContext.e_DeviceConnectionStatus = APP_BLE_LP_CONNEC
Under what circumstances will the BLE controller return Command Disallowed (0x0C)? I am calling aci_gap_set_discoverable() followed by aci_gap_update_adv_data() periodically. I see aci_gap_set_discoverable() return successful the first time that it's called upon startup and also upon receiving HCI_LE_CONNECTION_COMPLETE. It appears to fail at all other times and the advertising packets are not transmitted.
I basically have this code:while (...) { // A while (BLE_STATUS_INSUFFICIENT_RESOURCES == aci_gatt_update_char_value(...)) { // B osDelay(10); } } while (BLE_STATUS_INSUFFICIENT_RESOURCES == aci_gatt_update_char_value(...)) { // C osDelay(10); }The upper loop (A) is sending sequential notifications to a characteristic (B).The lower part is sending a final indication to a different characteristic (C).On the device that has subscribed to the notifications from B and indications from C, the indication from C seems to arrive earlier than the last notifications from B.In the end, all notifications are received, but the order is off compared to the code. I was expecting the BLE stack to have an internal message queue, meaning the indication would not be processed until the last notification was sent. But this does not seem to be the case.If B sends 96 notifications, the order I receive may be:B1, ..., B40, C, B41, ..., B96Is there any way to ensure C can only be received after B96
Could anyone please help me with this problem? Thanks in advance. I am using the low power manager (lpm) interface generated by MX for the STM32WB55 Nucleo board. I am using HSE as system clock source, so I did not make changes to the two functions PWR_EnterStopMode and PWR_ExitStopMode, as suggested by several posts. I found that when I did not turn on the low power manager, everything works fine. But when I turned on the lpm, the interrupts don't work anymore. It feels like I missed something in the function for exiting stop mode. But I tried many different things: turned on PLL, re-init DMA, SAI, I2C, but with no differences. I have struggled for almost a week without any progress. Could anyone please give me some pointers? I uploaded the three related functions (with comments removed). void DMA2_Channel3_IRQHandler(void){ HAL_DMA_IRQHandler(&hdma_sai1_a);}void PWR_EnterStopMode( void ){ HAL_SuspendTick(); EnterLowPower(); LL_PWR_SetPowerMode( LL_PWR_MODE_STO
Hello I'm trying to follow an example from "STM32WB Workshop - 3 How to add BLE functionality", but on the step with adding the scheduler I have a problem. There is no such a files in my project (scheduler.c & .h). I was doing everything step by step like in the video, but after generating a code files were not created. I can just copy them from demo projects or github of stm32wb firmware package, but I want to understand what the reason of happening it. Thank you!
Hello!I would like to ask for some help in my STM32 Project.In this project I want to receive and process a BLE beacon message with a Nucleo F411 board and X-Nucleo-IDB05A2 Bluetooth Shield.The message came from a simple device without any in or out periphery.This is the device: And this is the data format of the message:I want to use beacon application of the X-Cube-BLE1 software pack.I read the message with an android application, but I come up against a difficulty in the parameterize of the code.I think, I have to write the device UUID in the eddystone_beacon.c, and I have to send the values to the terminal with the User_Process() fg in the app_bluenrg_ms.cI find sources where the microcontroller measure something and send data via BLE beacon to smartphones, but I need the opposite of thatMy project: I would be grateful if someone could help me!
Dear All,I am developing an application and I have reached a point where the device is trying to join LoRa.For testing purposes, the gateway is closed, so the device ends up consuming all the available bandwidth on all channels and it can no longer try to send a join request.What I want is to have this message somehow communicated to the CM4, in order to accommodate this issue there.What I have found so far is that the LORAMAC_STATUS_DUTYCYCLE_RESTRICTEDIs propagated until the LoRaMacMlmeRequest( MlmeReq_t* mlmeRequest)found in CM0PLUS/Middlewares/Third_Party/LoRaWAN/LoRaMac.c.I think that what I need to do is to somehow forward this information to the MlmeConfirm( MlmeConfirm_t *mlmeConfirm )I tried this:LoRaMacStatus_t LoRaMacMlmeRequest( MlmeReq_t* mlmeRequest ) { LoRaMacStatus_t status = LORAMAC_STATUS_SERVICE_UNKNOWN; MlmeConfirmQueue_t queueElement; uint8_t macCmdPayload[2] = { 0x00, 0x00 }; if( mlmeRequest == NULL ) { return LORAMAC_STATUS_PARAMETER_INVALID; } if(
I am using STM32CubeIDE Version: 1.9.0 and STM32CubeMX Version 6.5.0 under Win 10I am modifying the End Node example on a NUCLEO-WL55JC and I need to use the STM32Cube_FW_WL MCU Package.For compatibility reasons I need to use the Version 1.0.0 of the MCU Package (newer versions are a no go for me)During code generation, CubeMX automatically upgrades the MCU Package to the latest available release (1.2.0).Trying to avoid this, I selected under Software Packs -> Manage Software Packs the Version 1.0.0 but at the moment of generating the code it still uploads version 1.2.0... Any help is appreciated
Hello,Our Device will be going to very Highly Noisy Hazard Environment Industry, We want to make sure device will work in any situation, STM32WLE5CC is End-node with Lorawan and Multiple application functionalities like RTC, Display etc.In this environment, if Uart RX interrupt is enabled, then it may arise many unwanted interrupts, which can affect our device functionality.Could you please suggest us is above statement is true?Should we keep this Interrupt Disable in this environment?any other suggestion to keep device functionality safe in this enviornment.Thank You
I am using STM32WB Discovery kit for STM32WBB5MM MCUs for development. I've setup the board as a RFD, Centralized End Device. I can do MAC association with a Zigbee server just fine. However, it would stop sending data requests after 8 requests as shown below: [M0] [00000000.820][API] Scan Done - unscan channels 0x0 [M0] [00000000.516][API] Poll Request - g_MAC_SUCCESS_c State ! [M0] [00000000.524][PLATFORM] ZbZdoDeviceAnnce : Sending Device_Annce for 0xa708[M4 APPLICATION] ZbStartup Callback (status = 0x00) [M0] [00000000.579][API] Poll Request - g_MAC_SUCCESS_c State ! [M0] [00000001.079][API] Poll Request - g_MAC_SUCCESS_c State ! [M0] [00000001.578][API] Poll Request - g_MAC_SUCCESS_c State ! [M0] [00000002.078][API] Poll Request - g_MAC_SUCCESS_c State ! [M0] [00000005.579][API] Poll Request - g_MAC_SUCCESS_c State !&nbs
Note: I can use stlink to download programs to other boards.But p_nulceo_wb55 doesn't work well. I use an external stlink instead of the on-board stlink, the errors are same.I was learning Bluetooth, It would have worked well. After a while, an error has occurred. Is it because I have downloaded some program?The errors are as follows(use stm32cubeprogrammer :(the erros in stm32cubeide:
Brief: I am using cubemx to configure and generate code.MCU: stm32wb55rgvxfirmware package name and version: FW_WB V1.13.3Details:I am working on a project where the stm must act as a bridge between the PC and the device under test (DUT). We use the newtmgr tool on the PC to transfer/upload the firmware on the DUT via the stm at baudrate of 1MHz. For this, we are using two uarts on the stm i.e. USART1 connected to the PC and LPUART1 connected to the DUT. All packets received from the PC must be relayed to the DUT and all packets/responses received from the DUT must be forwarded to the PC.I have attached the .ioc file that shows how I have configured the two uarts to be used with DMA's. I'd like the DMA's to work in the following cyclic order since it's a request-response mechanism.Receive packet from the PC over USART1-RXRelay this packet to the DUT over LPUART1-TXReceive a response from the DUT on LPUART-RXRelay this packet to the PC over USART1-TXWith the above configuration, the tra
I'm trying to use the STM32WB firmware event callbacks defined in ble_events.h and ble_events.c but they don't appear to be working.According to the documentation in PM0271 revision 2 section 4.4 I should be able to use the event callbacks framework as an alternative to the switch/case event handlers.However when I implement the event, it never gets hit (tried both with and without the __WEAK attribute):__WEAK void hci_le_connection_complete_event( uint8_t Status, uint16_t Connection_Handle, uint8_t Role, uint8_t Peer_Address_Type, const uint8_t* Peer_Address, uint16_t Conn_Interval, uint16_t Conn_Latency, uint16_t Supervision_Timeout, uint8_t Master_Clock_Accuracy ) { Debug_print("hci_le_connection_complete_event called!"); }But in my switch/case events I do get the EVT_LE_CONN_COMPLETE event triggering.The version of the STM32WB firmware I'm using is 1.10.0and the firmware loaded onto my P-NUCLEO-WB55 development board is V2J37M26loaded with STM32CubeProgrammer v2.5.0.I did
Hello,I have a project which contains both: Bootloader (BL) and Application (App.)The BL is based on minimal devices without interrupts, mainly RS485 - and worked Fine!The App. is based on "BLE_PERIPHERAL_LITE" example by ST, with my additional freeRTOS integration - Also worked Fine!After Reset, the control is transferred to the BL then it Jumps successfully to my App. (which is located at address 0x08008000), most of the times App. initialization goes - Fine, and the App. is working OK!!However sometimes (20% of the cases) the App. initialization doesn't succeed and it stuck in endless loop, but do recover after IWDT timeout.Below please find my main() code, on 20% of the times, the App. performs the CPU2_Init(); procedure (at line#42) and then stuck at line#48 until next IWDT occur, then my App. successfully recover and RUN!!!My question are: What might cause APP_FLAG_CPU2_INITIALIZED and APP_FLAG_WIRELESS_FW_RUNNING, M0+ flags (at lines #44-45) to remain "0" after Reset, at 20% of
This device isn't connecting with the network that I have plan of connectivity LoRaWAN.When I open the serial connection I see that the information is being read as it should. However, the connection to the network it's just not working at all. I used the commands from the user manual of the device to get the LoRa keys, and I put those in the network using the OTAA activation. Done that, the device just print " Rx TimeOut ", and the network doesn't receive any data...I already tried different data rates, ADR on/off, change the keys... Just not work.If you know something or have some documentation more explicitly than the original one, please give me some answer.** Question moved @DSoar.2
I make a pcb board with stm32wb55rgv6, but my LSE doesn't work and this part of the circuit was accidentally destroyed in my soldering process. Can i just use HSE or LSI in replace of LSE in BLE application? And what's the limitations?
i modified the code for downlink turning on red led 3." case LORAWAN_USER_APP_PORT:"for my case port 99:to turn on led defined at PB1 which i defined.as this was the default code for digital output given by cayenne port 99.when i am gpio writing whenever channel 4 is comming its turning on. but if i read 3 byte its not turning on , i am confused the code is as follow. case 99: if (appData->BufferSize == 4) { AppLedStateOn = appData->Buffer[1] & 0x64; if (AppLedStateOn == RESET) { APP_LOG(TS_OFF, VLEVEL_H, "LED OFF\r\n");&nb
Hi,Am currently running optical character reading in NUCLEO-WL55JC2 with camera attached. I want to send the reading data to the Lora Dashboard. I connected another similar board for lora and sent the received data to lora and then to dashboard. I want to use singleboard which has to read the data from camera also it has to send the data to Lora dashboard. Is it possible to do with single board? can you help to solve this?Thanks,shankari
I chose Lora E5 Mini to get a sensor measurement. For my application, I do not need a gateway and connection to a server like thingspeak. I want to make two end devices communicate. I configured the device in ABP mode, set the Tx and Rx frequency and Data rate as shown in the screenshots. But I am not able to make them communicate.
Hello,I am having a problem with my P-NucleoWB55 development board. When using STMCUBEIDE and trying to debug, I get the following error.Failed to start GDB serverError in initializing ST-LINK device.Reason: (4) No device found on target.I also cannot connect using the STM32Cube Programmer. Any ideas what could be happening? It was working with STM32Cube Programmer before I tried it with Cube IDE...Thanks for any help.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.