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
STM32N657 / STEdgeAI 4.0.1 - Non-deterministic inference results with a minimal STAI wrapperHello,I am currently evaluating STEdgeAI 4.0.1 on an STM32N657 before integrating AI support into my RTOS (uKOS-X).My objective is not to use the generated CubeMX application. Instead, I want to build a small self-contained library that encapsulates all ST Edge AI resources and exposes only a minimal API to the application.The wrapper API is intentionally very small:gan_npu_status_t npu_init(void);gan_npu_status_t npu_putInput(const void *input);gan_npu_status_t npu_inference(void);gan_npu_status_t npu_getOutput(void *output);The application never accesses any STAI object directly.This is only a first validation step, therefore I intentionally use synchronous execution (STAI_MODE_SYNC) and polling only. Interrupt-driven execution will be implemented later.Configuration STM32N657 STEdgeAI 4.0.1 Neural-ART generated network Single network instance ST-generated sources left completely uncha
Hi @ST MICROCONTOLLER team ,We are using MCSDK v6.3.0 IN STM32G431VBT6.While running the motor in MC_ProgramSpeedMotor1(400,1000) we found that the average speed read using MC_GetMecSpeedAverageMotor1 is returning speed in range of 382rpm to 416rpm eventhough the commanded speed is 400rpm.How can we control the motor speed in a range of 398-402 rpm say (+-2 rpm from the commanded speed)Could you please look into the attached images and pseudo code and let me know how can we achieve the requirement to keep the motor speed within (+ or -2 rpm of commanded speed )code flow:HAL_Delay(10);MC_StartMotor1();while (MC_GetSTMStateMotor1() != RUN){}MC_ProgramSpeedRampMotor1(400, 1000);while (1){ velocity1 = MC_GetMecSpeedAverageMotor1();} Complete speed rampZoomed image indicating the velocity1while the torque_qd = MC_GetIqdrefMotor1torque_qd.q stays within 250 to 260 range
Setup Board: X-NUCLEO-NFC09A1 (ST25R100), brand new, unmodified, no jumpers/solder bridges changed Host: STM32, custom C++17 driver (register-level, not RFAL) SPI: confirmed working — bring-up sequence completes, all register reads/writes verified against DS14139 Rev 4 SymptomThe autonomous wake-up measurement cycle (triggered internally by the WUT every wut period) never emits any RF onto RFO1/RFO2, confirmed directly on an oscilloscope. However, the CALIBRATE_WU_MEASUREMENT direct command (0x74), issued manually once during bring-up, reliably emits a real RF burst every time (5 sub-pulses of ~26 µs each, ~130 µs total).This has been reproduced consistently across many test runs, with the following independently confirmed facts: wu_en is set and read back correctly (OPERATION = 0x01). The WU timer itself is confirmed running: with wuti (WU_CONTROL_1 bit 3) set, I_wut fires reliably in IRQ_STATUS_3 on schedule, tested at both wut = 77.3 ms and wut = 9.7 ms. IRQ_MASK_3 correctly
I am trying to use SWV (ITM Console and Statistical Profiling) on the STM32N6570-DK with an application generated by STM32 AI Model Zoo (ST Edge AI 4.0). Normal debugging works perfectly—breakpoints, memory access, register view, and DWT->CYCCNT are all functional, and CoreDebug->DEMCR has TRCENA enabled. However, every SWV-related window (ITM Data Console, Statistical Profiling, Data Trace, etc.) remains completely blank.I have already verified the SWV configuration in STM32CubeIDE (v1.19.0), updated the ST-LINK firmware to V3J17M10, tried both Software System Reset and Attach to Running Target, manually configured PB5 as GPIO_AF0_TRACE, and audited the generated project. The project contains no explicit initialization of ITM, TPIU, DBGMCU, or trace-related peripherals, and nothing appears to disable debugging. Since the project is generated by the AI Model Zoo (FSBL + XIP boot flow) and does not include an IOC file, I am unsure whether additional trace initialization is require
mcsdk no option to use stm32f103RCT6 to control TWO BLDC motors with hass sensors with pot to control speed what to do any other old version
I’m using BALF-SPI2-02D3 with the S2-LP at 433 MHz and have a question about Figure 13 in the datasheet.The recommended PCB stackup shows:Top plane: 35 µm + 31 µmMid layer: 31 µmBottom plane: 35 µm + 31 µmWhat exactly does “35 µm + 31 µm” mean for the outer layers?Is this:base copper + plated copper,finished copper thickness in ST’s stackup notation,or something else?I’m trying to choose a 1.0 mm, 4-layer PCB stackup from a commercial manufacturer and would like to match the recommendation as closely as possible.Thanks for any clarification.
The CubeMx project does not generate the Usart Init in main .c file. I can add manually but just verifying if any problem with my CubeMx software. Request to please verify. I mean it is not called from the main.c file.
Hi everyone,I need some help please on a choppy DSI signal.Long story short, I have decided to clone an STM32U5G9 disco board and build my own DSI driver using the same mcu in a smaller package running at 3v3 VDD. All seems to be fine, all voltages levels are correct on the screen after removing R8 and bridging R9 (backlight also works) and the VLXSMPS output is the same as on the disco (1.2V). I have signal on all DSI lines as well, as expected.But...Below I am showing you the DSI_D0N signal from the original disco board, followed by my custom one. The capture was with an oscilloscope on the direct pin output of the two mcu-s, so the screen was not connected in either scenario. It is clear to me that the low state of the signal is too noisy on my custom board and thus, not too surprisingly, I have no output on the screen. Can anyone give me a hint please over what I did wrong in my design?About the custom board, it is 2-layers, the DSI lines are all matched and no vias were used. The
Hi everyone,Can someone help me figure out the correct workflow for debugging custom ModelZoo firmware on the STM32N6570-DK using STM32CubeIDE?I am currently working with the stm32ai-modelzoo-services repository, specifically modifying the Object Detection example to add H.264 video encoding and audio recording triggers. Because this uses the ST Edge AI deployment pipeline, I am building and flashing the board entirely via the Python CLI:Bash python stm32ai_main.py --config-name custom_deploy.yamlThis script works perfectly. It handles the First Stage Bootloader (FSBL) sequence, flashes the external memory, and the board boots and runs my custom code without any issues.My question is: how do I actually attach CubeIDE to this running target so I can step through my modified C code?I want to use breakpoints in main.c, watch variables, and view the call stack. However, when I try to create a standard Debug Configuration in CubeIDE pointing to the .elf generated by the Python script, the S
Hello Gaetan, I purchased the STM32H7S78-DK board. The attachment STM32H7S78-DKTouchGFXDemo1.1.2.7z is no longer available. Could you please re-upload it or send it to me via Direct Message (DM)? If you need my email address for a direct file transfer, please check my registered ST account profile or ask me via DM. Thank you.kwankee lee
TIM2 is configured in Encoder Interface Mode (TIM_ENCODERMODE_TI12). In this mode the timer counter (CNT) is driven by quadrature encoder transitions on channels CH1 and CH2 instead of the internal timer clock. PWM generation on TIM2 channel 3 relies on the same timer counter reaching the compare value (CCR3). Since no encoder transitions were present during testing, the counter remained at zero (TIM2->CNT = 0). Consequently the compare event never occurred and the PWM output did not toggle, resulting in a constant output level on the oscilloscope. The issue is therefore caused by the timer counter source being encoder-driven rather than clock-driven.I am using an STM32U535VET6 with the following configuration:1. TIM2_CH1 (PA0) → Encoder Input A2. TIM2_CH2 (PA1) → Encoder Input B3. TIM2_CH3 (PA2) → PWM output for a buzzerTIM2 is configured in Encoder Interface Mode: sConfig.EncoderMode = TIM_ENCODERMODE_TI12; HAL_TIM_Encoder_Init(&htim2, &sConfig); Channel
I purchased new board NUCLEO-H723ZG, installed STM32CubeIDE, STM32CubeMX, Programmer. Now I just want to build and run on my board any STM32CubeIDE example project without dancing around.But it seems like it is impossible to import ready to run project and run it. I waisted several hours with no luck.Can anyone point me out to any place online where I can just download the project, open it in IDE and run without modifications on my hardware board?
MCSDK 6.4.2 has FreeRTOS support for G4 family.I noticed that FOC code generation is only for bare metal not FreeRTOS on the H5 seriesAre there any plans for upgrading MCSDK to support FreeRTOS for H5? If there are plans, do you have a timeframe.Thank you!
RAK3172 + ChirpStack FUOTA: Class-C session confirmed active, but zero radio IRQ activity (no RxDone / RxTimeout / RxError) — multicast fragments never received on one of two identical devicesSummaryI have two identical devices (same firmware, same hardware BOM) running FUOTA over LoRaWAN using a RAK3172 module (STM32WLE5-based, AT-command slave) driven by an STM32H7 host MCU. One device completes FUOTA perfectly every time. The second device — same code, same ChirpStack FUOTA deployment, same gateway — gets all the way to a confirmed Class-C switch and then receives nothing. No fragments, no radio errors, nothing.I’ve isolated this down to the radio IRQ level and would like input from anyone who has hit something similar with RAK3172 / STM32WL Class-C behavior.SetupEnd device MCU: STM32H7 (host), communicating with RAK3172 over UART using AT commands LoRa modem: RAK3172 (STM32WLE5 based), running STM32CubeWL / LoRaMac-node stack LNS: ChirpStack v4.17.0 (self-hosted) FUOTA: ChirpStack
I am having a hard time to use a JLink via IP on the local LAN. I can connect, but every time I launch a debug session, a pop-up from Segger appears asking me for the JLink identifier: I have to enter the IP address, and then it works. But this is rather nerving to have to enter the IP address every time I launch a debug/run session.It seems that the extension does not officially support JLink over IP. If this is true, please add this important feature in a future update. Specifically that the jlinkgdbtarget configuration type in the launch.json schema be updated to support an ipAddress field or a generic serverArgs/serverParameters array (matching how they already handle stgdbtarget and openocdtarget).Currently because the extension forces a hardcoded string layout and uses the silent (-s) flag, it actively suppresses SEGGER's standard native fallbacks (like reading workspace JLinkGDBServer.ini files).Thank you for an otherwise excellent tool (STM extensions + VSC).
#include "dac.h"#include "main.h"#define CURRENT_MIN 5#define CURRENT_MAX 400#define DAC_MIN 248 // 0.2 V#define DAC_MAX 4095 // 3.3 Vvoid DAC_Init(void){ HAL_DAC_Start(&hdac1, DAC_CHANNEL_1); HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 4095);}void DAC_SetCurrent(uint16_t current){ uint32_t dac; if(current < CURRENT_MIN) current = CURRENT_MIN; if(current > CURRENT_MAX) current = CURRENT_MAX; dac = DAC_MIN + (((uint32_t)(current - CURRENT_MIN) * (DAC_MAX - DAC_MIN)) / (CURRENT_MAX - CURRENT_MIN)); HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, dac);}void DAC_OutputOff(void){ HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 0);}
Hello SirI’d like to know your goods label rules.it’s only have Assemble country information, no Wafer production country information? here’s my stock label information. and now i have a new batch need impoted and the documents was wrote COO is Morocco.the Customs asked us provide the Country of Origin Certificate.could you please support ?
On an STM32L552ZE with TZEN=1, RDP=0xAA (Level 0) and BOOT_LOCK=1, the STM32CubeProgrammer command -rdu reported success while explicitly stating that no option byte was modified. From that command onward the device is permanently inaccessible: DAUTHSTATUS shows secure invasive and non-invasive debug disabled, every FLASH register (secure and non-secure alias) fails even on read, and the documented RDP regression path (RDP=0xBB → RDP=0xAA TZEN=0x0) can no longer be executed because option byte programming requires those registers.We would like to understand whether this is expected behaviour, and whether any recovery path exists.Hardware and toolsItem Value Device STM32L552ZE-Q on NUCLEO-L552ZE-Q Device ID 0x472, Revision ID Rev Z (DBGMCU_IDCODE = 0x20016472) ST-LINK onboard, firmware V2J48M35 (also reproduced with V2J47M34) STM32CubeProgrammer 2.23.0 (also reproduced with 2.22.0) Supply 3.26–3.27 V, separate USB port BOOT0 (PH3) tied to VCC during all operations de
Under this configuration, the prompt indicates that the attribute "liveWatch" is not allowed. { "type": "jlinkgdbtarget", "request": "launch", "name": "STM32Cube: Launch JLink GDB Server", "origin": "snippet", "cwd": "${workspaceFolder}", "preBuild": "${command:st-stm32-ide-debug-launch.build}", "runEntry": "main", "imagesAndSymbols": [ { "imageFileName": "${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}" } ], "liveWatch": { "enabled": true, "samplesPerSecond": "4" } },This is the analysis conducted by GPT.STM32CubeIDE for Visual Studio Code 3.10.0JLinkDebugTargetAdapter correctly creates the Live Watch client.However, the Live Watch client immediately issues-var-createwhile the target is running.SEGGER J-Link GDB Server returnsCannot execu
Hi sir,I have a question regarding the hardware connection of Pin 3 (SCx) on the LSM6DSOW when operating in Mode 1.According to the datasheet, Pin 3 should be connected to VDDIO or GND in Mode 1. However, in our current design, this pin is connected to an MCU GPIO to maintain hardware compatibility with another project that utilizes the Sensor Hub (Mode 2) feature. Our intention is to drive this GPIO LOW to satisfy the Mode 1 requirement.We have a concern regarding the power-up sequence: In our system, the IMU and MCU are powered simultaneously. However, there is a short delay during the MCU's boot-up phase before the GPIO can be initialized and driven LOW. During this window, Pin 3 of the LSM6DSOW will be in a floating state (input without pull-up).Our proposed software flow is as follows:System power-up (IMU and MCU together).MCU drives the Pin 3 GPIO to output LOW as soon as its firmware initializes.MCU issues a Software Reset (SW_RESET in CTRL3_C, 12h) to the LSM6DSOW.Proceed with
Everything was working normally until STM32CubeIDE prompted an ST-Link firmware upgrade. After performing the upgrade, ST-Link connectivity became unreliable and eventually stopped working entirely — both through CubeIDE's Run/Debug and through standalone STM32CubeProgrammer.Timeline1. Board was flashing/debugging normally the day before.2. STM32CubeIDE displayed a prompt indicating a newer ST-Link firmware version was available.3. Performed the ST-Link firmware upgrade (via the standalone STLinkUpgrade.jar tool bundled with STM32CubeProgrammer).4. After the upgrade, started getting a mix of symptoms: board not detected at all, connecting and then immediately losing connection, and STM32CubeProgrammer intermittently responding/not responding.Exact errors observedFrom STM32CubeIDE's ST-Link GDB server (during a Run/Debug launch):STMicroelectronics ST-LINK GDB server. Version 7.10.0...Target no device foundError in initializing ST-LINK device.Reason: No device found on target.From standa
Hi there ! I start to work with this shield, and i use one STM32G071 for control the UART comunication. The module work at 115200baute rate , and i use the AT command for comunicate with her. So everthingh work fine except when i send ATE0 for turn off the echo this command send back ok but afther i send the other command the answert i receive it’s look like the echo still on . Examplke i send AT\r\n i receive back AT\r\n\r\nok\r\n i try to wait to send the next command but nothingh still dosen’t work. I know i can continus to work eaven send me back the echo but this stuff make me crazy because i don’t understand if is one my problem or if the shield. The UART is configurate with interrupt and i configure the rx in this way every time i receive one byte in the callback i save inside one buffer and outside the callback i check if i receive OK or ERROR. Some one know how to resolve this problem ? Thank You Sergio
I have a STM32C031C6 and I’m trying to set the clock to be 48MHz It works when I have the for loops in there, but its not supposed to have them and I want to get it working properly without needing them.If I comment out 1 of the for loops, then after that it gives me this error I’m not sure what I am doing wrong, I think I’m not waiting properly for something, but I don’t know what that is.Error in executing 'cont' command ...Target is not responding, retrying...Target is not responding, retrying...Shutting down...Target is not responding, retrying… This is the code.#include "stm32c031xx.h"void speed_up_to_48mhz(void){ // 1. ENABLE HSI and wait for the HSI to become Ready RCC->CR |= (1U << 8); while (!(RCC->CR & (1U << 10))); for(volatile int i =0; i<1000000; i++){} //bit 8 is prefetch //bit 9 is instruction cache //1 wait state FLASH->ACR = (1U << 9) | (1U << 0); FLASH->ACR &=~ (1U
Dear ST Community Team,We are working on the STM32N657X0H3Q microcontroller and interfacing two Infineon S80KS5123GABHB020 Octal HYPERRAM devices using the XSPI1 interface in the dual-octal (16-bit) configuration, as shown in the STM32N6 Reference Manual (Figure 196 – XSPI block diagram for dual-octal configuration).In our hardware design:MCU: STM32N657X0H3Q Interface: XSPI1 Memory devices: 2 × Infineon S80KS5123GABHB020 Octal HYPERRAM Configuration: Dual-octal mode (two 8-bit memories operating as a single 16-bit memory interface) Both memories are connected according to the STM32N6 dual-octal configuration.We would like guidance on how to correctly configure this setup in STM32CubeMX.Could you please provide the recommended CubeMX configuration for the following?How should XSPI1 be configured for dual-octal mode? Which Memory Type should be selected for the S80KS5123GABHB020? How should the chip select (NCS) signals be configured for two memories operating in dual mode? Are there an
Hello,I am integrating Mbed TLS with TLS 1.3 on an STM32H573 using the STM32 Secure Manager PSA interface.The TLS 1.3 handshake fails at: psa_key_derivation_setup( &operation, PSA_ALG_HKDF_EXTRACT(PSA_ALG_SHA_256));The returned status is: PSA_ERROR_NOT_SUPPORTED /* -134 */I tested the relevant algorithms separately: PSA_ALG_HKDF(PSA_ALG_SHA_256)→ PSA_SUCCESSPSA_ALG_HKDF_EXTRACT(PSA_ALG_SHA_256)→ PSA_ERROR_NOT_SUPPORTEDPSA_ALG_HKDF_EXPAND(PSA_ALG_SHA_256)→ PSA_ERROR_NOT_SUPPORTEDThe generated algorithm ID is correct: PSA_ALG_HKDF_EXTRACT(PSA_ALG_SHA_256) == 0x08000409UI also traced the call through the Non-Secure PSA client. The request reaches the Secure Manager via nscall(), and PSA_ERROR_NOT_SUPPORTED is returned in psa_reply->status.My questions are:Does STM32 Secure Manager support PSA_ALG_HKDF_EXTRACT and PSA_ALG_HKDF_EXPAND? Is support dependent on the Secure Manager or SMAK version? Is TLS 1.3 with Mbed TLS officially supported with Secure Manager as PSA backend? Is
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.