Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
When using a USB CDC device, especially at high data rates, there is a possibility for packet loss. This post illustrates the issue with what I consider convincing evidence. This isn't a STM32 bug, but it's something you may encounter when interfacing with an STM32 device so I felt it is relevant here. As a bonus, this also shows the achievable speeds with USB FS CDC to be ~9.2 Mbps under ideal circumstances (fast, good code on both sides of the connection). Here's the setup to illustrate the issue: On the STM32, I'm initializing a USB FS CDC device (sometimes also called a VCP) and sending out packets as fast as possible. The bus speed of USB FS is 12 MHz. Buffers of 16 kB are sent which contain increasing uint64_t values (e.g. 0x0000000000000000 0x0000000000000001, etc...) When one buffer finishes, the next one is sent out. (I used STM32CubeMX to do the initialization code and it worked perfectly.) On the PC side, I'm opening the serial port in Python and reading data
Good evening, now that I can ping my F767ZI board with my laptop, I'm trying to use some tutorials on the web to be able to send data (numbers or message strings) to a server (Hercules software set as a TCP server), but I'm having some difficulties (I don't know whether to use semaphores or timers as interrupts, and for semaphores, it's not entirely clear to me how to use them). I'm wondering if there's a short guide for my board that can give me a starting point. I'm using CUBE IDE V1.18.1. I tried starting from the project that allows me to ping my board, but as soon as I try to make some changes, the ping no longer works, and the timer set as an event interrupt doesn't work anymore, so I would need a tutorial as an example (the tutorial I followed successfully had a UDP library, but now I'll have to use the TCP libraries I already have, but I'm having some difficulties). Here below the code that I used for start point and that is give to me the way to ping my board succesflul
Dear ST Community Team,I am working on a project using the STM32N657X0H3Q1 MCU with TouchGFX for GUI development.After configuring TouchGFX and generating the code, I am encountering RAM and ROM overflow errors during the build/link stage.Hardware configuration:MCU: STM32N657X0H3Q1External RAM: S80KS5123GABHB020External Flash: S28HS512TGABHM0100Both the external RAM and external Flash are connected externally on the board and are intended to be used for the TouchGFX application.Issue description:After TouchGFX configuration and code generation, the linker reports errors such as:Internal RAM overflow (data/bss/heap/stack)Internal Flash (ROM) overflow due to TouchGFX assetsIt appears that TouchGFX frame buffers, heap, or graphic assets are still being placed in internal RAM/Flash, instead of using the available external RAM and external Flash.Questions / support needed:How should external RAM (S80KS5123GABHB020) be configured so that:TouchGFX frame buffersHeap and large buffer are alloca
Hi, In the STM32WL5MOC datasheet I can find the 32MHz TXCO HSE accurancy, but not the LSE 32kHz RTC clock accuracy. Could someone look into this and provide the min/max values similar to TXCO characteristics in Table 10? Best Regards,Dave
Hi everyone,I am currently trying to measure the CPU temperature using the internal temperature sensor of an STM32F733.I am testing the device inside a climate chamber (oven) to verify the readings. I am fully aware that the datasheet states the sensor is more suitable for detecting temperature variations rather than absolute measurements. However, the values I am getting seem to have a significantly larger offset/gain error than expected.The Setup:MCU: STM32F733Method: To rule out self-heating of the die, the device is kept powered OFF inside the oven until the target ambient temperature is reached and stabilized. I then power it on and immediately take the ADC measurement.Vref+: Connected to external reference voltage (2.048V).The Observations:Oven at 60°C -> MCU calculates 68°COven at 80°C -> MCU calculates >90°CMy Question:Is an error of this magnitude (>10°C at higher temperatures) considered "normal" for the internal sensor of the F7 series, even when using the factor
Hello, i am using a stm32f103 mcu to provide rtc functionality. I am using a external crystal of 32768 hz for the rtc block.The crystal is rated at 6pf load. +/- 20ppm PN: QT1C-32.768KDZB-T Apart from this i have also implemented a external gps module to provide a "reference time" via uart.Upon power on, the mcu configure the rtc counter with values for hours,minutes,seconds taken from the the gps, then i just display them on a lcd.My problem is the time drift on the rtc when comparing the time from the gpsFor example, after 10 hours of functionality, my rtc clock drifts with 7-8 seconds when compared with the gps time. I have tried to measure the rtc clock on the tamper pin, and here things start to show upThe measured frequency on the tamper pin ( PC13) is 512.295hz.this is giving a huge ppm diference of about 576 ppm. I have tried with several i
Good morning, I need to send data using UART to a board with a specific delay between single elements, which I obtain as I'm using LABVIEW, but on the board said specific delay is not obtained, and worst of all the delay between datas is not constant. I figured there would have been some additional delay, but is there a way to decrease it or at least make it constant? or is it intrinsic to the UART technology? Thx all
Good Morning, I'm struggling with FDCAN Bus Recovery. The system we have to use consists of an STM32H753-based board and a 3rd party ECU, which is internally terminated via software. Our custom board is also terminated, resulting in the correct 60 Ohm between CAN Hi & CAN Lo. In the event I add an additional termination resistor to the Bus, the power-up sequence doesn't matter, however the bus is the over-terminated, which is obviously not correct. I can, however, see the custom board initially blurting out a CAN frame as fast as it can before the other ECU has finished powering up, and then normal CAN comms is seen on PCAN (the PCAN has been configured to not send any Acks). However, if I leave the bus as it is, it looks like the bus from the perspective of the custom board just turns off. I can see the 3rd party ECU splurging out one of its' messages as fast as it can, however our board should be seeing this message and transmitting Acks etc. I have implemented the Bus-Off
Hi there,I have been struggling with the PSRAM. I bought the STM32H7S78 board to pick up the know-how to understand how I should configure the PSRAM at XSPI1 via the EXT MEM manager at my own board. My clock speed is 200MHZ XSPI. PSRAM MPN: APS6408L-OBMX-BAMCU type is slightly different (STM32H7R7L8H6)For sure, I connected the programmer to configure the sbs since the VIO is 1.8V. What I missed from the HW was that I forgot to add the pull-up resistor at the CE pin. Note: I desoldered from the original ST board to check the behaviour and did not influence its behaviour. The reset is connected to the NRST by a diode. Note: Checked the connections, footprints. GND is on the mid1 layer and all of the connections are on the top layer. The length is less than 14mm and the distance between the track are usually 0.2~0.25mm.So all in all, I excluded the HW errors. Note: I bought the same PSRAM as on the ST board and I can use those configs after all. However, before I desolder t
Subject: Critical issue: Board damage during EEPROM emulation write with MCSDK (STEVAL-IHM045V1 + STM32F303)In Hello Experts,I am working with STEVAL-IHM045V1 power board and STM32F303 evaluation board, running MCSDK (FOC, PMSM, dual motor).Mcsdk 6.41Current control approachI am using ProgramTorqueRamp() instead of ProgramSpeedRamp() because speed mode causes audible noise and instability at low speeds.Motors run normally under wall control.Wall control uses 1-wire USART-based communication customized.User sets a PWM-like value from wall control, which I map to a torque reference. By calling Mcacknowledge(); ProgramTorqueRamp(torque_ref, 4000); startmotor(); in the while loopTarget - The user-selected pwm value must be stored using EEPROM emulation (Flash write). Example user can set any pwm, in Speed 1 pwm 25 , speed 2 pwm 45, speed 3, pwm 65 , speed 4 pwm 75, speed 5 pwm 100Critical problemWhen I attempt
I am using B-G473E-ZEST1S + STEVAL-LVLP01 + R57BLB50L2 in HSO configuration. Whenever I start the motor I can observe LED1 on STEVAL-LVLP01 is turning ON for few ms. Though motor is starting and running successfully. But I need to understand why I am getting Driver Fault from STDRIVE101 IC (TIM8_BRK2) at startup. Can I eliminate this with correct configuration? Attached MotorControl Workbench project and MotorPilot snapshot for reference.
I have a new board design that interfaces an STM32L4A6 with a uSD card using 1.8V I/O. The SD Card is powered by 3.3V and supports the LVS mode of SD. The STM32L4 does not seem take account the SD specification 6.0. There is no auto detection mecanism of the signalling voltage level in this MCU. This MCU can not start in UHS-I 1.8V mode.Do you know a MCU which can start the LVS identification sequence ?
Hi all , System and Motor Parameters:Bus Voltage: 24VRated Current: 40APWM Frequency: 40kHzPhase Resistance (Rs): 0.1ΩPhase Inductance (Ls): 0.03mHBEMF Constant (Ke): 1.1 Vrms/kRPMMax Application Speed: 12000 RPMEstimator & PLL Parameters:Speed Estimator:G1 (C1): 552G2 (C2): 592PLL Kp: 500PLL Ki: 100I am currently using sensorless FOC control. When the motor reaches around 6000 RPM, I observe that the motor noise becomes noticeably sharp, and current feedback (monitored via oscilloscope) shows increasing oscillation. Eventually, it triggers an over-voltage (OV) protection error.Based on my understanding, I suspect the angle estimation error increases with speed, causing misalignment between the control and actual rotor position. This might lead to excessive back-EMF, resulting in bus voltage overshoot and an OV fault.I’ve tried adjusting G1/G2 and PLL Kp/Ki via Motor Pilot, but the issue persists.Additional Question:When I reduce Max Application Speed from 1200
I have updated the STM32L4 HAL drivers to V1.13.6 / 14-November-2025 (1.18.2), which has broken my implementation of HAL_UARTEx_ReceiveToIdle_DMA.Is this a fault in the new HAL drivers or does user code need to be updated inside the HAL_UARTEx_RxEventCallback?
Is there a comprehensive single documentation source of the Flash layout for say, an STM32H563?The documentation I find is very opaque. Questions I have at present (From a non secure perspective):1. Where is OBK located? (0x0BF0000 to 0x0BF9FFFF ???)2. Where is system located?3. Is RSSLIB actually using OBK memory? Or is this located somewhere else?4. Is there a way to self program the debug password for PRODUCT_STATE > OPEN?5. If #5 true, are there some real docs on this? All I find so far is tutorials and code for the 573 in a secure perspective.
When I call function HAL_FLASH_Program twice with the same Flash address, the second call is ignored. See test code below.int8_t buffer1[16] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};int8_t buffer2[16] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};EraseIntFlash( 0x08200000, 0x08300000 );HAL_FLASH_Program(FLASH_TYPEPROGRAM_QUADWORD, 0X0820000, buffer1);HAL_FLASH_Program(FLASH_TYPEPROGRAM_QUADWORD, 0X0820000, buffer2); In Memory Browser, I expect:0x08200000 03020100 07060504 0B0A0908 0F0E0D0CBut I get:0x08200000 03020100 07060504 FFFFFFFF FFFFFFFFWhat is going on? I really need this to work. Can anyone provide insight or solution or workaround?Jim Eno
Good morning , I'm writing this post to request help , the main problem is two things the first and the main thing being the 1000W 3500 RPM 3 pole pair 48V motor not giving it rated torque of 2.5 Nm and only gives 0.8 N.m , this was confirmed as the motor works fine with a premade controller of the motor , further more the motor gets stuck and the torque reference goes to 19.99A however this does not happen with the premade controller , the motor works fine with the stm controller when no load is applied, the motor has been already profiled using the smt32 motor profiler, and motor barely gave any errors on the stm32 software however almost minimal torque, also as we are using a data acquistion system that is extremly accurate it measure 2A DC from the battery of 48V however the stm32 motor control software's torque reference showed 8.6 A , and the hall sensors are slight off , so at 370 RPM in the stm software its actually 500 and at 740 is 1000 and at 1110 its 1500 and soo on.the rea
I've been watching the MOOC - Security series and had some questions. There is a link in the info block to a forum for any questions, but the link no longer works. https://www.youtube.com/watch?v=g7ykhnmh7sAIs this the right place?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.
Hello,I want to add a software update feature to my device, but I am unsure about the correct way to verify a newly installed firmware image. My goal is to make sure that the entire firmware has been written correctly and is not corrupted before the bootloader starts using it.One idea I have is to calculate a CRC of the whole application at build time and store this CRC at the end of the application image in flash. Then, during boot, the bootloader would calculate the CRC of the application in flash and compare it with the stored value to decide whether the firmware is valid. However, I am not sure if modifying or reserving a part of the application flash for this purpose is a good or recommended approach.Are there more common or reliable methods to verify a newly installed firmware before activating it? How is this typically handled in bootloader-based firmware update systems?
Hi,I am getting a warning "The core is locked up" and a few more (please refer to the attached image).I have also tried flashing with the hex file, but some flashing issue is observed.
i am try to interface tft lcd via LTDC using FMC, i checked that ram is working fine and test also passed , but i try to resolve lcd issue but it not resoled yes. Can someone help how to do that. i am uploading the complete project which is created. Please help how can i interface with lcd.
Hello!I am interfacing an ADS131M02 ADC to the STM32C0116-DK board using SPI for a project I am developing on live streamings. I am able to read SPI Data using the HAL polling functions (HAL_SPI_TransmitReceive), however that created unwanted delay between bytes and I tried swithing to DMA to improve performance. Configuration:All clock to max (48MHz)SPI: Full-Duplex Master, 8bits, Mode 01, DMA Tx + DMA RxPrescaler 2: BaudRate 24 MBits/s -> FAILPrescaler 4-Max: SUCCESSThis is the result with prescaler set to 4 (12 Mbits/s). (Pink: MISO, Blue: SCK), the data is correct.With the Prescaler set to 2 (24MBits/s) (Pink: MISO, Blue: SCK). The clock does not even try (the pulse is 3us)The Pseudocode I am using:/** Simplified code **/ uint8_t newData = 0; // This is never called if the SPI prescaler is set to:SPI_BAUDRATEPRESCALER_2 // With SPI_BAUDRATEPRESCALER_4 works. void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef* hspi) { newData = 1; } void main(void) { // All CubeMX ini
I try to use TouchGFX with FreeRTOS, and one of the many problems I found, is thath the screen is nod refreshed because Thread (TouchGFX_Task) is waiting inside OSWrappers::waitForVSync, but VSync is disabled in configuration. I'm missing something? I followed all the steps in the tutorial (https://support.touchgfx.com/docs/development/touchgfx-hal-development/scenarios/scenarios-configure-rtos) but seams doesn't working. I'm using an SPI display, the project is for M7 core on STM32H755
Hello, I'm looking for an example with TouchGFX and AZRTOS / Azure RTOS (and USB). I'm using a customer board with STM32H7S, LCD and USB. For USB applications, AZRTOS / Azure RTOS seems more suitable to me.Does anyone know of an example or instructions? Dear ST employees, It would be great if TouchFX could optionally generate code without RTOS.
I am working on the NUCLEO-H755ZI-Q, which contains a dual-core STM32H755 (Cortex-M7 + Cortex-M4). I configure the system clocks in CubeMX as follows: SPI1/2/3 Clock MUX: 400 MHz System Clock: Configured for high-speed operation CM7 core frequency: Correctly matches the configured value (e.g., 200 MHz / 400 MHz depending on settings) However, when I debug or read the CM4 core clock, I always see: CM4 clock = 64 MHz It does NOT increase even when I configure higher values in CubeMX. Regards, Prathiksha
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.