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
Can the clkout clock on the PHY chip be disabled, and how is it configured?
The markings areGS6Thanks!
Hi everyone, I’m using the X-NUCLEO-IHM08M1 with the g474re core and a BL23E33-01D-04RO motor (which reaches 4000 rpm).I want to use FOC and the motor’s internal encoder, so I’ve made the hardware modifications described in the IHM08M1 manual and those also required by MC Workbench before code generation. I have therefore set the main sensor to the encoder and the auxiliary sensor to the sensorless PLL+observer.In STM32CubeIDE, the motor runs smoothly and the speed is correct, but at low speeds (below 60 rpm) it freezes and sometimes lags... I have no reported firmware errors. I don't have any load connected to the motor (yet).What could be causing this? PID? I can provide screenshots of the signals you want; I’m using CubeMonitor. PWM: 16kHzSW dead time 850nsRegulator execution time: 63us (1 PWM) - three shuntGain: 5.18Bus voltage divider: 19.17Quadrature encoder:average FIFO depth = 16 Input capture filter duration = 0.75 usPID: autocalculate Kp & Ki for both current and speed re
On the STM32MP135F-DK, is the 4.3" LCD module physically removable? Or is CN16 accessible without removing the LCD?
The call toHAL_NVIC_EnableIRQ(EXTI3_IRQn); is not generated with the checkbox enabled in the GPIO/NVIC panel in gpio.cHowever:the call for HAL_NVIC_SetPriority() is generated correctly.MCU: STM32L496ZGTxSTM32CubeIDE: Version: 1.17.0pads: PD3, PD4 set up as EXTI, NVIC enabled for both.generated code: (section of gpio.c): /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0); HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI4_IRQn);HAL_NVIC_EnableIRQ(EXTI3_IRQn);is missing.
Hi everyone,I'm using an STM32H743 in USB device mode as a virtual USB drive (UF2 protocol) for firmware upgrade. Main program runs in Bank 1 Upgrade firmware is written to Bank 2 During the file copy process (from PC to the virtual UF2 disk), the USB connection drops unexpectedly (host resets the bus, captured by USB analyzer).However, if I connect the device through a USB Hub, the success rate improves dramatically.I understand that in dual-bank Flash architecture, erasing or programming Bank 2 should not interfere with: USB peripheral operation (running from Bank 1) AHB bus access Interrupt latency (if properly configured) But my test shows the opposite: Direct connection → frequent host reset Via Hub → mostly works fine Questions: What could cause the host to reset the bus when only the inactive Bank is being erased/programmed? Why does adding a Hub improve reliability — is it signal integrity, power filtering, or host timing tolerance? Could Flash write/erase temporari
Heyho,H723..H735, using DTCM a lot, also ITCM for some functions.Recently I found some strange behaviour:the global pointer sFlashIntCtl.pu8WrBuf to the buffer u8FlashIntPageBuf (global) is set in function A setting the pointer is working, printf via UART later on function A calls function B pointer sFlashIntCtl.pu8WrBuf is not changed anywhere, no IRQ or anywhere first thing function B is doing: check if pointer sFlashIntCtl.pu8WrBuf != NULL check fails, because sFlashIntCtl.pu8WrBuf = 0 (checked via UART, see below) Here’s the UART output:function A UART output:*** start *** wr SPI flash to APP flash&u8FlashIntPageBuf[0] 20000800sFlashIntCtl.pu8WrBuf 20000800 <- this OKAYsOspiFlashCtl.pu8RdBuf 20000800sFlashIntCtl.u32WrAddr 08040000sFlashIntCtl.u32ChkAddr 08040000sOspiFlashCtl.u32RdAddr 00000100sOspiFlashCtl.u32RdLen 32...function A calls function Bfunction B UART output:#E FlashIntWrPage(): pu8WrBuf = NULLsFlashIntCtl.pu8WrBuf 00000000 <- WTF ?&u8FlashI
Hello,We are investigating a field failure of a BMS board based on the L9963E cell monitoring IC.The system uses a 14-cell stack. Passive balancing is implemented with external balancing resistors and MOSFETs. The balancing resistors are located on a separate resistor board. The balancing resistor value is 10 Ohm / 3 W. The external balancing MOSFETs are BSS308PE P-channel MOSFETs (and PMV55ENEAR N-channel).After the failure, we found damage mainly in the upper cell channels, especially around the C14 / C13 / S14 area. Several 100 Ohm series resistors in the cell input/filter network were damaged, and one of the balancing MOSFETs (VT3) was shorted.We also found a mechanical/electrical issue in the battery harness: the C13 sense wire connection is intermittent. With the harness connected, the C13 contact sometimes exists and sometimes disappears. The failure reportedly occurred when the vehicle hit a bump, so vibration-related contact loss is possible.Our hypothesis is the following:Bal
Hi everyone,I am working on an STM32H745 dual-core device.My current setup is:CM7 starts first after reset (default hardware behavior). CM7 performs minimal initialization and releases CM4. The bootloader runs on CM4. CM4 bootloader is located at 0x08100000. CM4 application is located at 0x08120000.The CM4 bootloader validates the application image and then jumps to the CM4 application using the standard vector table jump sequence.My goal is to support firmware updates of the CM4 application while the bootloader itself is running on CM4.I would like to understand the recommended architecture and any limitations for this scenario:What is the recommended way to organize flash banks when the CM4 bootloader needs to update the CM4 application? Is it safe for a CM4 bootloader executing from Bank 2 to erase/program another region in the same bank where the CM4 application resides? Should the bootloader be moved to a different flash bank or SRAM during the update process? Are there any STM32H
Hi, I have a custom board with a STM32WB55RG and I’m trying to upgrade the Wireless stack (and the FUS firmware). When I perform a Read FUS Infos in STM32CubeProgrammer, it returns v0.0.0 value for the FUS Version (I know that it should be v1.2.0 as it used to be v1.2.0). If I read the memory at address 0x20030000 I have the following value: where DeviceInfoTable seems valid, the Wireless stack version is1.15.0 build 3 and FUS version is 1.2.0 SFSA value is 0xce (address: 0x080ce000) Any ideas why I see this value (v0.0.0) when I read the FUS infos? Moreover, when I try to update the wireless stack (or the FUS firmware), everything looks to go well but when I read back the FUS infos they are still the old values.
Hello,we manufacture products with STM32F7 MCUs. For firmware updates our customers use STM32CubeProgrammer via USB DFU mode. This is a robust and simple method. The only disadvantage of STM32CubeProgrammer is its complex functionality. Most of its features are useful for developers only. Is there a simplified GUI version without memory dump, option bytes menu etc., just for uploading a hex file? RegardsJan
Hi,Any reason why the GBW of the OPAMP is having such a wide tolerance? Is it purely because the values are best-worst case design calculations?In comparison, the Gx and Fx variants has better limits.
I am reporting a specific behavior in GDB where the standard hook-stop is completely bypassed if a next (Step Over (F10)) or step (Step Into (F11)) command is interrupted by a software breakpoint instruction (BKPT) embedded within a macro.Environment:Target: STM32L475VGT (ST-Link)GDB Version: GNU gdb (GNU Tools for STM32 14.3.rel1.20251027-0700) 15.2.90.20241229-gitIDE: STM32CubeIDE for VSCode v3.9.0Steps to Reproduce:1. Define a macro in C that includes a software breakpoint instruction:#include "cmsis_gcc.h" #define DEBUGGER_ATTACHED() ((CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk) != 0) #define BREAKPOINT(arg) \ do { \ if (DEBUGGER_ATTACHED()) { \ __BKPT(arg); \ __NOP(); /* NOP to prevent the debugger from immediately stepping to the next line. */ \ } \ } while (0) int main() { int a = 0; // Click: Continue (F5) BREAKPOINT(0x01); // Click: Step Over (F10) which works correctly a++; // Click: Step Over (F10) again which works corr
Hi everyone!I have a project where I start, with the help of the Timer 3, three ADCs(ADC1, ADC2 and ADC4). Each of them samples 256 samples and then stops. Then I disable them and start a calibration process on all three ADCs.This is repeated with a frequency of 4Hz approx. Interesting thing is that after calibration I get very often different calibration values for ADC1, not really often for ADC2 and rarely for ADC4. Like this:60, 61, 6260, 61, 6261, 61, 6260, 61, 6260, 60, 6261, 61, 6261, 61, 6260, 61, 6260, 61, 62...Calibration is done with HAL function from ST. ADCs are turned of during calibration (ADEN = 0). Vref is external(3v) and it is stable, but I believe that offset calculation during calibration does not really use Vref voltage. Or it does?So I’m a bit confused. Is here some ADC guru of Yoda level?I appreciate any help.
Hello ST team,I am using a P-NUCLEO-LRWAN3 starter kit with the NUCLEO-F746ZG gateway board.I accidentally overwrote the original gateway firmware on the F746ZG. I have already recovered the board so that it can be connected and programmed again with STM32CubeProgrammer, but I no longer have the original gateway firmware binary.I tried flashing another gateway binary:st-nucleo-lora-gw-at-fw-v2.1.7-eu868-TTN.binThe firmware runs, but it is clearly not the correct one for my hardware. After flashing it, the serial output shows EU868 / TTN settings and reports:router.eu.thethings.networkuplink/downlink port 1700channels around 867–868 MHzERROR: Radio A frequency and type are not matchedERROR: Radio B frequency and type are not matchedBefore I overwrote the original firmware, the gateway output was different. The original serial output showed:VERSION: 2.1.7, Nov 6 2018LORAWAN SERVER: ap1.loriot.iouplink/downlink port 1780channels from 471500000 to 472900000So I believe the original firmwar
Code generated by CubeMX use Windows line-endings, which generate huge problems under other operating systems (repository, editors, etc.). You have to strip CR-LFs after every code generation.Somebody should use standard method of platform-independent text file generation (StringBuffer and System.lineSeparator()).
Hello,I’m facing a strnge issue in the code generated by CubeMX for the STM32L496ZG.The project was imported in CubeIDE and compiled fine.but, as soon as HASH is activated the project no longer compiles and throws several hundreds of errors.CubeMX version is 6.17.0CubeIDE version is 2.1.1Looking at the errors, it appears that the HASH symbol is not defined, resulting in the associated code being grayed out.Regards
I have an stm cube project that usesSTM32H755ZIQ CMAKE ST-CLANG as compiler VS code with st pluging as IDEI want to add CMSIS DSP libraries, but it look like complete nightmare since there are bunch of topics for older versions and stm cube ide and some open, but not finished version for cmake/vs code.Is there an official instruction how to do it?I tried to add it as .pack from CMSIS and as X-CUBE-ALGOBUILD DSP library, but both did not compile
Dear all,I'm looking for the driver for the VD55G0 camera sensor compatible with the STM32N657 MCU. According to the camera sensor's driver product page (STSW-IMG505) a driver should be available for the N6 (the N6 is mentioned several times as being supported) but I can only find drivers for Raspberry Pi and V4L2. Could you please let me know where I can obtain the driver?Thank you very much for your support!Michael
I have multiple STLinks on multiple Nucleo boards. I can debug only if I connect one at a time, but it is tedious to connect and reconnect to switch boards. When I plug in multiple devices I see them listed (bottom left) but I can’t work out how to select a specific STLink to use. If I try to debug it fails with a “bound doStepConnectToTarget Failed: could not connect: Operation timed out.” and suggests I open launch.json.Disconnecting the cables is additionally tedious because I’m using the VCP on each, and disconnecting breaks the connection to the terminals, which then all need to be reconnected.I know that with the stand-alone STM32CubeIDE it possible to have separate configurations for each STLink (defined by Serial ID) and then I select the one to use as needed, without having to disconnect any hardware (and the VCPs for the devices I’m not debugging stay connected).Is there a way to specify the STLink serial ID to use in the launch.json file? In VSCode I notice there is a but
I have 2 problem in my touchgfx project.I use STM32G4 series. I have an external loader with a starting address of 0xA0000000. I can perform read and write operations with this loader using CubeProgrammer. However, when I define the external loader via CubeIDE, it programs the address 0x080000000. Then I get Hard Fault. Here is my flash.ld The external loader starts working when I start it with the external loader address 0x00000000, but I want to start with 0xA0000000. How can i fix it ?Also my second problem is texts. My text datas are sending to external flash, but it is not appear. Then I changed font section to internal flash in flash.ld, my text was appear. Here is my changed sections side. The textures are changing because something else is changing. Why isn't the screen showing the text I added with the external loader?
Hello! I currently have several questions regarding STM8500 + STLD1 DC carrier communication. Please reply! 1: I send differential signals via STLD1, which are capacitively coupled at high voltage between DC48V and DC48V_GND, then received at the receiving end. Shouldn't be any issues, right? The theoretical transmission distance can reach 3km, right? Is there a more complete reference schematic design available? The schematic provided in the official manual is incomplete. 2: The STM32F401 communicates with the ST8500 via UART. Can I use the ST8500 simply by calling AT commands or API interfaces? Or do I need to program the ST8500 itself or download firmware to use it? *This post has been translated from Chinese to comply with the ST Community guidelines.
I am working on an STM32 based robot controller using an STM32F4 series board. The system includes IMU, encoders, and multiple sensor modules. During vibration and movement, some jumper connections become unreliable. I am currently using standard Dupont wires for prototyping. However, repeated disconnects are causing unstable sensor readings. I want to move to more robust connector solutions for PCB to wire interfaces.I am confused about which connector types are best for pin based headers. Should I use JST, Molex, or locking header connectors instead of Dupont? What connector systems are commonly used in STM32 embedded designs?I also need something suitable for frequent assembly and maintenance.
Is there any way to correctly specify the baud rate for different UARTs in STM32CubeMX?I am currently using: STM32CubeMX V6.17.0 with STM32Cube_FW_H5_V1.6.0I wanted to set the baud rate to 9600 for LPUART1, UART4, and USART2.However, this isn't working; all three UARTs are outputting the same incorrect baud rate based on the calculated divider.Instead of 9600 baud, transmission occurs at 3075 baud (a factor of 3.12195121951219512195:1 too slow).The external 25 MHz HSE oscillator is used as the clock source (original from the Nucleo Board).PLL2Q is used as the clock source for each of the UARTs.I have already tried the following:Updating STM32CubeMX, Updating STM32Cube_FW_H5, Changing the UART clock from 250 MHz to 25 MHz and 5 MHz, Changing the baud rate from 9600 to 19200.When I initialize the UARTs at 19200, they all transmit at 6150 baud.The project was previously built using MX V6.16 and STM32Cube_FW_H5_V1.5.0/V1.5.1, but the problem persisted.Does anyone know how to correctly set
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.