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
Hello ST Community,I am working with the STM32G4 ADC and am experiencing a conflict between my understanding of the internal digital processing pipeline and the behavior I am observing when combining Offset Correction and Gain Compensation at a reduced resolution (10-bit).According to the reference manual (RM0440), the digital processing back-end handles data in a specific sequence. However, I need absolute clarification on the mathematical interaction between ADC_OFRx and ADC_GCOMP.My Setup: MCU: STM32G4 Series ADC Resolution: 10-Bit (ADC_RESOLUTION_10B) Gain Compensation Factor: 16383 (Maximum 14-bit value, which equals a ~4x multiplier) Offset Sign: Negative (ADC_OFFSET_SIGN_NEGATIVE) My Configuration Code:// Resolution configurationADC_Head->Init.Resolution = ADC_RESOLUTION_10B;ADC_Head->Init.DataAlign = ADC_DATAALIGN_RIGHT;// ... standard HAL init ...// Apply maximum gain compensation (~4x)LL_ADC_SetGainCompensation(ADC_Head->Instance, 16383);My offset setting code:
Hi all,I have a custom board with an integrated STLINK-V3MODS, connected to an STM32H755ZIT6 MCU. T_NRST is not connected between the STLINK-V3MODS and my MCU.My MCU is already powered on and running code normally. When I then connect the STLINK-V3MODS to my PC (via USB), it automatically resets my target MCU.Since T_NRST isn't wired at all, I don't understand how the V3MODS is able to reset my target.I'm already using the VCP (T_VCP_TX/T_VCP_RX) for logging. The issue is: when I plug in the STLINK-V3MODS to view the logs, it resets my MCU — but I don't want that. I want the MCU to keep running as-is, and just be able to plug in and observe the logs live without interrupting it.How can I prevent this reset-on-connect behavior while still being able to use the VCP for logging?Thanks!
How to flash M4 Core in STM32MP157F-DK2 using STM32Cube Programmer..? I have the Hex file but whenever I open Cube Programmer ST-LINK is not Detecting instead its Deteccting as USB, and in Device manager USB is recognized as STM32 Bootloader
I am working on UART communication between two STM32 development boards: an STM32H7B3I-EVAL (STM32H7B3LI MCU) configured as the master and an STM32H573I-DK (STM32H573II MCU) configured as the slave. When HAL_Delay() is not added in the master application, the master continuously transmits data over UART, and the slave receives the data continuously without any issues. When HAL_Delay() is added after the UART transmission, the master transmits the data only once and then stops. During debugging, the application is found to be stuck inside HAL_Delay(). The attached screenshot shows that HAL_GetTick() always returns 0, and the global tick counter uwTick also remains 0 throughout execution. Since the HAL tick never increments, HAL_Delay() never completes and the application remains blocked. If execution is resumed from the debugger, the application eventually enters Error_Handler(). I have attached the debugger screenshot showing the values of HAL_GetTick(), uwTick, and the SysTick regis
Dear STMicroelectronics Support Team,we are preparing a reliability prediction report for an electronic assembly intended for customer qualification.The calculation is based on a parts count approach using IEC TR 63162:2025 as source of reference failure rates and IEC 61709:2017 for conversion to operating conditions.For the component STM32U545RET6Q, currently classified as a CMOS microcontroller according to IEC TR 63162, we kindly ask whether ST can provide manufacturer-specific reliability data, in particular:FIT rate or failure rate for STM32U545RET6Q, or for the STM32U5 family; reference conditions of the FIT value, including temperature, voltage, operating profile and confidence level; method or standard used for the reliability evaluation, for example IEC 61709, JEDEC, internal field data, HTOL, qualification data or other; reliability / qualification report that can support the use of the data in a customer-facing reliability prediction report; any applicable limitation regardi
Cross-posting from CC1125 Sleep current rises to ~2mA on the TI forum.I have a custom board with STM32F030 controlling a TI CC1125 sub-GHz radio transceiver via SPI plus a few GPIOs.Everything is fine for normal operation (TX, RX, etc), but the system has a "Shutdown" mode where the CC1125 is put into its low-power SLEEP state, and the STM32 is in STANDBY.In SLEEP the CC1125 should take under 1uA but, after sending the SLEEP command, I see the current rise over ~4s and eventually settle at ~2mA.I have managed to reproduce this using a Nucleo-F030R8 (ST-Link removed) and a TI dev board:The blue line is the total system current (STM32 + cc1125); red line is just the CC1125.Zooming-in on the Shutdown part: There seems to be something charging-up and then (partially?) switching-on?With the CC1125 disconnected, the Nucleo alone takes a steady ~3.1uA with the STM32 in STANDBY.So it looks like the issue is with the CC1125 somewhere; just posting here in case anyone has any suggestions.&n
When using the STSPIN32G4 chip, the ADC uses an external resistor for non-inverting amplification to determine the value, but in reality, the ADC-OUT output is always at the maximum of its internal LDO. Changing the external feedback resistor can't change the output value of its op-amp. What could be the reason for this? Also, the voltage difference on the non-inverting side of the three op-amps is inconsistent: two are 0.27, and one is 0.35. I’d like to ask the experts for advice.
hi team.when we use to debug are run the program i getting this issue . i update the software ,i download the package , i linked my id in the software , i update the st-link . after all update too i getting this error .
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
Dear forum,I am trying to setup a simple application to sample an ADC channel with DMA and stream it via UDP to a Windows PC, so here’s what I did:I started from the sample project “Nx_UDP_Echo_Client”, provided by ST in FW pack; I configured the ADC peripheral to sample pin PA1 as in the sample project “ADC_SingleConversion_TriggerTimer_DMA”, and this is ok; I configured the GPDMA channel 0 in circular mode to copy ADC.DR into a buffer, following this and this; I put the DMA buffer in a dedicated memory region (AHBSRAM1), as suggested here; I configured the buffer memory region as NON CACHEABLE in MPU configuration, as suggested here; Finally I configured the RISAF in order to let the GPDMA have access to the buffer, as suggested here.But still, when I try to activate the transfer with the HAL command HAL_ADC_Start_DMA, I get a “User setting error” (USEF bit in GPDMA_C0SR register) and the GPDMA channel is deactivated. Can you please help me in the debug?The project, which is attached
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 MCU works fine the first time it gets programmed. However, after one power cycle, it freezes completely after an external interrupt happens. Doesn’t even enter the error handler. I have SMPS enabled. Thanks for your help 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 Power */ SystemPower_Config(); /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_RTC_Init(); MX_UART4_Init(); /* USER CODE BEGIN 2 */ GreenLEDOn(); HAL_Delay(5000); GreenLEDOff(); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { if(!HAL_GPIO_ReadPin(V_Fu_Trig_GPIO_Port, V_Fu_T
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).
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.