Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
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
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
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
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?
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
Hello everyone, I am using the NUCLEO-H755ZI-Q board for a project. I have noticed that the HRTIMs thatare not multiplexed with some USB pins (like the HRTIM_D1 with the D+ for programming the IC via usb)work normally, while if they do, I can't output any PWM pulse. Is this actually a thing and to overcome itI have to remove some of the Zero Ohm resistors behind the nucleo board or design a custom pcb for my needsor am I messing something up? In my situation specifically, i can output from all HRTIM channels except the D1and D2, both of which map to a pin with USB. Thanks in advance!
Split from original question Can you check your documentation ? According to RM086 - Reference Manual for STM32N657, all PH GPIOs can be set as input/output (contradicting your previous post). Default State: When a crystal is used for the HSE (PH0/PH1), PH1 is dedicated to the oscillator output and cannot be used as a general-purpose I/O (GPIO).Bypass Mode: When you configure the RCC (Reset and Clock Control) to "HSE Bypass," an external clock signal is fed directly into PH0 (OSC_IN), freeing up the PH1 pin to act as a standard GPIO.Functionality: As a GPIO, it can be configured as a push-pull output.Please retest your device and determine which document is correct.thanksMatthew
Looking to add a 4 mic pdm array setup to livetune environment. Had questions on how deep into the environment we need to go for the changes. Is it just a matter of changing the # of channels for the sysIn, # of slots and active slots on the pdm interface? or do we need to drive deep as address the audio buffer as well. At one point I thought I read the audio buffer was allocated dynamically. We are just looking for a little guidance before we start changing things as there might be a simple way to achieve our goal vs us guessing and creating issues.
Hello everyone, I am currently working with the NUCLEO-L452RE-P board and trying to evaluate its low-power performance. I am measuring the current consumption using jumper JP6 (IDD measurement point). The jumper is removed and a multimeter is connected in series. My setup: Board powered via ST-LINK USB (then power-cycled before measurement) No external peripherals connected All GPIOs configured as analog, no pull-up/pull-down Debug set to "Serial Wire" (no trace) No RTC or wake-up sources enabled My code is as follows (I intentionally included the complete code to avoid missing any relevant detail): /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2026 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be
Hello,I am trying to share ST-LINKV3 over the network and use it from another PC (WSL Ubuntu distro running docker and connecting to ST-LINKV3 via OpenOCD) with VirtualHere program (client and server), but facing this issue:Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'. Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD Info : clock speed 1800 kHz Info : STLINK V3J17M10B6S1 (API v3) VID:PID 0483:3753 Info : Target voltage: 3.141644 Info : [stm32h7x.cpu0] Cortex-M7 r1p1 processor detected Info : [stm32h7x.cpu0] target has 8 breakpoints, 4 watchpoints Info : starting gdb server for stm32h7x.cpu0 on 3333 Info : Listening on port 3333 for gdb connections [stm32h7x.cpu0] halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x0800bcb4 msp: 0x2001fff0 Info : Device: STM32H74x/75x Info : flash size probed value 2048k Info : STM32H7 flas
Hi everyone, I am trying to read pulses of a rotary incremental encoder npn on the screen connected to a Jetson sbc, through SPI connection with a STM32 NUCLEO-G474RE. On CubeMx i already modified pins, generated code and flashed on stm32. Once i run the python code on Jetson, no pulses are seen on the monitor. Do you have any suggestion? Thank you in advance. Enrico
Hey guys!I am currently working with Secure Boot using ARM TrustZones, Secure and Non-Secure!I have ***ed up my code majorly hehe, and I cant just Ctrl + Z everything since I have edited in a lot of files and generated code from CubeMX (UART, HAL, HASH etc), is there a smooth way to go back to an older version of the entire folder, for example an older version of NonSecure and Secure etc.Thanks in advance!
Hello, I am working with STM32WLE5CC and using the LSCO output (configured via HAL_RCCEx_EnableLSCO(RCC_LSCOSOURCE_LSI), source = LSI) to observe the low‑speed clock externally. In my application: LSI is used as the RTC clock source RTC is used as the wake‑up source from Stop2 mode RTC is configured in binary‑only mode AsynchPrediv = 30 Wake‑up period = 5 seconds According to RM0461: “The clock on LSCO is available in Run, Stop, Standby and Shutdown modes.” “In Stop 2 mode, all I/O pins keep the same state as in the Run mode.” This observation is independent of RF RX/TX activity and refers only to the Run ↔ Stop2 transition. However, on hardware I observe the following behavior: When transitioning from Run → Stop2, the LSCO pin stops toggling for a short time (~104 µs), then resumes. When transitioning from Stop2 → Run, the LSCO pin stops toggling for a longer time (~530 µs) before toggling again. This occurs even though: LSCO is enabled LSI
Hello, I am currently using the NUCLEO-U545RE-Q and trying to set low-power modes with FreeRTOS. I have already seen videos from official ST channel and read documentation but I cannot get to set this functioning when using FreeRTOS and RTC. My goal is to blink an LED every 5 seconds and in the reamaining time go to STOP mode for low power consumption. This are my functions: void StartDefaultTask(void *argument) { /* USER CODE BEGIN defaultTask */ /* Infinite loop */ while(1) { osSemaphoreAcquire(BinarySemaphoreHandle, osWaitForever); printf("Toggle Led\n"); BSP_LED_Toggle(LED_GREEN); } /* USER CODE END defaultTask */ } /* Private application code --------------------------------------------------*/ /* USER CODE BEGIN Application */ void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc) { printf("RTC Callback\n"); osSemaphoreRelease(BinarySemaphoreHandle); } void PreSleepProcessing(uint32_t ulExpectedIdleTime) { HAL_SuspendTick(); /* Start low power timer
Hi,I am trying to link up a Nucleo-F411RE board to a STLINK-V3PWR unit via the SWD (CN6) header.I am going to make a breakout board for the connector. See image below, I am assuming that I do not have to connect T_VCP_RX and T_VCP_TX to anything on the Nucleo board, am I right?
Hello.I'm having trouble transfer the UserApp to SBSFU. Here's the description of the issue.I am working on SBSFU on STM32H753-Eval, So i altered the given sample for my UART to map to ST-LINK VCP. I am able to see logs post this changes. Later I Dissabled all security stuffs with below macro and fully erase the board (by setting RDP level 1->0 ).I'm using the 2-Image example code, All security feature were disabled by#define SECBOOT_DISABLE_SECURITY_IPS in app_sfu.h. I loaded SBSFU.elf onto the board and transferred the UserApp.sfb via YMODEM. However the program went into a infinite reset loop. It is rebooting every time i send UserApp.sfb. I tried Increasing the Download Timeout from 3000 to 10000 from this macro, same issue /* Teraterm YMODEM */ /* #define SFU_COM_YMODEM_DOWNLOAD_TIMEOUT ((uint32_t)3000U) */ #define SFU_COM_YMODEM_DOWNLOAD_TIMEOUT ((uint32_t)10000U) /* IIs there any specific step i need to follow ?... kindly guide me here.&nb
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.