Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Subject: STM32N657X0H3Q Power Sequence Deviation – Impact on Reliability and OperationHello,I am designing a custom board based on the STM32N657X0H3Q, using the STM32N6570-DK as a reference. The MCU is configured to use the internal SMPS for VCORE generation.Unfortunately, my design does not fully comply with the recommended power sequencing described in the documentation:The various 1.8 V rails are generated from a single DC/DC converter. VDDA18USB, VDDA18CSI, and VDDA18ADC are powered directly from this 1.8 V rail. These rails are not gated by PWR_ON and therefore may become valid before or simultaneously with the PWR_ON assertion.The MCU appears to boot and operate correctly during initial testing, but I would like to understand the implications of this deviation from the recommended power sequence.My questions are:Does powering VDDA18USB, VDDA18CSI, and VDDA18ADC before (or independently of) PWR_ON create any risk of device damage or reduced reliability? Are there any known functio
After weeks of debugging TXERR on USB host, I figured out that changing OTG clock from PLL3Q to HSI48 errors disappear.STM32H733 running at 336MHz from HSE @25MHz. USB connected to an LTE modem (CDC ECM). With few tasks and interrupts errors occur at an average rate of 1/minute, but under heavy load (30+ tasks and 5 TIM interrupts <1ms) the error rate rises to 20/minute ca.As said, using HSI48 errors completely disappear under any condition. Is HSI48 more stable than PLL? How does CPU load influence PLL? Alessandro
I'm trying to figure out which clock source the STM32L412 ADC uses in synchronous mode. The documentation doesn't seem to be consistent.Most diagrams show SYSCLK, while the text says HCLK (AHB clock).It looks to me like RM0394 Figure 13 and DS12469 Figure 5 are incomplete because they don't show the AHB bus as an ADC clock input. Am I missing something, or is this a documentation error?
I'm working with an STM32F070 and trying to verify the Independent Watchdog (IWDG). My expectation is that if the watchdog is not refreshed, the MCU should perform a system reset after the timeout expires.The IWDG is configured as follows:MCU: STM32F070 Clock: HSI = ON (System Clock) LSI = ON (for IWDG) IWDG configuration: Prescaler = 256 Reload = 4095 Window = 4095 The watchdog is initialized using HAL_IWDG_Init().To force a timeout, I intentionally do not refresh the watchdog: // IWDG_KICK();while (1){ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);}The full initialization is: hiwdg.Instance = IWDG;hiwdg.Init.Prescaler = IWDG_PRESCALER_256;hiwdg.Init.Reload = 4095;hiwdg.Init.Window = 4095;HAL_IWDG_Init(&hiwdg);According to the reference manual, with Prescaler = 256 and Reload = 4095, I expect a wat
I reviewed the code and found anti-windup is not implemented in the loop, is that correct? Let me know if there is a version with anti-windup implemented, thank you.
Hi,I want to configure STM32L152RE board to max speed of 32MHz using HSE 8MHz. As per reference manual, flash latency can be configured only in 64 bit read operations. I want to use 32bit read operation for low power consumption. I am confused on how to use the board in bare metal programming specifically for flash latency part. I am using platform.io and want to initialize the RCC using HSE and PLL. I need guidance for RCC initialization and flash latency configuration portion.
I have a very nice study using RTC smooth calibration, with the RTC steered by a GNSS receiver one second pulse and a software PI controller that redetermines the calibration every 32 seconds, kind of a PLL. I am using a STM32F746G Disco evaluation board for development. Phase comparison is by hardware (1 second RTC alarm output and 2 channel input capture on a 10 MHz timer).For optimizing the PI controller i would like deterministic results, but i don’t know what happens when i set a new smooth calibration value during an ongoing 32 second period.Does that initiate a new 32 second RTC smooth calibration period with the requested number of adjustments?Is a certain one of the 32 seconds better for setting the new calibration value? Which one?I could analyze the 32 phase measurements in my PI controller time interval to see how many calibration steps actually happened, but maybe there are some simple rules.
I'm working on a completely bare-metal STM32L476RG project using GCC + CMake + OpenOCD + GDB (no HAL, no CubeMX).The MCU consistently HardFaults immediately after entering Reset_Handler, before any .data copy or .bss initialization occurs.ToolchainMCU: STM32L476RG GCC: arm-none-eabi-gcc 15.2.1 OpenOCD + GDB CMake project -mcpu=cortex-m4 -mthumb -nostartfiles LinkerMemory layout:FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024KRAM (rwx): ORIGIN = 0x20000000, LENGTH = 128K_estack = ORIGIN(RAM) + LENGTH(RAM);Relevant symbols:_sdata = 0x20000000_edata = 0x20000030_sidata = 0x08000A7C_sbss = 0x20000030_ebss = 0x20000034 Vector tableVector table begins at 0x08000000.First entries:0x20020000 // MSP0x08000197 // Reset_Handler0x08000201 // NMI0x0800018D // HardFaultReading both0x00000000and0x08000000shows identical contents, so the Flash alias appears correct.VTOR:0xE000ED08 = 0x00000000 Reset_Handlervoid Reset_Handler(void){ extern uint32_t _sdata, _edata, _sidata; extern
Hello, I created a project (BLE_p2pServer) in STM32CubeMX (6.18.0), but it won't build.Unlike other projects, this project has a folder-like icon in the Project Explorer.I created the project using the same procedure as other projects (BLE_TransparentMode, etc.), so do you know why this is happening?Deleting and recreating the project doesn't change the situation.
I programmed BLE_TransparentMode to perform RF testing on a custom board equipped with an STM32WBA23.I want to transmit unmodulated CW, but I can't find a way to do this using HCI commands.Is there a vendor-specific command to achieve this? Alternatively, methods such as calling an API or modifying registers would also be acceptable.
I would like to implement a secure firmware update solution that will work in both an STM32G4A1 and an STM32U0 83. Different applications, but I would like to use the same basic bootloader and PC update application. Both would updated over USB. They have basically the same security features and both have the AES-GCM accelerators.I've been watching the MOOC - Security series to learn how to do this. I got to the end of "Security Part4 - STM32 security in practice - 15 Secure firmware update" and had some questions since there isn't any lab video for this module like there are for the modules that came before it. I've also looked at the Silicon Labs AN0060: Bootloader with AES Encryption app note, which is similar in implementation to what I am thinking of doing. The link for the slides for the MOOK module is at the bottom of this page:https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/STM32_secur
Hi Community, We are exploring the migration of our FreeRTOS-based firmware to Zephyr. Our current design heavily relies on TouchGFX (provided by ST) for controlling an 800×480 touch display. Here are some key details of our setup: TouchGFX with external SDRAM for a double frame buffer using the FMC peripheral Images, fonts, and text stored in external QSPI Flash LTDC controller in use DMA2D accelerator enabled RGB image compression utilized Is there any sample application or detailed documentation available for achieving this on Zephyr? I have already briefly reviewed the following resources: Abstraction Layer Architecture | TouchGFX Documentation and https://support.touchgfx.com/docs/basic-concepts/operating-system#touchgfx-os-wrappers However, I need more guidance, specifically: Examples or reference projects for TouchGFX on Zephyr Detailed documentation on integration steps We have a tig
I’m having an issue with throughput on the STLINK-V3MODS VCP when used with the second BRIDGE UART. If I set both the VCP and 2nd VCP for 115200 baud, I am only able to simultaneously send 5.76 KiB/s through each (half throughput). If I use only the VCP at 115200, I’m able to send 11.52 KiB/s (full throughput).I saw no mention of any such limitation in the documentation. Am I doing something wrong?STLINK-V3MODS firmware 3.17.11Windows 11 version 25H2 (OS Build 26200.8875)
Hi, everyone,I'm trying to implement USB CDC on an STM32H5E5 board using the classic USB device middleware. I followed another community thread that provides the steps to do this: How to Use STMicroelectronics’ Classic USB Device Middleware with the New STM32 Families: When compiling the code, I encountered some errors at this point in the library: USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev){pdev->pData = &hpcd_USB_DRD_FS; HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x00 , PCD_SNG_BUF, 0x40);HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x80 , PCD_SNG_BUF, 0x80);HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , CDC_IN_EP , PCD_SNG_BUF, 0xC0);HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , CDC_OUT_EP , PCD_SNG_BUF, 0x100);HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , CDC_CMD_EP , PCD_SNG_BUF, 0x140); return USBD_OK;}The error messages are as follows Description Resource Path Location Type'PCD_SNG_BUF' u
Hi ST Community,I am currently working on an analog sensor acquisition project using the NUCLEO-N657X0-Q (STM32N657X0) board on STM32CubeIDE (version 1.19.0). I am attempting to read a Keyes pressure sensor via ADC1 on PA1 (ADC1_INP1).Physical Wiring & Setup Sensor Connections: The pressure sensor is physically wired to: VCC -> Board 3.3V GND -> Board GND Signal Out -> PA1 (bridged with a 1/2 resistor divider to ground to ensure the voltage never exceeds 1.8V). CN12 Jumpers Connected: Pin 13 / Pin 14 (VDDA1V8) is connected with a jumper cap to supply 1.8V to VDDA. Pin 11 / Pin 12 (VDDIO) is connected with a jumper cap. STM32CubeMX Configurations VREFBUF: Configured as Disable (since the NUCLEO board provides an external 1.8V reference to VREF+). Security & RIF (RIFSC Panel): ADC1: Configured as Non-Secure, Unprivileged (unchecked), Unlock (unchecked), and assigned to the Application context. GPIOA: Configured as Non-Secure, Unprivileg
There seems to be a documentation error between DS14053 Rev 4 and RM0492 Rev 3. In the data sheet, section 3.17, table 3, "ADC Features" we see a different set of features compared to the reference manual, section 19.3, table 107. The data sheet claims oversampling up to x1024, a data register of 32 bits and gain compensation is supported. The reference manual claims oversampling up to x256, a data register of 16 bits and no gain compensation.The register set description only has oversampling fields with values up to 256. It would be helpful if ST could correct whichever document is wrong, and if the reference manual is wrong and oversampling up to x1024 is supported, then please also correct the register definitions.Thanks,TG
I have two STM32G474 on a custom PCB, in which I want to use a SOM to program the microcontrollers via UART (USART1 or USART2).While most PCBs work fine (toggle BOOT0 + NRST and program via UART), some PCBs have intermittent access on the UART. It is not always the same microcontroller that fails on the boards.Tests I have done:Programming via USB DFU always works, even when toggling BOOT0 and NRST with the SOM, so it seems it is going into bootloader mode correctly. In the SOM I am using stm32flash. I have checked that no other signals are triggering the bootloader on another interface (e.g. I2C, other USART). I have checked that the 0x7F command is being sent correctly (timing, clean edges, amplitude) There is no reply at all from the micro I have tested with pull-ups and/or series resistors on RX line and better decoupling on power supply, nothing made a difference The same UART lines work fine during runtime, they only fail when in bootloader mode The good PCBs are always good and
Hi everyone,I'm planning to develop a VoIP/IP intercom application using FreeRTOS, LwIP, SIP, RTP, UDP/TCP, and an audio codec (SAI/I2S). I'm trying to decide between the STM32F7 and STM32H7 series (e.g., STM32F769I-DISCO vs STM32H750B-DK).From real-world experience, what are the main differences between the F7 and H7 beyond the datasheet specifications? Is the H7 worth choosing for a new networking/audio project, or is the F7 sufficient? Are there any practical drawbacks of the H7, such as cache or DMA complexity?I'd appreciate any recommendations or experiences from developers who have worked with both series.
I have the nucleo board connected to the STLINK-V3PWR via JP2 and ground connections. Flashed onto the device I have a mioty evaluation stack from LZE. I am taking readings of the current drawn and getting a consistent value of 3mA. I was trying to evaluate the deepstop current so wanted to know if the fact is that I have got my measurements/ connections wrong or that the firmware is preventing me from entering the mode.
Dear Team,Could you please provide the internal RTC accuracy for the STM32H7 microcontroller?Additionally, I clarify the following point: 'Digital calibration circuit with 0.95 ppm resolution, to compensate for quartz crystal inaccuracy. Regards,TEMC - Efftronics systems Pvt Ltd
When using the ISP IQTune application to generate ISP parameters for the STM32N6 DCMIPP, the Auto White Balance expresses an error that I believe is incorrect. The error claims that AWB cannot start becase the R/B ratios for white balance must decrease, as the color temperature increases. The ratio IS decreasing, as shown in the image below.When the temperature is 5100K, the R/B ratio is 2.1/1.9 = 1.105When the temperature is 3800K, the R/B ratio is 2.3/1.9 = 1.210Thus, as the temperature increases, the R/B ratio decreases. Either this is wrong, or I’m missing a key component of this calibration process.
Hello,I am looking for a camera module for the NUCLEO-H7S3L8 board, using the STM32H7S3L8 MCU.My project requirements are: Field of view: at least 120° horizontal FOV Preferably RGB or YCbCr output I would prefer a module that is reasonably easy to connect, with a breakout board or pin header I would like to avoid MIPI CSI-2 cameras because the NUCLEO-H7S3L8 does not have a CSI-2 camera receiver or a 22-pin camera connector The STM32H7S3L8 datasheet, Section 3.26, states that its DCMIPP supports an 8- to 16-bit parallel camera interface, including RGB565, YCbCr 4:2:2 and compressed data such as JPEG. However, the NUCLEO-H7S3L8 board does not appear to have a dedicated camera FPC connector.I found an ST Community table listing OV2640, OV5640 and OV5642 as examples of sensors supported by STM32 DCMI. I am therefore considering an OV5640 module with a 120° lens, such as this module:https://www.eleparts.co.kr/goods/view?no=6210776&utm_ I also considered an Arducam Mega SPI camera
I am using SPI6 on an STM32H562 to write data to a WS2812 LED strip. The following code is called once per second to write the data: LOGIF ("bytes left=%d", GPDMA1_Channel2->CBR1); LOGIF ("TXC %d", (WS2812_SPI.Instance->SR & SPI_SR_TXC) != 0); LOGIF ("ready=%d", HAL_SPI_GetState(&WS2812_SPI)== HAL_SPI_STATE_READY); if (HAL_SPI_GetState(&WS2812_SPI) != HAL_SPI_STATE_READY) { LOGIF ("error=%d", HAL_SPI_GetError(&WS2812_SPI)); HAL_SPI_Abort (&WS2812_SPI); } HAL_SPI_Transmit_DMA (&WS2812_SPI, spi_bytes, RESET_BYTES + nvalues * BYTES_PER_FRAME); Here is the log output for the first two calls:[101] ws2812 75: bytes left=0[101] ws2812 76: TXC 1[101] ws2812 77: ready=1[201] ws2812 75: bytes left=0[201] ws2812 76: TXC 1[201] ws2812 77: ready=0[201] ws2812 79: error=0The first time, GetState reports READY, but the second time it does not, even though bytes_left is zero and TXC is 1, so an Abort is required before the next transmit. Unfortunat
I currently have two boards equipped with different specific models of N6, namely STM32N647X0H3Q and STM32N657X0H3Q. I have an IDE project for testing the memory-mapped functions of each of these two chips.The problem lies in that this project can be implemented on the STM32N647X0H3Q in a manner similar to: data = *(volatile uint8_t *)0x70100000;Such code reads the content from the external FLASH. However, on the STM32N657X0H3Q, it is impossible to read. The specific manifestation is that when I run this line of code in the debug mode, the program directly jumps tovoid SysTick_Handler(void)and the debugging connection is disconnected, as shown in the following figure. I have wondered whether it was an issue with the external FLASH soldering, or a problem with the PCB traces (my two circuit boards were not produced on the same PCB. The circuit board with STM32N647X0H3Q was purchased from the internet, while the one with STM32N657X0H3Q was designed based on the schematic diagram of the
Hi all,I'm reusing the STM32H7S78-DK's Octo-SPI flash (MX66UW1G45G) and Hexadeca-SPI PSRAM (APS256) sub-circuits on a custom board and want to match the DK's signal integrity. I can't find the fabrication stackup or impedance spec in the docs. Could ST share, for the DK (please confirm board rev):Full layer stackup — copper weights and each dielectric thickness/material. Target impedance (single-ended + any diff) and tolerance for the Octo-SPI / Hexa-SPI nets. Trace width/spacing for those buses, and their routing layer + reference plane. Any length-matching constraints on those groups.For reference, the published Altium reference-design project ships with an unconfigured stackup (single 1.5 mm dielectric, all layers typed Signal), so it doesn't reflect the real fabricated stack — which is why I'm asking for the actual values.Thanks!
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.