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
I'm using STM32WB55 and communicating with a program using Windows BLE APIs. My system affords BLE 5.2 version and I know it affords 2 Mbps.However, I don't know how to change the BLE setup in the microcontroller and my program.Currently, my microcontroller can send 244 bytes of data per packet.So, Here is some question.How to change ATT-MTU (number of bytes per packet), Connection Interval, and number of packets. (or a good example for this)Whether, if I change these BLE setups, the BLE setup of the Windows program automatically changed. (or how to change Windows BLE setup using Windows APIs)How to transfer multi packets (or a good example for this)I hope your comments.
I am trying to immigrate my project on STM32WB55RGV to STM32WB5MMGH. Now I am using last firmware package V1.13.3 instead of 1.10.0 that used for STM32WB55RGV.I updated FUS (FUS V1.2.0) and BLE_stack_full_fw. I am trying to connect STM32WB55RGV but immediately after establishment of connection I am receiving disconnection event (HCI_DISCONNECTION_COMPLETE_EVT_CODE).How I can fix this problem?Can anyone help?Update: I ran a firmware in debug mode and saw below line not executed under the case HCI_DISCONNECTION_COMPLETE_EVT_CODEdisconnection_complete_event = (hci_disconnection_complete_event_rp0 *) event_pckt->data;as a result I cannot understand reason of disconnection!
/*--------------------------------------------------------- * Shutdown *--------------------------------------------------------- *//* This API moves the stack to shutdown mode, used in case of a sleepy end device to conserve power. */void ZbShutdown(struct ZigBeeT *zb);/* The following APIs are to pause the stack and allow another service to use the * MAC layer. Upon resume, the MAC interface(s) are reconfigured to work with the * Zigbee stack again. */enum ZbStatusCodeT ZbStatePause(struct ZigBeeT *zb, void (*callback)(void *arg), void *arg);enum ZbStatusCodeT ZbStateResume(struct ZigBeeT *zb);
I have to projects based on FreeRTOS. One is st example and one is generated by me from example .ioc file. All of the files in projects are the same (including FreeRTOS middleware directory). In the projects there is a task called periodically which set flag for the other task using osThreadFlagsSet function. While debugging I've noticed that osThreadFlagsSet function returnes different values. In one project rflags variable has value equal to 1: In the other rflags has some random value:and because of that I think that there might be the problem with setting flag for the task. Not setting the flag causes project work unstable. What might be the issue?
I'm using STM32WL V1.2.0 and trying to generate LoRaWAN End Node FreeRTOS application from .ioc file and make it work but I met some issues with sending data packets periodacally. After succescul join procedure device sends only one data packet. After Tx LmHandlerSend status is LORAMAC_HANDLER_BUSY_ERROR, MacCtx.MacState equals LORAMAC_TX_RUNNING and no more data packets are send. I think that the issue is caused by some part of FreeRTOS because I generated appliaction without it and everything works as expected but I can not find soucre of the problem. Here are steps that I made in order to generate application:- generated project using .ioc Configuration File from LoRaWAN_EndNode_FreeRTOS example- imported BSP driver and added it to include path- replaced generated app_freertos.c file with app_freertos.c file from LoRaWAN_EndNode_FreeRTOS example- inside lora_app.c file filled user code section of SendTxData function with own sending code:static void SendTxData(void) { /* USER CODE
Hello everyone, I have recently started learning C language and I am kind of new into embedded systems. I am using NUCLEO WB15CC and trying to develop a system using VL53L1X with MPU6050 sensors. I am getting two sensor data successfully every time I write 0x101 to read/write characteristic. What I want to do now is, I want to start continuously measuring the acceleration data of X axis of the MPU6050 sensor until its value is between -990.0 and -1010.0 and if it is true I want to measure the distance over VL53L1X sensor. However, when I am debugging I receive -1 value over VL53L1X and I think its because MPU6050 is still using the I2C1 line. I have tried to put MPU6050 into sleep and wake it up back but it didn't work well. I am thinking that the way to solve this issue is by using scheduler or I2C event interrupt. I don't know which one is more practical. I am using P2PServer example provided by ST with STM32Cube_FW_WB_V1.13.0. Here is my code snippets:#if(P2P_SERVER1 != 0) if
Hello,I wanted to ask if it would be possible to have the sequence of commands sent and how they should be formatted, by the STM32CubeMonitorRF tool to the board, so possibly I can recreate those steps even with a custom program.Thank you very much
..
Hello,We have an issue updating the stack programmatically.Following the AN5185 (section 2.1) we put the new stack binary (stm32wb5x_BLE_Stack_full_fw_1.13.1.bin) at 0x0809A000 - 45 sectors before 0x080C7000 (stack start for 1mb model) - trying to upgrade from 1.13.0.Reset to FUS - worked alright. SHCI_C2_FUS_GetState == FUS_STATE_VALUE_IDLEIssued SHCI_C2_FUS_FwUpgrade - no error return code.The SHCI_C2_FUS_GetState afterwards gets FUS_STATE_ERROR_AUTH_TAG_ST_NOTFOUND and the flash content is reset (ffffffff)1) Apparently the SHCI_C2_FUS_FwUpgrade parameters make no difference as it is all hardcoded - is this true? We would love to load it from other flash address.2) Does the FUS on its side uses the memory at 0x20000000? If so, how?I was looking at OTA example and it seems to holding there its state between resets but not sure about FUS side.3) Is there something missing here?Thanks in advance
Hello. I am using a NUCLEO-WB15CC board trying to build a BLE application.I followed the instruction from a YT video by STM: https://www.youtube.com/watch?v=i10X4Blr8nsI generated code with CubeMX version6-5-0 on linux.The code called HardFaultHandler() as soon as it reach MX_APPE_Init() in main.cif i break the while(1) loop in HardFaultHandler, the code continues at __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc) in HW_TS_RTC_Wakeup_Handler() from Core/Src/hw_timerserver.c. Why is that so? How do I rectify or solve this? Below is main.c:#include "main.h" IPCC_HandleTypeDef hipcc; RTC_HandleTypeDef hrtc; UART_HandleTypeDef huart1; DMA_HandleTypeDef hdma_usart1_rx; DMA_HandleTypeDef hdma_usart1_tx; void SystemClock_Config(void); void PeriphCommonClock_Config(void); static void MX_GPIO_Init(void); static void MX_DMA_Init(void); static void MX_IPCC_Init(void); static void MX_RF_Init(void); static void MX_RTC_Init(void); int main(void) { HAL_Init(); MX_
Hello! The title pretty much says it all - I'm trying to figure out how to configure BLE between two B-U585I-IOT02A boards, but establishing the BLE connection is a bit confusing to me. Am I able to configure it from the UFBGA169 IOC file in STM32CubeMX, or is there another way to do that?I'm also struggling with communicating between the STM32U5 chip and the STM32WB5M module on the B-U585I-IOT02A board - I found a document on the ST Wiki that says these two chips can communicate over LPUART, but I'm not entirely sure if there's any additional configuration I'd need to do.I apologize if these questions are super simple - I'm still a bit new to the STM32 ecosystem, and I've gotten lost between all the documentation available.Thank you,Jake U.
I have setup USB connectivity between the STM32WB55 Nucleo board and my pc.As I connect to the board, my application sends some data and the board response accordingly. I can send another command to start the application running on the hardware, which should return some calculated results to the pc. But as soon as I send this command, the ((USBD_CDC_HandleTypeDef*)hUsbDevice_struct.pClassData)->TxState will always return 1 and not reset to 0. I'm using the Windows 10 VCP driver that gets installed as soon as you plug the board into to the pc. None of the calculated results ever reach the host, which is weird because the commands I send when connecting to the target get a response from the board. Sometimes a couples bytes reach the pc, but most of the times 0 bytes are received by the host.I use the CDC_Transmit_FS function that gets generated when you configure USB in the CubeMX. The TxState should get reset after the transmission happened by the USBD_CDC_DataIn function in the usbd
Hello.I'm planning a project that will use large amount of flash memory, therefore, I will need to be cautious with memory saved for app updates. I'm using STM32WB55VGQ6 with 1MB of flash memory on custom designed board. my current application is about 300KB and it will grow larger.I read in AN5185 document that when I send FUS_FW_UPGRADE command, there is an option to add address for image location and image destination. When I started to check this option, I have read @Remi QUINTIN in https://community.st.com/s/question/0D53W00001MwMvLSAV/shcic2fusfwupgrade-usage that this option is not used and FUS knows to locate the image address by finding some magic word and it finds the destination by itself. I wanted to know if this feature is optionally and can I use it by sending these 2 parameters with FUS_FW_UPGRADE command?Another question, if I'm deleting current BLE stack before updating, will the FUS move the SFSA address forward and make some more user space in the flash memory?Thanks
Hi there,I am using an STM32WLE with an input voltage range of 2 - 3.3V. It will eventually be powered by a lithium coin cell, but I am currently using a benchtop power supply. The datasheet states that both the MCU and the radio should function down to 1.8V, and my testing has confirmed this. However, I am finding that at voltages lower than 2.15V the MCU becomes unresponsive after entering Standby mode. Here are some of the behaviours I have observed at VDD < 2.15V:Watchdog timer (IWDG) triggers a reset when the MCU has 'entered standby' - the option byte IWDG_STDBY is cleared, and the watchdog doesn't trigger a reset when the voltage is above 2.15V.After a watchdog reset, the C1STOPF bit in PWR_EXTSCR is set, not the C1SBF. This indicates to me that the MCU is not correctly entering standby.The first entry into standby mode after POR does not cause the MCU to become unresponsive, but the subsequent entry does. Only a POR allows the first entry into standby to proceed correctly -
Working on project with BLE interface and need to add I2C interface to read a sensor. Started with BLE Heartrate example (it wakes up ever 1s which I also need to do) and added I2C by using CubeMX to generate the new code. To start testing I added this code snipit BSP_LED_Init(LED2); BSP_LED_Init(LED3); BSP_LED_On(LED2); aTxBuffer[0] = 0x0F; // register I am reading and I2C_ADDRESS -> 0x6A << 1 I2C_result = HAL_ERROR; while(HAL_OK != HAL_I2C_Master_Transmit(&hi2c1, I2C_ADDRESS, (uint8_t*)aTxBuffer, 1, 1000)) { /* Error_Handler() function is called when Timeout error occurs. When Acknowledge failure occurs (Slave don't acknowledge it's address) Master restarts communication */ if (HAL_I2C_GetError(&hi2c1) != HAL_I2C_ERROR_AF) { Error_Handler(); } } //HAL_Delay(50); BSP_LED_On(LED3); while (HAL_I2C_GetState(&am
Hello,I updated my application from the "full" to the "full extended" BLE stack 1.13.3.I modified the link file as requested in the release note.My issue is that if I keep the SRAM2 parity enable my application crash in NMI error. When I disable the parity it is OK.This issue was fixed by with stack 1.13.0 "full" but seems to be back it "full extended" variant.BR
Hello everyone,I discovered a problem with the STM32WLE5CCU6 using the comp1 on stop2 mode.More specifically, when the debug is enabled on stop2 mode using the command HAL_DBGMCU_EnableDBGStopMode() the comp1 is working and I get all the peaks of the oscillation (see image 1). But when I make a single change, and disable the debug on stop2 mode, with the command HAL_DBGMCU_DisableDBGStopMode() the comp1 stops counting all the oscillation peaks (see image 2).The yellow is the oscillation and the green is the external gpio output of the comparator (see Image 3)I'm not sure if this is a hardware problem or software. Please make your tests and report back. In the datasheet it isn't clear if on stop2 mode the comp1 data registers are retained, but from the results it seems that they do. Also I have tried to reinitialize the comp during stop2 exit but i get the same results. Image 1Image 2Image 3
Hello everyone,We are planning to use ST products in our new BLE-supported projects. But I am not sure which product is suitable for this.As I see, there are some BLE chips connectable with SPI and there are SoC ICs like STM32W.I am not sure which is what. Is there any kind of workshop or guidance?
Hi All,I got stuck trying to implement a custom BLE profile on the STM32WB55 with bare-metal programming. Unfortunately, the available workshop on this topic is completely out-of-date and uses an older firmware package (I am on version 1.11.1 now). I read different user manuals, programming manuals, and application notes from ST, but I have not been still able to launch my project.I recently read that if a project involves complex networking protocols (it is subjective, but BLE seems to be a complex protocol), it is usually handy to use an OS.While I am still trying to use the sequencer utility and bare-metal programming with the super loop architecture, I would appreciate it if you could share your opinion and experience on using FreeRTOS for implementing a custom BLE profile on the STM32WB55. If you could share any existing project code, I would really appreciate it.Thank you
Hello, I have recently started coding and learning C language. I implemented VL53L1X drivers to my NUCLEO-WB15CC and I am able to get measurements over USART communication. However, I would like to get these measurement results over Bluetooth and I would like to start and/or cancel the measurements from my phone by using some characteristic values. For example, when I write 0x1, the measurement should start and when I write 0x0 the measurement should stop. I am trying to build this behavior on top of P2PServer example provided by ST in STM32Cube_FW_WB_V1.13.0. I am not really sure where should I start implementing this behavior. I have started reading AN5289 document along with the P2PServer codes and I am kind of lost. If you have any tips or recommendations for me please help me, I will be so grateful. Thanks.Edit: Here is my main.c, I want to implement the characteristic value scenario to my if statement at line 8. Then, I want to control the start of the measurements without a butt
I would like to migrate the BLE_TransparentMode example to STM32WB55CGU and run it on the board I make.I am using STM32CubeIDE 1.9.0, with STM32Cube_FW_WB_V1.13.3.STM32CubeMonitor-RF version 2.8.1Step 1: generate single tone with stm32wb5x_BLE_Stack_full_fw.binThe BLE_TransparentMode example was successfully migrated to STM32WB55CGU and it works with STM32CubeMonitor-RF. I can do BLE advertising and scanning with it.But when trying to generate the single tone, I get the error message as shown in the picture, the ACI_HAL_TON_START command is an "unknown HCI command" according to the error message.The Readme.txt file in BLE_TransparentMode example requires to install stm32wb5x_BLE_Stack_full_fw.bin on the MCU, but apparently the ACI_HAL_TON_START command is not supported by this binary.I checked the coprocessor wireless binary Release Notes in:/STM32Cube_FW_WB_V1.13.3/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x/Release_Notes.htmIt mentions that a couple of functions are
I have troubles with STM32CubeMonRF. I am trying to use sniffer with STM32WB55CGU6, but whenever I start it, I receive an error, please find attached. There was a description for most missing items. To fix it I have downloaded missing programs, copied stm32cubeMonRf_sniffer properly, but I can't figure out how to connect something to USB_USER or where can I find proper files for it. I have already checked User Manual but I could't find any answer for my problem. Could you please help me to fix this issue? I would be grateful.
Hi everyone,I'm using a P-NUCLEO-WB55 for an SPI application with a CMT2219A (HF receiver) which works in Half duplex.I try to read its configuration registers by sending the address with the R/W bit set, then reading the bus by clocking during a byte (see the following picture:)The problem is that when reading, the MCU is clocking during 2 bytes instead of 1 as you can see:If I try to read 2 bytes, then the MCU is clocking during 3 bytes and so on...Actually, the values read on the picture are correct, but we're loosing time reading an extra byte each time (and this is not clean even if this doesn't affect the integrity of the data).Here is the SPI's configuration:void SPI_CMT2219A_Init(void) { hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Direction = SPI_DIRECTION_1LINE; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler =
Hi there,I am trying to set PU/PD resistors that will stay set while my STM32WLE is in Standby mode. Am I correct in saying that I need to use the PWR_PUCRx registers to keep the PU/PD resistors active while in Standby? If so, is there anything else that could catch me out? Eg, do I need to reset the GPIOx_PUPDR registers? Can I use the PWR_PUCRx registers while in Run mode, or should I only use the GPIOx_PUPDR registers while running?A brief explanation of PWR_PUCRx vs GPIOx_PUPDR would be greatly appreciated. :smiling_face_with_smiling_eyes: Thanks,Rebecca
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.