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
static void PingPong_Process(void) { Radio.Sleep(); APP_LOG(TS_ON, VLEVEL_L, "PP Task Start\n\r"); if (isMaster == true) { //Master switch (State) { case TX_TIMEOUT: APP_LOG(TS_ON, VLEVEL_L, "Master Tx timeout\n\r"); case TX: HAL_Delay(1000); HAL_Delay(Radio.GetWakeupTime() + RX_TIME_MARGIN + random_delay); APP_LOG(TS_ON, VLEVEL_L, "Master Tx start\n\r"); // master sends PING memcpy(BufferTx, PING, sizeof(PING) - 1); Radio.Send(BufferTx, PAYLOAD_LEN); break; default: break; } } else { //Slave switch (State) { case RX: if (RxBufferSize > 0) { if (strncmp((const char*) BufferRx, PING, sizeof(PING) - 1) == 0) { UTIL_TIMER_Stop(&timerLed); // switch off red led BSP_LED_Off(LED_RED); // slave toggles green led BSP_LED_Toggle(LED_GREEN); // Add delay between RX and TX HAL_Delay(Radio.GetWakeupTime() + RX_TIME_MARGIN); APP_LOG(TS_ON, VLEVEL_L, "Slave Rx Received - Wait for New D
I am having trouble receiving the join response when attempting to join the local LoRaWAN network in NZ (AS923) using the B-L072Z-LRWAN1 evaluation board with the type ABZ module from Murata. It is running the I-CUBE-LRWAN v2.0.0 AT Slave firmware. I can see the join request reach the network and I can see it send the response however, the evaluation board does not seem to receive the response. It takes several join attempts for the device to eventually receive the response and join. I have tried loading previous versions of the AT Slave firmware based on I-CUBE-LRWAN v1.2.2 and the device has no problem joining. I assume that the new firmware has changed something with regards to the receiver sensitivity but not sure what.Has anyone encountered this issue and if so how do you fix it?
I am basing an application of off the LoRaWAN_AT_Slave_DualCore_CM4. I'm currently working on adding USART1 into the application and have successfully used LL_USART_TransmitData8() to transmit data from the MCU. I'm running into a weird behavior that I can't explained. I'm calling the following function every seconds: void GPS_routine(GPS_data *gpsData, uint8_t *GPS_fix, uint16_t currSeconds) { static uint8_t GPS_activeRx = false; if (!(*GPS_fix)) { if (currSeconds > GPS_TIMEOUT_SEC) { if (GPS_activeRx){ GPS_activeRx = false; // GPIO_setOutputHighOnPin(nGPS_ON_PORT, nGPS_ON_PIN); // Turn off GPS LL_USART_DisableIT_RXNE_RXFNE(USART1); } } // if (GPS_TIMEOUT_SEC > secondsCtr) else if (currSeconds > GPS_START_SEC) { if (!GPS_activeRx){ GPS_activeRx = true; LL_USART_EnableIT_RXNE_RXFNE(USART1); // LL_USART_EnableIT_RXNE_RXFNE(USART1); } *GPS_fix = GPS_aquireData(gpsData); if (*GPS_fix){ // GPIO_setOutputHighOnPin(nGPS_ON_PORT, nGPS_ON_
Hello,I am using an STM32WL55CC as SPI-Slave to read data from an SPI-master (1 master, 1 slave). I have an SPI master that is talking occassionaly and I'm waiting for a message to start with a specific start-byte (0x3A) until I start reading a chunk of 60 Bytes.If I'm polling the SPI line until I see the start-byte and then go ahead and read the rest of the message everything works fine. However, if I trigger the SPI line through an interrupt on the hardware NSS line the data transfer fails after reading the first 3 Bytes and I get an HAL_TIMEOUT returned.This is the code I am using:Initialization of SPI: SPI_INIT() { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOA_CLK_ENABLE(); /*Configure GPIO pin : PA4 */ GPIO_InitStruct.Pin = GPIO_PIN_4; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI4_IR
I'm working on the application project LoRaWAN_AT_Slave_DualCore from STM32Cube_FW_WL_V1.1.0 .The payload of the downlink messages is not correctly transfered from the processor M0 to the processo M4. There is a bug in:file LmHandler_mbwrapper.c, function static void OnRxData_mbwrapper(LmHandlerAppData_t *appData, LmHandlerRxParams_t *params): if (appData != NULL) { UTIL_MEM_cpy_8(aLoraMbWrapShare2Buffer, appData, sizeof(LmHandlerAppData_t)); /* need to 8-align the next address */ next_addr = (sizeof(LmHandlerAppData_t) + 7) & ~7; if (appData->BufferSize > 0) { UTIL_MEM_cpy_8(&aLoraMbWrapShare2Buffer[next_addr], appData->Buffer, appData->BufferSize); ((LmHandlerAppData_t *)aLoraMbWrapShare2Buffer)->Buffer = &aLoraMbWrapShare2Buffer[next_addr]; next_addr = (appData->BufferSize + 7) & ~7; } }The bold line should be remo
Hello guys, how are u? Hope you're all fine =)I had my application developed using V.10.1 version firmware pack . It was requested to me to update firmware to use V1.11.1 firmware pack. As i upgraded, several things messed up, including CustomHID. Here's what is happening:In CUSTOM_HID_OutEvent_FS function, my device acknowlegde the received package using USBD_CUSTOM_HID_SendReport. This was working perfectly with V1.10.1. Now that i upgraded, my whole USB comm gets messed up after the first sent ACK. After the first sent package, my application can't received neither send data via USB . If i remove the ACK send, i'm able to continuous receiving data.What i noticed after updating:PCB and USB LL libraries got changed. After plenty debugging, i notice that this specific function was messing all up: PCD_EP_ISR_Handler. This function changed from V1.10.1 update to V1.11.1. I studied this function and USB code flow and discovered a change that made my USB comm back to work. This are the las
Hello,I'm looking to receive information regarding advertising settings within STM32CubeMX for use on an STM32WB nucleo board.I'm trying to make my (only) service's 128-bit UUID available upon advertisement (or scan response?) . Within the CubeMX I can make a UUID visible on scan with Ad type Undirected scannable and connectable, with AD_TYPE_16_BIT_SERV_UUID_CMPLT_LST (STM32_WPAN->BLE Advertising) selected (give BLE default UUID). I had assumed by instead selecting the 128-bit variant of this setting with the 128-bit UUID typed in the setting appearing when "Yes" is selected that it may have the desired effect, however the field becomes invalid?Is there a solution to my issue here? TLDR: Trying to advertise custom service UUID for retrieval in C#.net BLE APP upon advertisement (Windows API Advertisement.ServiceUuids).I also had a separate question relating to useful documentation for using/modifying BLE and USART inputs/outputs in the generated code as I have struggled to find up-t
Hey community, it took me some time to track this bug down because I thought I wasn't implementing the sequencer library correctly and was looking at my own code. Turns out, there is a bug with stm32_seq.c. Every time I ran a task with UTIL_SEQ_SetTask() with a priority over 2, the STM would get a hard fault. Turns out that setting SEQ_CONF_TASK_NBR and SEQ_CONF_PRIO_NBR, DOES NOTHING because stm32_seq.c is actually using UTIL_SEQ_CONF_TASK_NBR and UTIL_SEQ_CONF_PRIO_NBR. There is a discrepancy between the defines of the two files. This is just am FYI for anyone using the sequencer utility library. Replacing SEQ_CONF_TASK_NBR with UTIL_SEQ_CONF_TASK_NBR and SEQ_CONF_PRIO_NBR with UTIL_SEQ_CONF_PRIO_NBR in utilities_conf.h will solve this problem.
Hi, I'm working with STM32WB5MM, the application is a ble application with freertos.I have this issue, at boot, on custom board the cpu2 not start every time, so, when this happend APP_BLE_Init() is never called, and because at boot is request to start advertising when I try to start advertising it block and the board is reset by wdt. When it enter in this issue it never unblock. The same firmware could work fine if I try to cut off Vcc and plug in it again, so I can block or unblock the firmware quite quickly by cut off and pugin the power line. If I try to debug in with debugger it unblock, it never block under debug ifI try to put a breakpoint before or after cpu2 initiliazzation so I can't understand what happend, if I try to run code withouth breakpoints it block but I can't understand where it block.If I try run the same code on demoboard STM32WB5MM diskovery kit it never block if I press reset button, seem impossible to block it by reset button, but it blcok if I plug and u
..
Hi - I'm having a real struggle with the SAI peripheral. I've tried on both H742, and WB55 module, and am running into the same problem.I have the source set up in the clock config (Tried both PLL1 and PLL2, and using PLLSA1P on WB), and made sure I correctly configured and enabled the appropriate PLLs). Enabled the SAI peripheral, with what seemed like reasonable defaults in the SAI registers. Configured the SAI pins as AF6. (PE4, 5, 6 on H7) Anywhere you'd troubleshoot first?Surface level problem: SAI SA_xDR reads 0. Deeper: Scope shows no signals on the SCK line. Most fundamental: The SAI_xCR1, SAIEN field shows 0, even if read immediately after setting itHere's a selection of register readings from H742 after (attempting to) enabling SAI1:SAI1 source (RCC_D2CCIP1R, SAI1SEL): 1 (PLL2P)PLL2 ready (RCC_CR, PLL2RDY): 1 (Ready)PLL2P enabled (RCC_PLLCFGR, DIVP2EN): 1 (Enabled)SAI periph clock enabled (RCC_APB2ENR, SAI1EN): 1 (Enabled)SAI1 mode(SAI_ACR1, MODE): 1 (Master receiver)SAI1 ena
I am following the You tube videos but cannot get the unit to respond (I get AT_ERROR when issuing an AT command.) are there any good tutorials on what software I need, how to setup the units, create/download new projects, plus connect the Gateway?https://www.youtube.com/watch?v=b5phAlGOZdM&list=PLnMKNibPkDnECerjxSNJzMJ9njyqovVB9&index=2
STM32WB.V11.1function: aci_gatt_add_service In the function we copy the Service_UUID struct to buffer according to size.UUID can be either a short 2 BYTES or long array of 16 BYTES.Issue: In case it is 16 BYTES, It looks to be copying 2 BYTES from the short UUID , and 14 BYTES from the long UUID.Here:Osal_MemCpy( (void*)&cp0->Service_UUID, (const void*)Service_UUID, size );Is it a bug? or am I missing something?Full function:tBleStatus aci_gatt_add_service( uint8_t Service_UUID_Type, const Service_UUID_t* Service_UUID, uint8_t Service_Type, uint8_t Max_Attribute_Records, uint16_t* Service_Handle ) { struct hci_request rq; uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN]; aci_gatt_add_service_cp0 *cp0 = (aci_gatt_add_service_cp0*)(cmd_buffer); aci_gatt_add_service_cp1 *cp1 = (aci_gatt_add_service_cp1*)(cmd_buffer + 1 + (Service_UUID_Type == 1 ? 2 : (Service_UUID_Type == 2 ? 16 : 0))); aci_gatt_add_service_rp0 resp; Osal_MemSet( &resp, 0, sizeof(resp) ); int index_input =
My question is about STM32WB series. I have documentation and examples, but it's still not so good. Its very complicated topic(for me). I want to build simple tiangulation navi system based on BLE signal strength.Yes, i have example for STM32WB, but its working as a beacon, not beacon reader.I can't even change the advertising frequency. I found two topics, where people had same problem, but nobody helped them.Whitch example will be the best for beacon scanning?
What is the production process (nm) of the STM32WL MCU's ? We are looking at designing a system that will have to operate in a possible radiation encvironment and the nm size of the process will have a bearing on this.
Hi, I have a Nucleo-wl55jc2 (US Low Band 433 Mhz) Would it be possible to remove the RF filters so I can run it on high frequences (EU 868 Mhz) ? Thanks Olivier
I had STM32WB55CGU7 chips with original factory FUS version 0.5.3. I upgraded it to version 1.0.1 successfully, then I tried to upgrade to latest released version 1.0.2, but I get "Error: Firmware not authentic!"
Hi all,I am trying to use I2C DMA as Master and UART DMAMy code isvoid HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ if (c == 1) { HAL_UART_Transmit_DMA(&huart2, (uint8_t *)b, 8); } else { /* I2C Transmit code */ } c = 1 - c; }and which I tried are (instead of /* I2C Transmit code */) :// 1. polling, it worked HAL_I2C_Master_Transmit(~~, 50); HAL_I2C_Master_Receive(~~, 50); // 2. DMA, not worked HAL_I2C_Master_Transmit_DMA(~~); HAL_I2C_Master_Receive_DMA(~~); // 3. Mem read dma, not worked HAL_I2C_Mem_Read_DMA(~~); // 4. Seq DMA, not worked HAL_I2C_Master_Seq_Transmit_DMA(~~, I2C_FIRST_FRAME); HAL_I2C_Master_Seq_Receive_DMA(~~, I2C_LAST_FRAME);I have no Idea whats wrong and how to solve itthanks
Hi all,I am developing an application on the STM32WLE5CC based on the existing Nulceo boards for the JC part. First, the BoM provided for the JC reference is completely incorrect, it doesn't match the RF network design note, it's own schematic or the CC reference design. I fixed this by following the RF app note. However, my PCB still does not work (the code works on the Nucleo board) and I find the CC ref design different to the JC. My question is, how important are the values for the RF matching network. If I just want something to work over the distance of the desk, would 20% be okay? Just to get an idea.Also, can anyone recommend a good way of debugging why my PCB doesn't work. The schematic is correct (checked 100 times) and so are all the values according to the CC ref design. The code works on the Nucleo board so I know that isn't the issue. Many thanks
Hi there,In short I am trying to use the Nucleo-68 board to scan for Cadence Sensor devices with UUID 0x1816 which I've managed successfully. I get a list of all available devices and their addresses (double checked against a report generated through my phone). However the issue arises when I issue a connect request - I do get a BLE_STATUS_SUCCESS (Green LED on) but the event callback hci_le_connection_complete_event() is never actually called because the Blue LED never turns on.// Snippet of Connect_Request() if (result == BLE_STATUS_SUCCESS) { /* USER CODE BEGIN BLE_CONNECT_SUCCESS */ HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_SET); /* USER CODE END BLE_CONNECT_SUCCESS */ BleApplicationContext.Device_Connection_Status = APP_BLE_LP_CONNECTING; } else { /* USER CODE BEGIN BLE_CONNECT_FAILED */ HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_SET); /* USER CODE END BLE_CONNECT_FAILED */ BleApplicationContext.Device_Connection_Stat
Hello!In my app there are the master (stm32wb55) and up to three slaves (stm32wb55 too). In addition to this I need to scan the air permanently. At some point the ble stack of the central stops responding. It means that it becomes impossible to start scanning and the central stops receiving notification from slaves. This situation could be fixed by reinitialisation of the stack ( APP_BLE_Init() command) but I need to know how to prevent this. Why could this be happening?Maybe someone had the same issue?Best regards,Den
I need to advertise sensor values continuously
I want to find a similar code but I can't find it:loudly_crying_face:
Hi dark wizards of embedded electronics, its me again, javi.This time im trying to use the STM32CUBEMONITOR-RF with my STM32WB55 Nucleo pack.I cannot make it work with my NUCLEO BOARDOnce i flash the USB DONGLE (STM32WB55CGU6) with the \STM32Cube\Repository\STM32Cube_FW_WB_V1.12.1\Projects\P-NUCLEO-WB55.USBDongle\Applications\BLE\BLE_TransparentModeVCP I am succesfully able to use STM32CUBEMONITOR-RF But when im trying to use the NUCLEO BOARD (STM32WB55RGV6)....I flash the \STM32Cube\Repository\STM32Cube_FW_WB_V1.12.1\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_TransparentMode\Binary\BLE_TransparentMode_reference.hex And no response whatsoever, it doesnt work.... I am clueless why, maybe im flashing the wrong firmware in the nucleo board?Maybe the coprocessor .bin is corrupted?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.