Get ready for the STM32 Summit 2026 | Online, November 3
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
This is one of those issues where I can hardly figure out what to seach for...I have a board (with an STM32G431) where I can activate the BOOT pin with a switch, to start the system bootloader. This allows the customer to upload a new application version using STM32CubeProgrammer and the microcontroller's USB port.However, on this board, the application doesn't run when the bootloader is done. On other boards with other micrcontroller types, the "Run after programming" feature works nicely, but not on the one with an STM32G431.Even with an ST-LINK V3 connected to the board, I cannot see with certainty in what state the microcontroller ends up, or what the program counter says, as the ST-LINK loses its connection with the microcontroller. When I reconnect, STM32CubeProgrammer claims that the CPU is halted. Why the CPU is halted, I have no idea. But it is quite annoying, as the board is a tiny thing in a very large industrial machine, where they should be able to upload new firmware
Hi everyone,I am working on an STM32MP2 platform and facing a persistent issue with LPUART1 in interrupt mode.SetupMCU: STM32MP2UART used: LPUART1 (RS485 communication via MAX485)Debug UART: UART5 (polling mode, printf works fine)Using:HAL_UARTEx_ReceiveToIdle_IT() for RXHAL_UART_Transmit() for TXBaudrate: 115200ProblemWhen using interrupt mode, the system gets stuck in: HAL_UART_IRQHandler()The interrupt keeps triggering continuously and the system appears stuck (infinite IRQ loop).ObservationsPolling mode (HAL_UART_Receive) works perfectlySensor communication works fine in pollingIssue only happens in interrupt modeWhat I already checked NVIC enabled correctly:HAL_NVIC_SetPriority(LPUART1_IRQn, 5, 0);HAL_NVIC_EnableIRQ(LPUART1_IRQn); IRQ handler is correct:void LPUART1_IRQHandler(void){HAL_UART_IRQHandler(&hlpuart1);}No wrong handle (huart1) is used anywhereFIFO configuration added:HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8);HAL_UA
Hi, For STM32H753IITx + ST67W611M1 on a custom board with FreeRTOS: What is the recommended integration approach for X-CUBE-ST67W61 on STM32H753? Specifically: Is STM32H753 officially supported/recommended as a host MCU for ST67W611M1? For H753, is it recommended to use the middleware directly from CubeMX? Are there known FreeRTOS version compatibility issues between CubeMX-generated FreeRTOS and X-CUBE-ST67W61 on H753? Thank you.
I am using STEVAL-MKI109D + STEVAL-MKI238A. I have evaluated motion-stationary FSM example as it seemed closest to what we want to use for our application. It seems to work fine, however it is too sensitive and needs some upgrades.What I want to achieve:Setup timer (TI3) to some value such such as 5 seconds. During this 5 second period, I want to detect specific number of events above certain threshold (GNTH1). If specific number of events were detected during 5 second period, generate an interrupt and repeat over and over again. If specific number of events were not detected during that 5 seconds period, just reset the counter and repeat.My cofiguration:It sounds like a simple requirement but I cannot achieve it using FSM.I tried to achieve this using 2 FSM's: FSM1:FSM1 is responsible for incrementing long counter everytime the GNTH1 is reached. FSM2:FSM2 is responsible for resetting long counter. I don't really understand why the MEMS Studio forces me to put STOP command at
Hey there,I'm currently working on an audio application for the STM32U5A5 (which I'll later port to the STM32N657), using MDF.The application closely follows the MDF/ADF examples for audio recording found in the U5/N6 Cube firmware packages, with the difference that it does not output the transformed audio signal immediately via SAI, but instead stores it in a large buffer to download it later via the STMCubeProgrammer.Although the application generally works great, it does not record more than ~2 seconds of audio, even if I increase the size of the storage buffer (e.g., to a size corresponding to 4 seconds of audio recording capacity). No matter how large I set the buffer, the function HAL_MDF_AcqCpltCallback is called approximately 2 seconds after the recording starts. Within the implementation of this function, HAL_MDF_AcqStop_DMA is called to stop the recording.I would be interested in the criteria according to which the HAL_MDF_AcqCpltCallback function is called. I would
I just bought a Nucleo-G491RE board and installed STM32CUBE to start a new project. During the project setup, the IDE downloaded and unzipped stm32cube_fw_g4_v160.zip. Then, when it downloaded stm32cube_fw_g4_v161.zip, this error message popped up. (screenshot below) Error downloading the following filesstm32cube_fw_g4_v161.zip (HTTP Access Forbidden) I'd appreciate any help to resolve the error. Thanks.
I downloaded stm32cubemx-win-v6-17-0.zip on Windows 11 direct from the ST web page:STM32CubeMX | Software - STMicroelectronicsDownloaded file size 676,525 MBBut it does not uncompress and install, all I get is a kind of ghost window that tries to launch but then aborts.Any ideas please?Kind regards,Al
Not the issue of debug probe, just change 'Reset behaviour' to 'None' could solve this.
Is there and/or will there be an approved off-target unit testing framework for STM32 (in my case, STM32H5)? I've been trying to stand up a test project generated by STM32CubeMX, imported into VS Code using Unity unit-testing framework, but running into pitfalls. In the past, I've used PlatformIO's with ease, was hoping the STM32 VSCode ext pack would be similar out the gate.Over all, I'm aiming to test against the business logic and not needing a full-blown simulator. My rule of thumb is its good practice to do some kind of off-site (off-board) unit testing.Even if there is a solid blog post with how to setup STM32 + CMake + Unity (or equivalent) and vanilla C using the CubeMX generated project, that would be most helpful. Most of the blog posts I find are either outdated, doing something custom, or a different architecture. Yes, I'll fully admit, my strong points are MSVC and C#'s tooling for test frameworks, and not so much with CMake/CTest.Thank you!
Hi all,I'm trying to replay the demo from this video https://www.youtube.com/watch?v=Kn6JHVcY7hA The provisioning and debug authentication works fine, but the application hangs.I never passes the MX_ICACHE_Init() function. And sometimes in the MPU init or config function. The project is standard generated code, I'm using STM32H573I-DK but empty chip project like in the video.Project settings : Select STM32H573IIKxQ Click yes on enabling ICACHE and MPU Enable trustzone Secure project only Generate DA folder Bootpath : STiRot + Secure Application (offset 0, offset 0x100000, size 0x100000) PI9 as output and PC13 as input Generate project Add loader.h and loader.c and add blinky like in the video The project was imported in STM32CubeIDE 2.1.1 and build fine.I've used provisioning.bat to provision my board to CLOSED. LD1 on the board turns on but doesn't blink.After connecting to the board with Debug Authentication it seems to hang in MX_ICACHE_Init -> if (HAL_ICAC
Hi All!I'm trying to wrap my head around STM32H573 with trustzone, STiRoT etc in STM32CubeMX and I'm missing some information on the firmware sizes.The STM32H573 has 2MB flash, secure part is from 0x0C00_0000 to 0x0C1F_FFFF. When I select STiRoT + Secure partition and open OBkey settings I want to use maximum firmware size, which is 1MB in my understanding (download area must be same size as application area). So I set firmware offset to zero, firmware download area offset to 0x0010_0000 and firmware area size also to 0x0010_0000. When I generate obkey it gives me firmware slots 0 with address 0x0C00_0000 with size 0x10_0000 and slot 1 with address 0x0C10_0000 with size 0x10_0000. But the mapping says Start address 0x0C00_0400 and End address 0xC0F_FFFF which is different from the configured address/size.If tried going to Tools -> Memory Management but that gives a different image again!That gives a size of 123kB and address range 0x0C00_0400 - 0x0C01_EFFF, which appears t
I got an error when downloading the .sfi file to STM32H753II using the STM32Programmer_CLI, my HSM version is V2AE.The error message is as follows: What its mean?V2AE cannot support STM32H753,and must use HSM_V1?or H753 cannot support SFI ?I’m a new use about SFI.Looking forward to your reply.
Hello All,I have a certain STM32H7 that I can't erase sector 0 using STM32CubeProgrammer.I think it is because PROT_AREA_START1 and PROT_AREA_END1 are not correct. I am trying to get back to default values of PROT_AREA_START1 =0xFF (0x0800ff00)PROT_AREA_END1 = 0x00 (0x080000ff) to disable the protection.However I cant Actually change the option bytes through the programmer. I get:an error: "Expected Value for option byteP: "PROT_AREA_START!: 0xFF, fount 0x00"RDP is level 0 (AA)I am using ST-link. Thanks for any help,Trevor
Hi EveryoneRequesting clarification on one topic:Does STM32U585 have support for PQC algorithm with any software library that has been validated on the same controller, as there is a requirement for PCI PTS 7, that the device should support PQC Algorithm and we need an evidence to show the same for the same controller. On searching XCube-PQC Library supported devices mentions STM32H563ZI only.Requesting confirmation in this regardThanks and RegardsPhilip
Hi everyone,I'm working on an audio acquisition project using the STM32H743ZIT6 microcontroller. The goal is to build a microphone array with 8 digital MEMS microphones (MP34DT05-A), connected via DFSDM and streamed over USB to a PC using the USB Audio Class (UAC). At the moment, I'm starting small and testing with one or two microphones.So far, I have successfully configured one DFSDM filter and one channel using regular conversion with DMA, and I'm receiving valid audio data.Now I would like to add a second microphone, which is connected to a second DFSDM channel (with opposite clock edge). Both channels should ideally be handled by the same DFSDM filter.I'm currently wondering:What is the best approach to sample two channels using a single DFSDM filter?Is it necessary or recommended to use injected conversion for the second channel in this case?How would I properly configure DMA and interrupts if both regular and injected conversions are used?Are there any known working examples for
Hi,I'm trying to get LPBAM Low power timer capture to work in a frequency measurement application. The intention is to use LPBAM to write input captures from LPTIM3 to a buffer in SRAM4 while in Stop mode 2. The app loop just sets a wakeup via the RTC of 500mS, then enters Stop Mode 2. On wakeup, it does a few GPIO read/writes and I2C3 writes amongst other things, then loops,That all works fine, and the system is in Stop Mode 2 95% of the time.LPDMA1 CH0 is enabled in the non-LPBAM IOC configuration editor in Linked-list and circular mode.I've created an LPBAM application/scenario with just one queue, and LPTIM3 channel2 set for input capture clocked by external clock (LSE crystal 32.768KHz).(ScreenShots below)This passes 'CHECK LPBAM DESIGN' in the editor, and generates code without errors.I've then added the LPBAM init/build/link/start calls to main before the main loop starts:/* LPT3App application initialization */MX_LPT3App_Init();/* LPT3App application LPT3Sce
Hello, I am trying to load a kernel driver (.ko file) for a MIPI camera I would like to use with the STM32MP257F-DK. It's for the imx664, and no driver is present already. I have the source for the driver, and was able to compile it into a .ko file, cross-compiled with the exact same OS as is present on the board and with the SDK set up as required. The vermagic line matches exactly: vermagic: 6.6.78 SMP preempt mod_unload aarch64However, every time I try and load the driver with insmod, with or without -f, I get the error: insmod: ERROR: could not insert module imx664.ko: Invalid module formatI am struggling to find where the incompatibility could be, since I have re-tried it a few times and been careful to set it up as ST's documentation says and also to match what is expected by the board. Is there something I am missing with this?
We develop a measuring device which should be capable of SIL 2. It would be possible to fall back to SIL 1 only. STM32F4 MCU is used with STL-Safety-Library.Has anybody qualified the gcc for that? Or did you replace the compiler by already qualified products from Keil, IAR?If you have qualified the gcc, have you done it yourself or used commercial tools?
I am porting the ST67W611M1 WiFi/BLE driver (X-CUBE-ST67W61 v1.2.0) from a NUCLEO-U575ZI-Q to a custom PCB with STM32F767VIT6. The Nucleo version works perfectly. On the F767 custom board, W6X_Init() hangs indefinitely.HARDWARE- Host MCU: STM32F767VIT6 (216MHz, Cortex-M7)- WiFi module: ST67W611M1 (NCP firmware: mission_t01_v2.0.97.bin — confirmed flashed and verified)- SPI2: PB12=NSS(SW), PB13=SCK, PB14=MISO, PB15=MOSI- CHIP_EN: PD4, SPI_RDY: PD7 (EXTI rising+falling, NVIC enabled)- DMA1 Stream3 (RX, CH0), Stream4 (TX, CH0)- FreeRTOS heap: 102400, configMAX_PRIORITIES: 56- LOW_POWER_MODE: disabled, W6X_CLOCK_MODE: 1 (internal RC)SYMPTOMSPuTTY output stops at:W6X_Init...[hangs forever]W6X_Init() never returns. The FreeRTOS task blocks on sem_if_ready permanently.DEBUG FINDINGSI added debug prints to spi_port_transfer_dma() to log RX buffer contents. Here is what the module sends during init:RX[0]=0D [1]=0A [2]=72 len=12 → "\r\nr..." (boot message start)RX[0]=AA [1]=55 [2]=00 len=12 → SP
Apologies in advance, this is a long one.We are developing a camera application on an STM32H747. We have 32GB of SDRAM configured through FMC.We have a NanEyeC camera from which we are continuously acquiring data in packed bayered format via SPI, into one of three SDRAM framebuffers [A1,A2,A3] (a three-buffer system so that one is reading, one is pending, and one is writing).On our main loop we check to see if one of the raw camera data [A1,A2,A3] has available data and then (1) unpack and debayer it into a 320x320 RGB888 SDRAM framebuffer [B] (we want this intermediate point from which the user can save images), then runs a scaling operation to transfer it into a 460x460 (our display size) RGB888 SDRAM framebuffer [C],After these for loops we start a DMA2D transfer which combines [C] with overlay graphics in 460x460 ARGB4444 SDRAM framebuffer [D], and outputs the result into 460x460 RGB888 SDRAM framebuffer [E], and the DMA2D end-of-transfer interrupt initiates an LTDC-DSI operation w
Hie, according to the documentation of the board, USART1 can be used with db9 port by setting up JP7 and JP8 to 1 and 2 ( which I did). The second thing is to connect usart_tx and usart_rx to PB14 and PB15.The problem is that nothing is showing up on the pc with DB3 port. I've check the tx port with an oscilloscope and I'm getting signal on data sending but only 1.1 V (in AC). I don't know if it's part of the issue but I hope someone has the solutionThanks
I am working with an STM32F769NI and planning to implement my own Ethernet driver without using the HAL. While studying the DMA descriptor system, I found that the hardware supports both ring structure and chain structure descriptors. However, I am having trouble understanding the exact behavior of the ring structure. For example, suppose I have three TX descriptors: DESC0, DESC1, and DESC2. After the DMA finishes transmitting DESC0, how does it advance to DESC1? Since the descriptor size is fixed, does the hardware simply move to the next descriptor by doing something like: current_descriptor_address + descriptor_size? If that is the case, then I don’t clearly understand what the practical difference is between ring mode and chain mode. So my questions are: In the STM32F769 Ethernet DMA, how exactly does the DMA engine move to the next descriptor in ring structure mode? (I would like to understand this at the hardware/register level.) What is the functional difference betw
Hello ST team,We are working with the STM32WL5MOC6HTR module for a LoRaWAN end-device design.We understand that the STM32WL5MOC6HS variant includes an STSAFE-A110 secure element, but our custom module (MOC6HTR) does not include STSAFE.Our question is about securely storing LoRaWAN keys such as:AppKeyNwkSKeyAppSKey We are exploring options like:Using the LoRaWAN Crypto middleware (Middlewares/Third_Party/LoRaWAN/Crypto) with the internal AES peripheral,Leveraging SBSFU (Secure Boot and Secure Firmware Update) for Flash protection (RDP/PCROP),Or possibly using KMS-MW (Key Management Services Middleware). Could you please confirm:What is the recommended approach for securely storing LoRaWAN keys in the STM32WL5MOC6HTR, where STSAFE is not present?Can KMS-MW or SBSFU be used on this device to provide a secure key storage area or API abstraction similar to a secure element?Are there reference examples or application notes for integrating LoRaWAN key storage with SBSFU or KMS on ST
I am using MEMS Studio to evaluate FSM and MLC on the STEVAL-MKI109D + STEVAL-MKI238A . I noticed few strange things. I am attaching my FSM gui config and reg config (config.zip)1. When I open the FSM tab and load the state machine files and device configuration fileone thing I notice right away that its not loading the Long Counter Max value correctly.In my saved FSM configuration I have set it to 0x14 but when I load the configuration it still showing up at 0001Now when I click "Write FSM configuration to the sensor" button and head to Register Map tab, I do see 0x14This is very misleading as the FSM configuration tab is different value that is actually written to registers. 2. Next thing I notice is that when I load my FSM configuration and GUI files and click "Write FSM configuration to the sensor". Head to Sensor Evaluation and return back to Advanced features -> FSM. The FSM ODR now changes to 12.5 Hz.This is how FSM tab looks when I load gui and config fi
I'm using VSCode and J-Link for programming/flashing my STM23 MCUs.Unfortunately using the default setup from SEGGER (https://kb.segger.com/J-Link_Visual_Studio_Code#Support),J-Link only erases areas/pages needed.I found no information about modifying the process of flashing.Is there a way to modify the setup within VSCode in a way, to do a full chip erase when flasing by default?Many thanks!
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.