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
I am using STMCube IDE and I fetched STM example project Lw_TCP_Echo_Server to be loaded into my STM Evaluation board Nucleo-H7S3L8. With some effort, I got it working. I want to use this project as a code base for my actual Ethernet project.I want to archive this original, unmodified, intact, as is project into a git repository (not on GitHub yet). I want the repository to look exactly like the current project in my workspace (all files and folders intact). I cannot seem to do this. The example is a nested project and all attempts to commit have resulted in lost files and butchering the file folder structure. I end up with two visible projects in the Project Explorer (one in my workspace and one in my git repo) and neither one builds. I have tried 'team share projects', 'project copy paste', 'create from existing IOC', and anything else ChatGPT has suggested with no success. I want to do this under STMCube IDE not on the command line. STMCube does not seem to reco
Hello, I have an STM32L4R5 MCU on a custom PCB and I have flashed it with my firmware via USB_OTG_FS. Both CubeProgrammer and the CubeIDE have worked in flashing the MCU for me, given I have an ST-LINK connected to it as well. I have USB_DM, VBUS_Sense, and USB_DP pins set up on my MCU. I am wondering how I can see some sort of output from my MCU. From my searching, I learned the DFU mode is only used for flashing and something like USB CDC is used for communication, through a serial port or UART. I am wondering some ways (preferably efficient and quick) I can go about seeing an output from my MCU that is running my firmware. If there needs to be any more clarification as to my wiring/setup, I will gladly add that. Can USB CDC be setup via firmware, or is it solely a hardware configuration? I do not have pins like UART/LPUART TX/RX connected on my MCU, however, they are able to be jumped of course. I have been using a NUCLEO development board to test my code. When connecting
Hello everyone,for a project at the university i have to programming an nextion display with a stm32f401re or a stm32g474re. (i can choose between them, i have both here). My problem is that i have configurate the display with the nextion editor. There i can change the text and it works. When i use the stm32f401re, connect the tx from the display to the rx from the processor (D0) and the rx from the display to the tx from the processor(D1) and the 5v with 5v, GND with GND, then i don`t can change the values. In my programm, i writeHAL_UART_Transmit(&huart2, (uint8_t*)"t0.txt=\"Hello\"\xFF\xFF\xFF", sizeof("t0.txt=\"Hello\"\xFF\xFF\xFF"), 1000); HAL_Delay(1000);When i use a logic analyzer on the pin tx, i see, that i get datas. Furthemore i looked at PuTTy. There i get the correct messages.My baudrate is 9600 bps. in addition my clock settings are:|Clock Source|HSE (8 MHz extern)||PLL Source|HSE||PLL_M|8||PLL_N|336||PLL_P|4||PLL_Q|7||System Clock (SYSCLK)|84 MHz||AHB Prescaler
Hello guys,Can anyone help me on how i need to set up a dma chain reaction so i can read from a timer ccr1, ccr2 registers and write their values to hrtim period and compare1 registers? The only thing I have found until now is how to set up the dma for the timers while being on PWM Input mode, burst read the cc1, cc2 registers and store their values to memory. I have read that I need to use then a DMAMUX request to generate an DMA request for the HRTIM to read the memory and then apply the changes to the peripheral, but I still don't understand how I should i configure the board. I'm using an STM32G474RET.Thanks for your time in advance.
Hi,I'm working on enabling USB 3.0 support for the STM32MP257 in U-Boot and need a suitable driver. I’ve attempted to modify the U-Boot kernel driver to support USB 3.0, but I’m running into issues with the PLL configuration.The problem seems to stem from setting up the correct clocking for the USB3 PHY. Despite adjusting the PLL parameters, I’m not getting stable operation, and the PHY doesn't initialize correctly. If you have any insights on configuring the PLLs for USB3 in U-Boot on STM32MP257, or if there's an existing implementation I could reference, I’d really appreciate your guidance.Thanks in advance!Here is my function.static int stm32_combophy_pll_init(struct stm32_combophy *combophy) { int ret = 0; u32 refclksel = 0, pllmult = 0, propcntrl = 0, sr = 0; unsigned long clk_rate = 0; int retry; const int max_retries = 5; /* get reference clock rate */ if (combophy->pad_clk) { clk_rate = clk_get_rate(combophy->pad_clk); printf("PADCLK rate: %lu\n", clk_rate); } else { clk
Hi, I was trying to upgrade my ble wireless stack from CubeProgrammer but everything give me this error. I tried to install stm32wb5x_FUS_fw or stm32wb5x_FUS_fw_for_fus_0_5_3 to their correct addresses from release notes but nothing works. I am able to flash code from cube ide but these wont work. I can start FUS or take BOOT0 to 1 but these did not work too. Only thing I have in my mind is maybe my cube programmer. Due to language settings my cube programmer installation step 8 is stuck(I read this error from the forum too) but I can access to cube programmer from program files and it can connect/read/flash so I dont think this is the problem too. On the board RX/TX pins between st link and mcu are not connected but it should not be the problem as well because I am using st link and can flash anything from cube ide
I'm attempting to get started with the Morse Micro MM8018-EKH05 (STM32U585VIT6 controlled) and pair it with their HaloLink1 router. I am following their MM8108-EKH05 used guide user guide section "5.2 Build and Run Example Applications." I have loaded the downloaded CMSIS package with STMCubeIDE, imported the project, loaded the MM8108 software packs, generated code in STMCubeIDE, and built but when I get to the green "Run" phase on pg. 29, I get the following error (see attached screenshots): Cannot run program "C:\Users\dmitryp\STM32Cube\Repository\Packs\MorseMicro\MM_IoT\1.7.4\HaLow_example_spi\Debug\HaLow_example_spi.elf": Launching failedCannot run program "C:\Users\dmitryp\STM32Cube\Repository\Packs\MorseMicro\MM_IoT\1.7.4\HaLow_example_spi\Debug\HaLow_example_spi.elf": Launching failedCannot run program "C:\Users\dmitryp\STM32Cube\Repository\Packs\MorseMicro\MM_IoT\1.7.4\HaLow_example_spi\Debug\HaLow_example_spi.elf": Launching failed What shou
Hello ST Community,I am developing a product for residential pump control based on AC Induction Motor (ACIM). I am using the STM32 Motor Control SDK and have been studying the example on the wiki page: STM32MotorControl: SDK_AC_induction_motor.This software example is a good starting point. However, for hardware, it references the use of three separate evaluation boards (e.g., STM32 Nucleo, X-NUCLEO-IHM, and a power board). For a real product, this approach is too large and expensive. I am looking for a dedicated, consolidated hardware reference design for this application. Specifically, I need a complete schematic that integrates the STM32 MCU, the 3-phase inverter (with gate driver or STSPIN), current sensing, and power supply onto a single board.Does ST provide such a dedicated, consolidated reference design for a sensorless FOC ACIM driver? If so, what is the design name or document number?Are there any existing reference designs (even for PMSM) that I can use as a foundationa
Hello, I'm trying to download the program to the STM32H743VGT6 via the serial port. I keep getting the following error when using STM32CubeProgrammer. Do you have any solutions?
1. In the B-G431B-ESC1 development board, there is a component labeled U5 (ST890DTR) in the circuit. Could you please explain the exact purpose or function of this component in the board’s design?2. If the U5 (ST890DTR) component is removed from the B-G431B-ESC1 development board, what types of issues or malfunctions could occur? Would the impact be considered minor, major, or critical to the board’s operation?
Hi friends. Help me figure this out.Am I missing something, or is my board faulty? MCSDK 6.4.1Motor 12n14p In 6-step mode, the motor operates correctly, and the phase signal waveform also appears normal. But in FOC mode, something strange happens; the motor is practically impossible to spin. In the profiler, it usually starts on the first try, and the program allows you to save the motor parameters, but the motor spins noisily, and profiling a second time in the same session is impossible; the motor won't start. A default project created with the motor parameters from the profiler also fails to reliably start the motor in the Pilot program.Shouldn't the signal in FOC mode look like a sine wave?
Hello, I would like to know if there are any methods to load PNGs/JPGs from a USB for the stm32 (I am on stm32F7). I currently imported lodepng but, it seems the malloc used by it is way too large for the device. The png I am loading is relatively small, 185 x 43.unsigned err = lodepng_decode24(&img, &w, &h, file, fileSize); if(err) { return MEMORY_ERROR; }
Hi Everyone,I am facing an issue where my Blue Pill development board (STM32F103C8T6) is not being detected by ST-LINK V2 when using either STM32CubeIDE or STM32CubeProgrammer.Both tools consistently show the “No STM32 target found” error message. I have two Blue Pill boards and two ST-LINK V2 programmers, and I am facing the same issue on both setups, which makes me believe it’s not a wiring or hardware fault on a single unit.My Hardware Setup:Boards tested: 2 × Blue Pill (STM32F103C8T6)Programmers tested: 2 × ST-LINK V2 (Firmware version: V2J34S7)Target voltage: ~3.1V (as detected by STM32CubeProgrammer)Connections:3.3V → VCCGND → GNDSWDIO → SWDIOSWCLK → SWCLKSteps Tried:Verified all SWD wiring and signal continuity using a multimeter.Tested both “Hardware reset” and “Software reset” modes in STM32CubeProgrammer.Updated ST-LINK firmware to the latest version (V2J34S7).Switched between multiple USB ports and cables.Verified target power (3.3V stable).Ensured BOOT0 = 0 (Normal boo
I'm using Motor Control Workbench 5.4.4.20160 to build up code for motor control. There is a issue that In some specific situations, the dead zone will disappear, which can be seen in figures bellow. I give a constant d-axis current and force positioning the hEIAngle. If the hEIAngle is 0, the dead zone looks normal. But if the hEIAngle is set to 20479, then the dead zone disappear. Moreover, I run a continuous angle ramp and recorded the measurement results of the oscilloscope in the attached video. I have checked the register BDTR, it seems every bit is normal. Could you help me out for this issue?Thank you for your kindly guidance.
(Please ignore the green area, which is Layer 1 of the LTDC.)I am using an STM32N6570 development board with an external PSRAM (connected via XSPI1) to store camera frame buffers. I have implemented a double-buffering scheme where the DCMIPP writes camera frames into the external PSRAM buffers and the LTDC reads from them for display.However, even with double buffering, I still observe screen tearing. I have tried:Switching the LTDC display buffer only during VSync (vertical blanking)Cleaning the CPU D-Cache before updating the LTDC addressDespite these measures, tearing persists. I suspect the cause is related to the limited bandwidth and high latency of the external PSRAM, combined with the LTDC FIFO prefetching. Essentially, the LTDC sometimes reads the external PSRAM while the DMA is still writing the new frame, causing partially updated frames to be displayed.I want to find a reliable solution to eliminate screen tearing while still using the external PSRAM for camera frames.This
Hi,I am new to STM32 and using DSI for the first time.I generated the simplest code for bringing up a custom DSI display board using CubeMX and TouchGFX. The code compiles successfully, but the CubeMX-generated function HAL_DSI_Init() within MX_DSIHOST_DSI_Init() (code snippet below) returns HAL_TIMEOUT at line 26.By default, HAL_TIMEOUT is set to 100ms, which is quite a long time... /* Get tick */ tickstart = HAL_GetTick(); if ((hdsi->Instance->PCONFR & DSI_PCONFR_NL) == DSI_ONE_DATA_LANE) { while ((hdsi->Instance->PSR & (DSI_PSR_PSS0 | DSI_PSR_PSSC)) != (DSI_PSR_PSS0 | DSI_PSR_PSSC)) { if ((HAL_GetTick() - tickstart) > DSI_TIMEOUT_VALUE) { /* Process Unlocked */ __HAL_UNLOCK(hdsi); return HAL_TIMEOUT; } } } else { while ((hdsi->Instance->PSR & (DSI_PSR_PSS0 | DSI_PSR_PSS1 | DSI_PSR_PSSC)) != (DSI_PSR_PSS0 | \ DSI_PSR_PSS1 | DSI_PSR_PSSC)) { if ((HAL_GetTick() - tickstart) > DSI_TIMEOUT_VALUE) { /*
Hello, I am a Master’s student doing an internship on physical-layer modelling of G3-PLC using the ST8500 (ST G3-PLC hybrid solution, AN5603). I have two technical questions that I could not resolve from the public documentation: PGA / AGC on ST8500The datasheet states that the PGA gain ranges from –18 dB to +54 dB with a 3 dB step, but I cannot find the exact mapping between the internal PGA code and the gain in dB.For the ST7580, there is a “PGA gain table” (code 0…8 → gain in dB).Could you provide the equivalent information for the ST8500 (table code → gain or a formula and code range) so that I can interpret the AGC value correctly?AGC attribute in CENELEC profilesIn AN5603, the attributes PHY_LASTRECEIVEDPACKETAGC / PHY_PHYCURRENTAGC are marked as “only FCC”.Is there an equivalent AGC attribute for CENELEC profiles, or another recommended quantity (e.g. based on SNR/LQI) to characterise the receive level/quality in CENELEC? These details are important for
Hey!I'm trying to create a driver for the STM32U545 for TinyUSB . Currently, theres a driver existing for device mode, and theres driver for the boards using synopsys and not usb_fsdev. I have followed the reference manual, and gotten so far:hcd_stm32_fsdev.c (the driver itself) stm32_helpers.h (helper function for different accesses) It detects the device, and starts sending some data, but then it just stops. Here's full stack trace:[13:54:09.609] Welcome to our controller![13:54:13.617] [0:] USBH Device Attach[13:54:13.771] Device unplugged while debouncing[13:54:13.930] [0:] USBH Device Attach[13:54:14.133] Full Speed[13:54:14.146] [0:0] Open EP0 with Size = 8[13:54:14.154] Get 8 byte of Device Descriptor[13:54:14.162] [0:0] Get Descriptor: 80 06 00 01 00 00 08 00[13:54:14.176] [:0] on EP 00 with 1 bytes: OK[13:54:14.185] [:0] on EP 80 with 1 bytes: OK[13:54:14.193] [0:0] Control data:[13:54:14.198] 0000: 00 |.|[13:54:14.215] [:0] on EP 00 with 1 bytes: OK[
I am currently working on a project that uses the STM32U575CGU3 microcontroller. The goal of the project is to display pressure and temperature values over CAN J1939 and CANopen communication protocols in a digital output format. For sensor data acquisition, I am using an external two-channel ADC to measure pressure and temperature values. Regarding the system clock, I have tested the application using both the internal clock source and an external crystal oscillator. The system performs well in both configurations. However, I would like to request your expert guidance on the recommended clock source for this application. Specifically: Is it advisable to use the external crystal for better timing accuracy and long-term stability? Or is the internal clock sufficiently reliable for CAN J1939 and CANopen communication in a production environment?
Hello,I want to interface two SAI of STM32L4S7VIT6 with two SGTL5000, which are working as transmitter and receiver at any time as used in telephone. Also interface one Si32287 through PCM. In datasheet SAI1_D1,D2, D3 are given but in reference manual it is not given. Also can we connect for one SGTL5000 with SAI1_FS_A, SAI1_MCLK_A,SAI1_SCK_A,SAI1_SD_A and SAI1_SD_B of same SAI1. And for other SGTL5000, can we connect SAI1_FS_B, SAI1_MCLK_B,SAI1_SCK_B of same SAI1 and for data SDI1_D1 and SDI1_D2. What are the functions of the lines SAI1_D1 and SAI1_D2?
We are using MCSDK 6.4.0 in Position Mode with a 3-Phase Motor with quadrature Encoder (only A+B phases, no Z Pin).How can the motor phases be swapped at runtime in Software (U,V,W -> V,U,W), e.g. when the motor is connector is wired in the opposite direction (but the motor encoder is wired correctly)?I know that i can set up the PWM Outputs in MC Workbench (as well as swap encoder pins), but i need a solution that can configure this at runtime without rebuilding the Project. I could not find a function for that (just feeding an inverted Position to MCI_ExecPositionCommand() does not take into account that the motor encoder is wired for an opposite direction as the motor phases).If this is currently not possible, can you add this feature in a future release?
I am connecting my STM32MP257F-EV1 board to rpi Hailo 8 board via Mini Pcie to M.2 key M adapter. The board is not getting detected even though clock and reset signals are coming properly.I am using the stm32mp257f-ev1.dts (default device tree) and also sharing my device tree pci node below&pcie_rc {pinctrl-names = "default", "sleep";pinctrl-0 = <&pcie_init_pins_a>;pinctrl-1 = <&pcie_sleep_pins_a>;reset-gpios = <&gpioj 8 GPIO_ACTIVE_LOW>;wakeup-source;wake-gpios = <&gpioh 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;status = "okay";};I am getting this error as given below:-root@stm32mp2:~# lspci00:00.0 PCI bridge: Synopsys, Inc. Device 0550 (rev 01)root@stm32mp2:~# dmesg | grep pci[ 1.561630] stm32-pcie 48400000.pcie: host bridge /soc@0/rifsc@42080000/pcie@48400000 ranges:[ 1.570082] stm32-pcie 48400000.pcie: IO 0x0010010000..0x001001ffff -> 0x0010010000[ 1.586511] stm32-pcie 48400000.pcie: MEM 0x0010020000..0x0017ffffff -> 0x0010020000[ 1.60301
Affected doc / sectionRM0492 (STM32H503) → General-purpose timers → Master mode selection (MMS) (TIMx_CR2.MMS = 0000 “Reset”)Current wording (verbatim)“MMS = 0000 – Reset: the UG bit from the TIMx_EGR register is used as trigger output (tim_trgo). If the reset is generated by the trigger input (slave mode controller configured in reset mode) then the signal on tim_trgo is delayed compared to the actual reset.”Why this is confusing / misleadingThe sentence suggests TRGO is tied to the EGR.UG bit. In reality, EGR.UG is software-only; hardware reset does not set EGR.UG. TRGO is driven by the update-generation path (UEV/UG-equivalent internal signal), not by the literal EGR bit.It does not state that with URS=1 (CR1.UPDATE REQUEST SOURCE), a reset from TRGI/ETR does not generate a UEV. Therefore, with MMS=Reset, TRGO is not emitted at the moment of reset; it only appears on a later UEV (e.g., overflow) — or never if the counter is reset before reaching ARR.The phrase “delayed compared to t
why need to monitor txe flag and btf flag to transfer data after each byte.txe says data register is empty,btf and txe says need monitor after last byte. according to reference manual.but my question is how should i know i get ack after sending 1 byte .in this case which should i check txe,btf.if i check txe if txe==1 i send 2nd byte then how should i know i get ack for byte1.if txe indicate about ack flag received/not ,then why should compulsory use btf flag at end of last byte to check wait untill btf==1 before stop condition.
I generated an STM32 project using STM32CubeMX for Keil (MDK-ARM).In Keil, functions like HAL_GPIO_TogglePin() don’t show up in code completion (IntelliSense).I found that in Project → Options for Target → C/C++ → Include Paths, the paths use / (for example ../Drivers/STM32F1xx_HAL_Driver/Inc) instead of \.If I manually change / to \, code completion works — but STM32CubeMX changes them back after every code regeneration.How can I permanently fix or configure STM32CubeMX to generate Windows-style include paths (\) for Keil projects?
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.