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
Subject: X-NUCLEO-CCA02M2 PDM-over-SPI capture issue on STM32MP257F-EV1 - discontinuous clocking suspectedHello ST Support Team,I'm working with an X-NUCLEO-CCA02M2 dual PDM microphone expansion board interfaced to an STM32MP257F-EV1 evaluation board, and I'm running into a data-quality issue I'd appreciate your guidance on.Setup:- X-NUCLEO-CCA02M2 board, using onboard microphone M2 (MIC_PDM34_OB), routed via SB10 solder bridge to CN10 pin 15- Connected to the STM32MP257F-EV1's SPI8 peripheral in Linux userspace via /dev/spidev, MISO on mikroBUS pin 5 (PZ1), clock supplied from SPI8's own SCK (mikroBUS pin 4, PZ2) to CN10 pin 29 (MIC_CLK_NUCLEO)- Power from CN6 pin 3 (3.3V), GND from CN6 pins 6/7- Capturing via repeated SPI read calls (spidev, bufsiz increased to 65536, Mode 0)Issue:Short, isolated SPI captures (around 2000 bytes at a time, with pauses between reads) show clearly responsive behavior - bit density in the captured stream increases noticeably when speaking near the microp
Hello Team,We want to have Standalone Programmer based on ST`s Existing Flash Module Like St-Link V2, V3 Or Mini PCB tools.I should be able to Use External ST MCU to Command this SWD module for Flashing n all task , like CubeProgrammer.Basic Interface like Pushbutton to Start the Flash and Some LED to showcase any Error. We would not prefer expensive available off-the-Shelf Programmer like Segger..... Not want to use Rpi as well. This basically for FAE.Regards,
I have a board that we want to use to wake up on button presses and send BLE messages to other devices. In the start i can see that an IRQ is triggered when we push the button. But once we go to deepstop/sleep, the trigger does not do anything anymore.I use zephyr version 4.4.2My buttons is connected to PB14 and PB15,dts contains: gpio_keys { compatible = "gpio-keys"; wakeup-source; button1: button_0 { label = "Button 1"; gpios = <&gpiob 14 GPIO_ACTIVE_HIGH>; zephyr,code = <INPUT_KEY_0>; }; button2: button_1 { label = "Button 2"; gpios = <&gpiob 15 GPIO_ACTIVE_HIGH>; zephyr,code = <INPUT_KEY_1>; }; };/* Board is populated with an HSE 32 MHz crystal (OSC_IN/OSC_OUT) and an * LSE 32.768 kHz crystal (PB12/PB13) - use both instead of the internal * HSI/LSI RC oscillators for accurate timing. */&clk_hse { status = "okay";};&clk_lse {
Hi,I'm working on a data-logging application using the STM32U575VGT6Q. I'm evaluating filesystem options for this.I have a few questions for the community/ST team:Is LittleFS officially supported on the STM32U575 series (or any STM32U5 platform)? Is there any official ST support, reference implementation, or roadmap for LittleFS on STM32U5, or on any STM32 series in general? I'm targeting an external OCTOSPI flash chip . Is there any official or community GitHub repo, example project, or app note demonstrating LittleFS's using OCTOSPI HAL driver on STM32U5? If anyone has done this integration themselves, could you share a reference implementation or point me to one? For an append-heavy, sequential data-logging use case on external NOR flash, which filesystem would you recommend between LittleFS, FatFS, and FileX+LevelX on this platform, and why?Any pointers — official documentation, GitHub repos, forum threads, or app notes — would be greatly appreciated.Thanks in advance.
#include "main.h"#include <stdio.h>/* --- Handles périphériques --- */I2C_HandleTypeDef hi2c1;UART_HandleTypeDef huart2;/* --- Prototypes locaux --- */void SystemClock_Config(void);static void MX_USART2_UART_Init(void);static void MX_I2C1_Init(void);static void Sensor_Wakeup(void);void Error_Handler(void);/* --- Redirection printf vers UART2 --- */#ifdef __GNUC__int __io_putchar(int ch) { HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY); return ch;}#elseint fputc(int ch, FILE *f) { HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY); return ch;}#endifint main(void){ HAL_Init(); SystemClock_Config(); /* 1. Initialisations */ MX_USART2_UART_Init(); printf("\r\n========================================\r\n"); printf(" SCANNER DE BUS I2C1 (PA9/PA10) \r\n"); printf("========================================\r\n"); Sensor_Wakeup(); MX_I2C1_Init(); /* 2. Boucle de scan */ while (1) { printf
Hello everyone,I used to work with U5 family microcontrollers. Recently I migrate to C5 families, and to MX2 UI.When I wanted to create interruptions for DMA UART events, normally I worked with RxEventCallback (classic). However, seems I´m not capable to find this same __weak function anywhere inside the hal_uart.c file. Am I missing something? I´m working with STM32C562R mcu, in CubeIDE 2.2Thank you everyone.
We are currently working on flashing an STM32L071KZ MCU using the STM32 bootloader.The flashing process completes successfully when using a 64-byte payload. However, when we reduce the payload size to 8, 16, or 32 bytes, we observe unexpected behavior. In each case, only the first 8, 16, or 32 bytes of every 64-byte flash block are programmed successfully, while the remaining writes within the same 64-byte block do not take effect. This pattern repeats consistently for every subsequent 64-byte-aligned address.We have verified that:The correct data is being transmitted to the MCU. The target flash address is incremented correctly for each write operation. The bootloader acknowledges the write commands.Despite this, the flash programming behaves correctly only when using a 64-byte payload.Is there any known limitation or programming requirement for the STM32L071KZ bootloader or flash controller regarding payload sizes? Are there any additional steps or constraints that must be followed w
Hello,I would like to add Secure Boot + SFU functionality to my TouchGFX app with STM32N6. Since it is a graphics app, i don’t want to partition the external flash memory as installation and download slots as shown in the ST wiki for OEMuROT. https://wiki.st.com/stm32mcu/wiki/Security:OEMuRoT_for_STM32N6 To use external memory for apps and assests efficiently; below architecture is more suitable for me. Which changes are needed in the ST example ROT projects? With this, is it possible to debug the app code? Normal boot │ ▼BootROM → Secure FSBL → verify App + Assets → HMI Firmware update │ ▼ USB / CAN │ signed package │ ▼ Secure FSBL │ signature + version check │ program NOR │ verify
We would like to use the VL53L5 to measure the fuel level in a tank. According to the ATEX standard, the measuring device with the VL53L5 will be located near an opening in the tank in Zone 0.The datasheet does not specify the optical power of the circuit. The ATEX standard specifiesthe maximum optical power that the device may have in order to be installed in Zone 0. Could you please provide a table with the optical power values?
I am using STM32H745, STM32CubeAI Studio 1.3.0, ST Edge AI Core v4.0.1, as recommended on STM web site I am moving my code from X-CUBE-AI (generated by CubeMX) to ST Edge AI v4 (generated by AI Studio).I need to extract output of intermediate layer, and I used to use platform observer API for that.Can I keep using with st-ai code base (ai_platform_observer_register)?Should I switch to stai_network_set_callback() ? Is it supported for production applications? Will this API remain available in future ST Edge AI Core versions?Thank you
Hi all,I have this demo board. I copied the BSP demo code to my own empty project to understand and learn how the LCD code works. I copied the code from the BSP demo function by function but I moved the code to my files (filenames and project tree folders) so it makes more sense to me. I'm at the point where the demo draws rectangles on the screen and the demo runs. I copied the touch panel stuff but it is disabled because it was getting stuck in the init function. I'll deal with the touch panel later.I can not get the function that draws the rectangles on the LCD to work more than once when I program the board with my project. If I try to debug and step thru the code it actually works. I traced the part where it "hangs" by adding a line to toggle the green LED in the board. The part where it hangs is in the Polling For DMA transfer function: (void)HAL_DMA2D_PollForTransfer(&hlcd_dma2d, 50);BTW I'm new to STM32U5G9J, never used it before. I read the reference manual for the MCU and
Hey, Guys!I’m designing an application to record TDM data source with 48k x 16 slots x 32Bit Format based on STM32MP151.But from the datasheet, there is some confusion.It seems the SAI supports 32bit and 16 slots from the SAI main feature description. But the FRL register is limited to 256, which cannot meet the requirement: 32*16 = 512 > 256.I’m using an external CODEC to generate the TDM clock, so STM32MP151 is in slave mode.Does anyone have experience with an application like this?Thanks! Jampa.
Environment & Hardware MCU: STM32F407ZET Test Temperature: -10°C to 5°C Application Context: Internal flash memory is actively used for data storage purposes When the MCU is interrupted specifically during an internal flash write operation (HAL_FLASH_Program)—either by a sudden VDD power-off or a hardware reset (NRST assertion)—it completely fails to boot upon the subsequent power-up or reset release. This issue is highly temperature-dependent and only occurs at low temperatures. If the interruption happens while the flash is idle, or if the board is at room temperature, the MCU reboots perfectly fine. Observed Symptoms & MeasurementsGarbage Vector Fetch: Attaching a debugger via hot-plugging shows that the CPU never reaches main(). Consequently, essential initialization routines like SystemClock_Config() and HAL_Init() are completely bypassed and fail to execute. Instead of fetching the correct reset vector from 0x08000004, the Program Counter is loaded with a garbage addr
Software version: STM32CubeMX2 1.1.1 Target MCU: STM32C542RCT6Steps I followed:Created a new project and generated the CMake‑based IDE project to a target folder. Closed CubeMX2, then manually deleted Core/Src/main.c via file explorer. Opened the original .mx2 project file again, kept using the same output directory, and clicked Generate IDE project.Observed behavior: After code generation finishes, main.c is still missing from the folder. There is no warning message or popup to notify me the main entry‑point file is absent. Consequence: CMake build fails with undefined reference to main.In legacy CubeMX6, when main.c was removed, code‑generation would recreate this template file automatically. This does not happen in CubeMX2 1.1.1.Current workaround: I have to generate project files into a brand‑new empty folder to get a fresh copy of main.c, then copy this file back to my original project directory.Analysis: It seems CubeMX2 treats main.c as a user‑modified file and skips regeneratio
I am really trying to report a problem/bug but I could not find straghtforward way to do it on the STM site. So here it goes:STM32CubexMx for certain object (like USBX) creates virtual folders with spaces in name. These cannot be resolved correctly by STM32CubeIDE (Eclipse) when they are reference links. Project Explore shows folders but with no files and they are not build.For example:UX Device CoreStackUX Device ClassesUX Host Stack The system the tool run under is Windows 11.
I want progrma the STM32C071RBT6 for to get a virtual COM port.I’m using NUCLEO-C071RB board and this are the settings with Cube MX: I add some instructions into the main like this:int main(void){ /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_CRC_Init(); MX_USB_PCD_Init(); MX_USBX_Device_Init(); _ux_dcd_stm32_initialize(0, (ULONG)&hpcd_USB_DRD_FS); if (HAL_PCD_Start(&hpcd_USB_DRD_FS) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE *
Hi!Is there support for enable and view SWO output in the STM32 VScode 3.x.x. extension using ST-LINKV3?For now, this is the only feature that would keep us from moving away from the old eclipse-based platform.If there is no SWO support: Is it on the roadmap?
I am working on a batch script to disable TrustZone on an STM32U595VJT connected via JLINK using the STM32CubeProgrammer CLI tool.The device has both OEM1KEY and OEM2KEY set to [31:0] = 0xABCDEFAB, [63:32] = 0x12345678I am trying to run the following command when the RDP level is 1 and TrustZone is enabled with the device booted into the root secure services:STM32_Programmer_CLI.exe -c port=JLINK mode=HotPlug reset=HWrst freq=4000 ap=0 speed=Reliable -unlockRDP1 0xABCDEFAB 0x12345678 -ob RDP=0xAA TZEN=0The command fails to set the RDP level and TZEN flag with the following output: ------------------------------------------------------------------- STM32CubeProgrammer v2.20.0 -------------------------------------------------------------------Connecting to J-Link/Flasher ProbeWarning: The frequency input is not supported by the connected J-Link/Flasher !Device=Cortex-M33Unlock RDP1 password successfully doneDevice ID : 0x481Voltage : 3.33VFrequency
Heyho,I just found that the STM32L07 has too few DMA channels for my application, so I probably might need to use a DMA channel for two peripherals - surely not at the same time.So when switching the DMA request to another peripheral via DMA1->CSELR, is it enough to disable the DMA channel (DMA1_Channeln->CCR &= ~DMA_CCR_EN (no transfer active)), then set CSELR new? Thanks in advance!
Hello everyone, I have successfully controlled the Lin Engineering BL23E3301D04RO motor with the Nucleo-G474RE and IHM08M1 inverter .. using FOC configured in MC Workbench and the motor’s built-in encoder.I then copied the entire project and changed only the engine.Now I’m having trouble getting the following PMSM motor to run. Kt — 1.54 N·m/Arms Motor Constant Km— 1.63 Nm/sqrt(watt) RM (lin to line) at Amb — 0.60 Ohms Inductance — 2.24 mH Motor Poles — 16 Ipeak Motor — 51.19 Arms Tcont Stall — 20.74 N·m Icont Stall Motor — 13.60 Arms Tpk motor (25°C) — 64.54 Nm Rated speed — 1914 rpm Rated Power — 2826 W Inertia (KBM) — 5.69E-3 Kg-m² (4.20E-3 lb-ft-s²) Max Static Friction — 0.203 Nm (0.150 lb-ft) Cogging Friction — 0.102 Nm (0.075 lb-ft) Poles — 16 Back EMF Constant — 93.3 Vrms/kRPM In MC Workbench, I have set the following: I have configured the quadrature encoder to 2000 pulses per mechanical revolution. The power supply is CPX400S:Vout — 46V Iout,max
Hi, I have just installed STM32 Cube IDE 2.0.0 for Mac OS Apple Silicon, and then installed the GCC ARM for STM32 10.3-2021.10 toolchain through the toolchain manager. However when I import a project using this toolchain I get the nullgcc error.I also tried creating a new project and setting the toolchain to 10.3-2021.10 but still get the same error.When I look into the eclipse plugins folder searching for the toolchain binaries, I only see a .jar file but not the actual compiler folder with the binaries ls -l /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/ | grep gnu-tools-for-stm32Jul 9 11:22 com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10_1.2.100.202508251041.jarJun 26 11:52 com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.macosaarch64_1.0.0.202602081740un 26 11:52 com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1_1.0.100.202601091506.jarJun 26 11:52 com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32_2.
Hi,I'm trying to bring up an IMX219 (Raspberry Pi Camera Module v2) on the “x-cube-n6-camera-capture” reference project for nucleo657x0q, I first tried this under Zephyr and got working capture, but only at reduced resolution. I've since moved to writing a native driver for “stm32-mw-camera” instead, using “imx335.c” “cmw_imx335.c” as a structural reference template but only at the code/flow level since IMX335's actual register map isn't in any public datasheet I could find. For register values, PLL chain, and gain formula I relied entirely on the official Sony IMX219 datasheet instead, since the two sensors don't share a register layout.My questions are:1. Is there any official guidance for integrating a third-party sensor into `stm32-mw-camera` — driver/BSP side?2. Beyond the lane count and PHY bitrate, is there anything else specific to porting from a 4-lane sensor (IMX335) to a 2-lane one (IMX219) that I should watch out for? If writing a custom driver isn't the recommended path h
Device: STM32H7S3L8H6Datasheet DS14359 Rev 6, Table 26 "General operating conditions", gives forfCPU (CPU clock frequency): VOS low max 400 MHz VOS high max 600 MHz (8) footnote (8): "With ECC disabled"We cannot find any stated maximum for fCPU with the AXI-SRAM ECC ENABLED(user option byte ECC_ON_SRAM = 1). RM0477 mentions ECC only in connectionwith AXISRAM4 wait states, not with a frequency limit.This matters to us because ST's own OEMuRoT/BL2 reference code(OEMIROT_USER_SRAM_ECC in boot_hal_cfg.h) requires that option byte andrefuses to boot without it, so an application using the STiRoT + OEMuRoTsecure boot chain necessarily runs with ECC permanently enabled.Operating conditions on our side: VOS high (range 0), LDO supply,TJ <= 105 degC.Questions:1. What is the maximum fCPU for this device with ECC_ON_SRAM = 1?2. In the OEMuRoT reference code, SetSysClock() selects 380 MHz with the comment "to be functional with all hardware configurations (ECC_ON_SRAM enable
Hi, Following the original discussion here, this topic is split into a separate issue to remain aligned with Community guidelines and better visibility.DFU mode This processor can program the Option Bytes over DFU DFU ModeThis Processor is totally misdesignedIt exposes the Flash memory 3 timesFor me this looks like a severe bug.If you have a STM32G0B1 with read and write protection there is NO WAY over DFU get rid of these protections.
Greetings,I am working with nucleo_c5a3zg board and I am using zephyr RTOS for my project. I wanted to interface the sd card and try to do some data logging. I had a adafruit data logger shield which can fit on nucleo_c5a3zg board and there is a shield support in zephyr. When i build and uploaded the code i am getting a error that CMD8 is not supported. During debugging i found out that there is no state change on MISO line. Just to check if my code is wrong i tried same code with nucleo_f446re board and it works fine.Following is the capture from saleae loggic for necleo_c5a3zg board. I can provide other details like code, .dts file, etc.If someone can help me solve this issue it would be much appreciated.
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.