Join discussions in the Product Forums. Ask questions, learn from your peers, and share insights on ST solutions to accelerate your design journey.
Most recent activity
I need to learn more (detail) about STMCubeMX "extended mode" and small-pincount multi-bonded MCUs (this posting label specifies STM32C0 series which is what I'm currently working with.)STM32CubeMX UM1718 section 4.5.8 describes extended mode (I encountered when exploring this option while using STM32CubeMX with a new project), but other than cautions (that an option byte is required and that improper use can affect power consumption etc) I could find no further ("how it works") detail there.HAL_SYSCONFIG_SetBinBinding doesn't provide a suitable solution (concurrent access to a single physical pin by more than one possible peripheral.)Any recommendations on where (=application note?) I can proceed to learn about multi-bonding implementation and limitations for these small-packaged MCU products?Thanks!
Hello, I have a VL53 sensor that's outputing distance data but the distance measurements I'm getting are getting "stratified" into about 3 different distances seemingly randomly. I'm using the ULD driver on a custom PCBA with a TM4C1239 microcontroller and sampling the sensor at 10 Hz. This first video is with no obstacle in front of the sensor. You can see the data is not consistent This second video is with my hand about 10 cm away from the sensor, then approaching and retreating the sensor. You can see the data jumping between a few discrete distances even as I approach and retreat from the sensor Does anyone have any suggestions as to why this may be happening?
Hi. I'm working with the STM8TL52F4 MCU and its touch/proximity sensing peripheral. I made a simple touchkey use Halt or Activate-Halt for my project. Does anyone know of any sample code exploiting the ProxSense feature of STM8TL5x MCUs? Thank you.
I am trying to create custom sd card image for the stm32mp157f-dk2 board. For device tree I used dts files from basic project created by STM32CubeIDE for that board, for now I didn''t do any changes to device tree. I used latest sources from v.25.08.27 and sdk v.25.06.11 to build kernel, modules and all required loaders.But when I try to flash sd card with created loaders, STM32CubeProgrammer gets stuck on trying to reconnect to the board over USB connection:10:21:44 : STM32CubeProgrammer API v2.20.0 | Linux-64Bits10:22:15 : Read TSV File: /home/ivan/workspace/DeviceTree/FIP_artifacts_MP1/FlashLayout_sdcard_p6_mp1-optee.tsv10:22:15 : Number of partitions: 1310:22:28 : USB speed : High Speed (480MBit/s)10:22:28 : Manuf. ID : STMicroelectronics10:22:28 : Product ID : DFU in HS Mode @Device ID /0x500, @Revision ID /0x000010:22:28 : SN : 00270035313351173534343110:22:28 : DFU protocol: 1.110:22:28 : Board : --10:22:28 : Device ID : 0x050010:22:29 : Start Embedded Flashing service10:22
Hello! I'm working on bringing up a bare-metal STM32MP133C bare-metal on the dev kit from DIGI, using the HAL layer from ST. The problem I'm running in to is we're getting stuck on HAL_ETH_Init as when we enable the MAC clock, DMAMR's 0 bit (the reset bit) is stuck at 1, causing a timeout. From reading the reference manual, all related clocks need to be enabled for the reset to work, so I'm operating under the assumption there's a clock issue. I've initialized/configured the peripheral clock for PLL4, I'm enabling the relevant GPIO clocks, along with the ethernet clocks ETH1CK, ETH1TX, ETH1RX, and ETH1MAC. This leads me to believe the issue may be with the PHY clock. As we're using the Marvell PHY that comes with the board, I've (attempted) to set it so the PHY uses PLL4 by changing the appropriate bits in syscfg's PMCSETR. I figured that would be enough to get it all going... but it still seems I'm missing something. I've tried generating the code from CubeMX to
I have recently started a project in VSC using an STM32 device. I first used STM32CubeMX to generate code, so that created most of the project. I am using CMAKE.Initially there was no issue, and everything worked fine after disabling intellisense. However, I have now become plagued by the stubborn red squiggles which refuse to disappear whatever I do. I would prefer to continue using VSC, but will have to ditch it and move to another IDE if this problem does not go away, as I cannot work like this. Further down the file there are many other red squiggles. The project compiles fine, no issues there. An example of the problem:No matter what I do, the first #include has red squiggles under it. If I change the order of the #includes, then it is always the first one which has the squiggles. settings.json file:c_cpp_properties.json file:Any help would be gratefully appreciated, please.
Question moved from this KB. Thank you! It works perfect! While we're on the subject, are there any examples of OpenAmp where both cores enable RTOS? I've been racking my brain for days trying to get them to communicate.
I am working in a project with a STM32WB microcontroller, and I want to print the STM32_WPAN firmware version, but I am unable to programmatically get that info.Any idea about how to know the used version?
Good days at all. I need to start a project and I'm unsure which path to take: I'd like to create an application that requires some tasks to run in parallel and some to run at different times. I've used timers as interrupts in the past, so as soon as a timer reaches its end, I can execute tasks. Now I know I can also use tasks using FreeRTOS, and as I've seen in general, it seems that each declared task has settable delays. My question is this: when working with multiple tasks, is it better to use FreeRTOS or the interrupts of the various timers available? Another question: are the delays that can be set in the cycles within the tasks precise? From what I understand, I believe that both the timer and the FreeRTOS task are non-blocking activities for the processor, which can then perform other tasks without being "blocking." Thanks in advance.
I have a stable BLE application on STM32WB55RG. The application uses a Custom Template, has one service one characteristic for notification only, and uses Public Address for Advertising. I send the notifications to Central with an interval of 100msec, triggered by a Timer. The Wireless Stack was generated with STM32WBCubeFW V1.22.1 under CubeMX 6.14.1. Everything is fine in STM32WB55RG. But after migration to STM32WB5MMG, with absolutely the same related to Wireless stack parameters, it works only advertising. Connections always fail! Any suggestions?
We are feeding Gyro/Accel uncalibrated into motionFx as per app note UM2220 (getting started with sensor fusion). The app note says one does not have to feed calibrated and the library does gyro calibration on the fly. We have been seeing some drift issues in readings and as part of investigations have tried to use the "start_automatic_gbias_calculation".The get knobs seems to be returning gyro th 0.007, acc th 0.0028 and mag th .0008; this is just after the library initialisation; just reading the defaults. If we then run sensors and fusion for 10 seconds and read back these knobs we see no change in the values.Where does the library get the values of these thresholds?I was hoping to see a change in the values between library inititialisation and 10 seconds after firing up imu / fusion.At 10s on reading the knobs we have these values...Atime 0.899Mtime 1.5Frtime 0.667Lmode 1gbias_mag_th_sc 0.00079999gbias_acc_th_sc 0.0006999gbias_gyro_th_sc 0.00279acc_orinet nwugyro_orinet nwumag
Can we interface the Raspberry Pi camera with the STM32 that has a camera interface feature?
Hi all,I have been trying to set up an ethernet connection to stream camera output for my own project (using the STM32N6 Discovery Kit with a different IMX image sensor). Before working on this, I uploaded and ran the VENC RTSP Server application, and it was working correctly. I then returned back to my own firmware implementation for a day or two and I could not get the ethernet to work.Then, when reuploading the VENC RTSP Server application, I found that it was no longer working. The issue is essentially the same as what occurs in these posts, the difference being this is not custom hardware:https://community.st.com/t5/stm32-mcus-products/ethernet-sw-reset-timeout/td-p/703469https://community.st.com/t5/stm32-mcus-products/ethernet-sw-reset-timeout/td-p/703469What's happening is that the code continuously fails in stm32n6xx_hal_eth.c in HAL_ETH_Init while waiting for the SW reset to complete after setting the SR bit in the DMABMR register. I have noticed
I am trying to initialise SDRAM on STM32H757I-EVAL.I created a new demo project in STM32CubeIDE using the specified evaluation board. I disabled the other memory peripherals like MMC, etc. It calls MX_FMC_Init() but after that, when looking at memory at 0xD0000000 I only get ????? and accessing it gives hardfault.In this support post it is suggested that the commands must still be sent to controller while in this one it is suggested that BSP_SDRAM_Initialization_Sequence() is called. The latter function is not available in my BSP.How can I create a simple application to initialise the SDRAM?
Hi all, I am working on an STM32H755 project using external QSPI NOR Flash.I intend to use the QSPI Flash in two different ways: 1. Memory-mapped mode for read-only resources (UI assets, fonts, images, etc.)2. Indirect mode for file system operations (writing dynamic parameters) RTOS: RT-Thread (preemptive, priority-based scheduler) My current design is as follows: - All dynamic parameters are read from QSPI Flash at boot and cached in RAM.- During runtime, all parameter access is done from RAM only.- QSPI indirect access (erase/write) is performed only by a dedicated file system thread.- When a write is needed:- The file system thread enters a critical section- QSPI memory-mapped mode is disabled- Flash write/erase is performed in indirect mode- Memory-mapped mode is re-enabled- The thread then exits the critical section and yields CPU The idea is to prevent context switches while memory-mapped mode is disabled, so that no other thread can access QSPI via memory-mapped addresses durin
We purchased 1,200 STM32WB55VGY6TR chips from the STmicroelectronics eStore for production. We encountered several firmware programming issues during the manufacturing process, and while investigating the cause, we noticed that the device marking was printed as WB55VEY. The chips that were successfully programmed appear to be OK. The device marking is printed as WB55VEY6, but the actual flash memory capacity is 1MB and the contents appear to be WB55VGY. Can we assume that the chip in the attached photo is an STM32WB55VGY6TR and use it without any problems? By the way, the lot number is listed as:WB55VEY6A5 011 9RTW 4 48 Xe1We've contacted the eStore, but haven't received a reply."Case# 00247962"What should we do? Can you help us?
Hi, I am trying to implement DA on an stm32H563, I have created the .obk file, and was selected in the Stm32Programmer. I have changed the product_state to provisioning and I got the message "Do you want to use the default?"I clicked YES and I got the default DA, located in ..\STM32CubeProgrammer\bin\DA_Default_Config\STM32H5I was able to perform a full regression and then I tried again to flash and secure the chip, and this time I did choose "NO" to the default. Now I have tried my DA password and the default and none of them works. Also, I did at first tried to provision the mcu with my obk file, but was complaining about the OB not in provisioning. So after the provisioning I got locked out.Can the board be saved in any way or I have just bricked an mcu?I am using the STM32H563 NucleoThanksAle
We have used STM32H743VIT6 in our project. To calculate product life cycle we required below details,MTBFFITUsage temp (°C)Confidence Level (%)Activation energy (eV)Test temp (°C)Test duration (hours)Sample sizeFails
I am using STM32CubeIDE V1.11.0I have exactly the same issue which was described in this post:https://community.st.com/t5/stm32-mcus-boards-and-hardware/st-link-gdb-server-issues/m-p/64010#M623Multiple weeks everything works fine. But suddenly it stops working and i always get this error message when I try to Debug my code in CubeIDE:Failed to bind to port 61235, error code -1: No errorFailure starting SWV server on TCP port: 61235Failed to bind to port 61234, error code -1: No errorFailure starting GDB server: TCP port 61234 not available.Shutting down...Exit. I tried multiple things:Shuting down PC completely (and disconnect from power supply) and booting again multiple times - it didn't change anythingI changed the Port in the Settings to 61238 - same error message, but with the 61238 port numberI changed the ST-Link Device - same error messageI connected the ST-Link to an other board with an other controller (and selected the appropriate project in cube) but get the same error
1. Please suggest the pin for programming interface or documents 2. Programme example for tick timer, two external interrupts? library
I am reporting a compilation error that occurs when using the STM32F1xx Standard Peripheral Library (SPL) in Keil MDK v6 (specifically using the RTE pack downloaded via Arm Keil Studio for VS Code). This issue is caused by a naming mismatch in the NVIC structure between the legacy SPL and the latest CMSIS core headers.In the latest CMSIS core headers, the Interrupt Priority Register in the NVIC structure is defined as IPR. However, the misc.c file in the Standard Peripheral Library still refers to it as IP.Error Message: ~/.cache/arm/packs/Keil/STM32F1xx_DFP/2.4.1/Device/StdPeriph_Driver/src/misc.c:131:11: error: no member named 'IP' in 'NVIC_Type'Technical Details & Suggested Fix: The bug is located in the STM32F1xx_DFP/2.4.1/Device/StdPeriph_Driver/src/misc.c file, specifically around line 131 within the NVIC_Init function.To ensure out-of-the-box compatibility for MDK v6 users, I propose updating the current code:NVIC->IP[NVIC_InitStruct->NVIC_IRQChannel] = tmppriority;to
Hi, I have stm32l4ri-eval how do i configure the octospi interface to use the issi hyperam which is onboard.
I performed a temperature cycle check on the ASM330LHB chip. Relative to the warming process (red curve), during the cooling process (blue curve), it is prone to large zero-bias jumps (in the red box of the picture)。 The jump during the cooling process, I feel like there is a correction mechanism in the gyro in the chip, which recognizes a large shift in the gyro zero bias during the cooling process, and then immediately corrects the large zero bias shift.Can you please help explain what causes this?Note: These data on the image have been smoothed for 10 seconds.
Hello I am having an weird issue and was hoping if someone could provide some guidance. Hardware : Two Stm32 H7 with CAN Transciever Nvidia Orin Can Adapter/Sniffer (Canable) What works : Stm32H7 to Stm32H7 Nucleo Board Can Bus works. Nviia Orin < - > Canable Adapter Can bus works. Issue : Can bus communication from stm32 H7 to Canable Adapter are not coming through. neither Tx nor Rx. What have i done to troubleshoot Checked wirings for High to High and Low to Low and Tx and Rx as well. Checked voltages for Rx pins at 3.3v( using level shifters wit h transciever) Checked termination resistance and have tested the connections in isolation with both ends terminated with 120ohms ie (stm32- > stm32, Stm32-> adapter, Stm32 -> Orin) I have tested with different baud baud rate like 250, 444, 450, 440, 500k. Tried different Bit Timing Parameters but to no avail. Below are my FDCan Parmeters from ioc file. FDCAN1.AutoRetransmission=ENABLE FDCAN1.CalculateBaudRateNo
Hi guys i have a nucleo h7A3Zi-q dev board . i am trying to receive CAN messges sent from ESP32 borads . esp is sending can frame by using SN65HVD232D. and i configured the FDCAN to receive the can messages . esp can is set at 500 kbits , and my stm configurations is like this static void MX_FDCAN1_Init(void) { /* USER CODE BEGIN FDCAN1_Init 0 */ /* USER CODE END FDCAN1_Init 0 */ FDCAN_ClkCalUnitTypeDef sCcuConfig = {0}; /* USER CODE BEGIN FDCAN1_Init 1 */ /* USER CODE END FDCAN1_Init 1 */ hfdcan1.Instance = FDCAN1; hfdcan1.Init.FrameFormat = FDCAN_FRAME_CLASSIC; hfdcan1.Init.Mode = FDCAN_MODE_NORMAL; hfdcan1.Init.AutoRetransmission = DISABLE; hfdcan1.Init.TransmitPause = DISABLE; hfdcan1.Init.ProtocolException = DISABLE; hfdcan1.Init.NominalPrescaler = 8; hfdcan1.Init.NominalSyncJumpWidth = 1; hfdcan1.Init.NominalTimeSeg1 = 13; hfdcan1.Init.NominalTimeSeg2 = 2; hfdcan1.Init.DataPrescaler = 1; hfdcan1.Init.DataSyncJumpWidth = 1; hfdcan1.Init.Data
ST Community highlights – April to June 2026
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.