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 writing to request technical assistance regarding a display issue we are encountering while developing with the STM32MP257FA. We have connected an OLED display via the LTDC interface using the RGB888 communication protocol.[Issue Description] While the display output is functional and the image is visible, the colors appear significantly "washed out" (desaturated) compared to the original source image. It feels like some color data is being lost or attenuated.[Troubleshooting Steps Taken] To address this, we have already performed the following debugging steps:Signal Integrity: We suspected a potential issue with the R5 data line (and others) and have attempted to adjust hardware parameters, including impedance matching, trace length, and clock timing.Cross-Verification: We replaced the OLED module with a new one to rule out a component defect, but the symptom remains identical.[Attachments] For your reference, I have attached the following files:Schematic: Our hardware circuit de
Hi,I have implemented CDC USB device on my custom board using STM32C071CBT6. When i connect USB cable to host PC then I can see Virtual COM Port on PC as 'USB Serial Device (COMxx)' However, I tried transmitting some data which I could not receive on PC side. After debugging I noticed that function USBD_CDC_ACM_Activate() is never getting called. In file, app_usbx_device.c, function MX_USBX_Device_Init() has following code:UINT MX_USBX_Device_Init(VOID){UINT ret = UX_SUCCESS;UCHAR *device_framework_high_speed;UCHAR *device_framework_full_speed;ULONG device_framework_hs_length;ULONG device_framework_fs_length;ULONG string_framework_length;ULONG language_id_framework_length;UCHAR *string_framework;UCHAR *language_id_framework; UCHAR *pointer; /* USER CODE BEGIN MX_USBX_Device_Init0 */ /* USER CODE END MX_USBX_Device_Init0 */pointer = ux_device_byte_pool_buffer; /* Initialize USBX Memory */if (ux_system_initialize(pointer, USBX_DEVICE_MEMORY_STACK_SIZE,
Hello ST,Im using STNS01 as a power source in two of my different project prototypes. Unfortunately booth are facing the same problem. When the pcb was produced LDO/charger worked as intended. However after many battery and usb disconnection durring fw debugging, the problem suddenly appeared - LDO do have otput only when USB is connected. After USB disconnect LDO voltage falls to zero eventhrough 4.1V charged li battery remains still connected. Voltages to identify the problem closer:1) connected the battery(AA sized lithium cell), usb cable and measure voltages(all are references against GND, not battery - terminal which is polyswitch protected):usb connected- ntc:0.53V SD:0V IN:5.1V SYS:5.08V BAT:4.13V 2)then I disconnected USB but kept battery connectedusb disconnected batery backup- ntc:0.0V SD:0V IN:0V SYS:0V BAT:4.14V The schematic-power supply part is here: LDO is supplying just low power chips(mcu and sensors). DNP components are soldered manual
The release notes for v2.2.0 say that feature is in there, but I can't seem to find it.I tried the "Full Chip Erase" feature & it cleared everything EXCEPT the EEPROM.
Hey all,I have a Sony IMX686 camera module connected to the STM32N6 Discovery Kit, streaming video to the on-board LCD. The sensor outputs a single-stream RAW Bayer format on Virtual Channel 0, and the DCMIPP receives the data correctly — up to a certain horizontal resolution. The issue appears to be related to a bytes-per-line limit within the DCMIPP or its DMA pipeline.When the IMX686 outputs RAW8, the DCMIPP can only handle horizontal line lengths up to 1552 pixels. If I increase the width beyond 1552 px (e.g., to 1668 px), I begin to see horizontal distortions in the lower portion of the frame. These distortions worsen as the width increases. See the images below.As the width increases further, the distortion grows and eventually affects most of the frame (shown below).When switching the sensor to RAW10, the exact same distortion appears, but it goes away when I reduce the horizontal resolution to 1232 pixels. This matches the expected scaling: 1552 * 8 / 10 ≈ 1241 → nea
The STM32CubeProgrammer does not appear to be able to read system memory from an STM32L051 when using the UART interface however it is able to do so when using the SWD interface. When using the UART interface, both flash and EEPROM can be read, but not system memory. This is on a factory fresh part with no readout protection set (0xAA).c:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin>STM32_Programmer_CLI.exe --connect port=COM5 -r8 0x1FF80050 8 ------------------------------------------------------------------- STM32CubeProgrammer v2.21.0 ------------------------------------------------------------------- Serial Port COM5 is successfully opened. Port configuration: parity = even, baudrate = 115200, data-bit = 8, stop-bit = 1.0, flow-control = off Activating device: OK Board : -- Chip ID: 0x417 BootLoader protocol version: 3.1 Device name : STM32L05x/L06x/L010 Flash size : 64 KBytes (default) Device type : MCU Revision ID : -- Device CPU : Cortex-
I'm using STM32_Programmer_CLI software v.2.20.0 to program an ST Nucleo board (NUCLEO-C071RB).I wish the software were better at automatically handling situations that make it fail.For example, this command does work normally for uploading firmware to the board:STM32_Programmer_CLI --connect port=swd --download firmware.elf --startHowever, if you have enabled read-out protection (RDP) by setting RDP=0 in the option bytes, then it fails with "Error: failed to erase memory" (and for some reason, it prints that message twice). If read-out protection truly does prevent you from erasing, the software should be smart enough to detect that RDP is on and then turn it off temporarily. Instead, we have to manually ask the software to do that:STM32_Programmer_CLI --connect port=swd -ob RDP=0xAA --download firmware.elf --startNext, if you have enabled write protection for a relevant portion of flash, the software fails with the same "Error: failed to erase memory" error messages
hey all, i'm working on a team where most people have little experience with stm32s, and we've designed and manufactured our first board with the STM32H7S3I8T6 chip. we followed the data sheet extensively and did a decent amount of research on peripheral values, and after soldering the chip onto the board we checked that all soldered connections were good (especially D+ and D- on the USB bus). some observations: 1. we tried to first use the USB DFU method using the STM32Cube Programmer, but when plugging the board into the computer, no new usb connection is detected (when holding down boot button to set BOOT0 high). 2. we tried using an ST-link module from a Nucleo board to program the board with SWD, but similarly, no device was detected when programming. 3. when checking the D+, D-, and LSE/HSE oscillator data lines, probing them using an oscilloscope results in no signal / very weak noise. i'll attach our schematic for the chip, any and all feedback is greatly appreciated. curr
Hi all, my team is experiencing some boards have failure of their STUSB4500 sink PD controller. We have not 100% determined the cause yet, but I found that our implementation is only using 0.1uF caps for the VREG 1V2 and VREG 2V7 decoupling. This is way under the datasheet minimum of 0.5uF.The failure mode we are seeing is that the STUSB4500 does not communicate on USB PD at all after failure. On both failed boards I have received back, VREG 1V2 and VREG 2V7 output ~0V. My question: is it possible or likely that the 0.1uF decoupling caps are causing or leading to this failure? The STUSB4500 is programmed to negotiate 12V, also. So the operating condition would be to negotiate 5V on plugin, and then negotiate 12V. Thanks!
Hello Team,We are using the "ST33KTPM2X32DKG9" part TPM IC. I would like to know the I2C address of the TPM IC.Regards,Sampat
I am using STM32U575 Nucleo development board and I am trying to configure DMA through STMCube IDE. I have configured the DMA and generated code through it. Added required code but I am not getting data on serial through DMA. Is there any alternate way to get data on serial using DMA?
I am working on an isolated monitoring system for currents, voltages, and heatsink temperatures, and am using the ADCS on the Nucelo-F446RE to take the readings. Initially testing was going well demonstrating good linearity and accuracy across a range of set-values. However, after having reworked one of my temperature channels, and making minor adjustments to the configuration of the Nucleo board to configure it to read a different ADC channel, the values collected by the ADC suddenly became very erratic (inaccurate) and imprecise (larger range). For example, in the attachments I have included x2 sets of values collected before and after the issue started to occur. A quick summary of the full results can be seen the the table below Pre IssueRaw Value3.3V Ref EQ60V Full Scale EQError vs Ideal (%)Post IssueRaw Value3.3V Ref EQ60V Full Scale EQError vs Ideal (%)Average = 1946.9631.56859828.5199695.06653 Average = 2155.3441.73648331.57242105.2414High =20441.6467772
Post Edited by ST moderator to apply source code formatting and translate from Chinese to English to comply with the community rule: Best regards, Gyessine Hello everyone, I am trying to implement the 6-Step Trapezoidal Control using the COMG event in STM32F411RE as said in the datasheet. Situation: I am using 3 half bridges each driven by a single IR2110, IR2110 requires only one input signal to be high at a time to drive each half bridge as planned. I am using TIM1 PWM mode CH1-3 for HINs and CH1N-3N for LINs of each half bridge's IR2110. So in theory, for example, for first commutation, I only need CH1 & CH3N to be active. But as far as my understanding goes, if CH1 is active, I will be getting a complementary signal at CH1N as well. If IR2110 receives signal at HIN and LIN, it might cause overshoot for MOSFETs. There is a dead-time between both signals but, the point is I don't need the signal from CH1N so in my understanding the best way is to set the CC1NE bit to
Hello everyoneI joined a somewhat finished project, which has working TouchGFX display using assets saved in external flash memory. The next phase is to enable A/B FW update, meaning that now the assets might end up either in the start or middle of the external flash. Ive been tasked with enabling the program to read the assets at runtime, deciding if they exist in the start or middle using a flag provided by the bootloader. So far, I managed to read Images, Videos, Audio and Texts from the back half of the flash by redirecting pointers with an offset, but im having real difficulties with the generated Fonts. For some reason I cant get it to work. My strategy is to intercept the GFX getFont function by a new class inheriting ApplicationFontProvider, but I simply cannot get it to work. Currently I dont think I even managed to connect it properly and I dont think the code even run through it.Is there some sort of example someone made for this scenario? Would greatly appreciate any help.&
Hello.Is there any way to exclude some GPIOs from Linux, when I control them from M4 core and I don't want to give an ability to control them from Linux apps? I would like to exclude e.g. PG12. I tried this, which should be exactly for such use:&gpiog { gpio-reserved-ranges = <12 1>; /* Reserve PG12 for M4 */ }; But it doesn't help, still the GPIO is listed and possible to control under Linux.We use OpenSTLinux custom Yocto build with kernel 5.15.67Thanks
Can i use UART + DMA ( normal ) + RTO ? I try to add RTO but when activate RTOE bit the DMA buffer stops fills .I take interrupt with active RTOF , stop DMA , but nothing in buffer !? I use stm32H7 with hardware implemented RTO. Can some one to give working example ?
Hi,I am currently working on the firmware of a PCB with an STM32G031K8T6 as the MCU, supplied by a 1.8V voltage.When I enter Stop 1 mode, the consumption of the MCU drops to 100uA, instead of the 7uA stated in the datasheet.The app_stop function is as follows :void app_stop(void) { timer_uninit(); i2c_slave_uninit(); i2c_master_uninit(); gpio_stop_mode(); HAL_SuspendTick(); SystemClock_Config_StopMode(); HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); } void gpio_stop_mode(void) { GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = GPIO_PIN_All; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_All; GPIO_InitStruct.Pin &= ~(GPIO_WAKEUP_PIN); GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); __HAL_RCC_GPIOB_CLK_DISABLE();
I've seen that, trying to download the STM32CubeH7RS Firmware Package from CubeMX, I'm seeing the latest version is 1.3.0.On the actual documentation and GitHub repository https://github.com/STMicroelectronics/stm32h7rsxx-hal-driver I'm seeing that the version is 1.2.1Dates are the same, so I think the version is the same, just with different numbering; is it correct?
Hello,I inherited an old software project from a colleague who retired. (He originally worked on Windows XP.)The software was designed to run on an STM32L-Discovery board.Since some packages need to be maintained, I want to build the software on a Linux machine (Ubuntu 24.04.4 LTS). I managed to create a CMake project that successfully builds the binary for the target.The issue I’m facing now is that I can’t flash the binary to the target hardware because STM32CubeProgrammer displays the following message:“Error: Old ST-LINK firmware version. Upgrade ST-LINK firmware.”I also tried on a Windows 10 machine and got the same result.On the official board page [1], there’s no mention of STM32CubeProgrammer.I’ve been searching for a solution since this morning, but I haven’t found the right hint yet.Can anyone confirm whether CubeProgrammer is unable to write to this Discovery board?Can anyone recommend a programmer I can use to flash the binary? (I know a few are listed in the documentation,
HelloI am connecting the ST-LINK and downloading the firmware to the programmer.I have a question. Can I do power from ST-LINK and download firmware instead of supplying external power to the MCU? Currently, I use external power, but I wonder if there is such a way.Thank you.
I'm currently working on a project using an STM32G473RCT6. I've integrated the STL Lib (Self-Test Library) and intended to use STM32_Programmer_cli.exe with the -sl option to add the CRC block.The application starts at 0x08040000 and continues for a maximum of 128K, up to 0x08060000.There will therefore be an area of 0x20000/1024=128 CRCs, which will occupy 128×4=512 bytes.In practice, the application itself can only occupy 0x1FE00 bytes because the last block will be available for the CRC Area.Based on the STL documentation, these CRCs will be inserted at address 0x08060000−512=0x0805FE00.The command I'm using is:STM32_Programmer_cli.exe -sl "firmware.bin" 0x08040000 0x08060000 0x400The resulting binary has the entire section between the end of the original binary and 0x0805FE00 padded with 0xFF.Upon checking the CRCs that were inserted starting from 0x0805FE00, I can see that the first ones correctly match the CRC of the application blocks. However, when it reaches the CRCs cor
I am using VL53L4CX with VL53L4CD ULD driver v2.2.2, due to an I2C issue on my side the VL53L4CD_RdWord fails and the number_of_spad variable is set to 0. The divide by zero happen at the very end of VL53L4CD_GetResult.I checked the function in ULD v2.2.3 and the number_of_spad value is still used for division without checks :VL53L4CD_Error VL53L4CD_GetResult( Dev_t dev, VL53L4CD_ResultsData_t *p_result) { VL53L4CD_Error status = VL53L4CD_ERROR_NONE; uint16_t temp_16; uint8_t temp_8; uint16_t raw_spads; uint8_t status_rtn[24] = { 255, 255, 255, 5, 2, 4, 1, 7, 3, 0, 255, 255, 9, 13, 255, 255, 255, 255, 10, 6, 255, 255, 11, 12 }; status |= VL53L4CD_RdByte(dev, VL53L4CD_RESULT__RANGE_STATUS, &temp_8); temp_8 = temp_8 & (uint8_t)0x1F; if (temp_8 < (uint8_t)24) { temp_8 = status_rtn[temp_8]; } p_result->range_status = temp_8; status |= VL53L4CD_RdWord(dev, VL53L4CD_RESULT__SPAD_NB, &temp_16); raw_spads=temp_16; p_result->number_of_
Friends, I've encountered a bug while running CubeIDE 2.0 on my Ubuntu (KDE desktop). When I open my project, I notice the code editing area flickers. This often happens when the sidebar scrollbar is activated (forgive me, I'm not sure how to describe this element). Has anyone else experienced a similar issue? How should I resolve it?
I have an STM32H747I-DISCO board that I am trying to bring up with the Tutti Frutti Demo. I have followed the instructions in UM3008 to program this as it appeared to be blank upon arrival from Digikey. External loader was set to: MT25TL01G_STM32H747I-DISCOProgramming of CM4 with intflash.hex and CM7 with target.hex completed successfully.After programming, the board does not display anything and LD10 just flashes red a couple of times and then pauses on green then repeats.Power LED is good (green). I am not familiar with these development tools so it is likely I'm missing something but whatever it is is not clear to me.I have tried resetting both through STM32CubeProgrammer (V2.21.0) as well as hard reset on the board.Power cycling the board does not help. LD10 just solid red until I connect up STM32CubeProgrammer at which point it cycles between green and red as described above. I have seen this is a common issu
When I view the information panel after selecting the "X-CUBE-BLE2" -> "Device BLE2_Applications" -> "Application" -> "SensorDemoBLE..." and clicking on the "Documentation: STMicroelectronics X-CUBE-BLE2_GettingStarted..." link, the "Software Packs Component Selector" popup window hangs and cannot be closed. The document is never displayed. From what I can tell, it is attempting to load "/home/me/STM32Cube/Repository/Packs/STMicroelectronics/X-CUBE-BLE2/3.3.0/Documentation/STMicroelectronics.X-CUBE-BLE2_GettingStarted.pdf". I ran the IDE software updates via the "Help" menu yesterday, so I assume it is the latest version. The command line shows it is running "/opt/st/stm32cubeide_1.12.0//plugins/com.st.stm32cube.ide.jre.linux64_3.1.0.202310310920/jre/bin/java" with "-Dosgi.instance.area.default=@user.home/STM32CubeIDE/workspace_1.14.1 -Declipse.buildId=Version 1.14.1"The "Help" -> "About" shows:Version: 1.14.1Build: 20064_20240111_1413 (UTC)There were
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.