Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
The VENC peripheral on the N6 boasts a hardware handshake path with the DCMIPP peripheral, potentially allowing full compression of each frame to occur with very little active RAM. From what I can find, the DCMIPP capture starts, then the VENC is told to start encoding, and the application only then receives notifications when a frame is complete. There should be no further interaction. However, I am unable to get this working for MJPEG. The examples for this sort of streaming are all for h264, and the JPEG is thrown to the side as a one-time encoding. I have reasons on this project to use MJPEG encoding, but I cannot get the VENC to perform this handshake with the supplied example code. I have attempted to modify the JPEG Encoding Example that uses the VENC, and have successfully used the VENC for JPEG encoding of a full in-RAM frame, so I know the peripheral can work. Relatedly, the only articles on the handshake algorithm I can find is for the H264 compression.I'm looking for any wo
Hello everyone,I'm writing this to provide support for my External Loader project for TouchGFX , which I've been working on for a long time.The External Loader file works good with STM32CubeProgrammer. (Write-Erase-Read operations are possible) LOG OUTPUT IS ATTACHED --> [STM32Cube Programmer LOG Output]When I run my project file LCD_Driver_v10 and my External Loader file together, I get the following errors: The complete error message is attached. --> [STM32Cube IDE CONSOLE Output] Error: failed to download Sector[0]Error: failed to download the FileEncountered Error when opening C:\Users\USER\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.2.300.202508131133\tools\bin\STM32_Programmer_CLI.exeError in STM32CubeProgrammer I also checked this address https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/external-loader-fails-to-download/m-p/136566#M6974 which has a similar problem, but nothing changed.My Mcu is STM32F7
Hello everyone, First of all I am kinda new in ARM (I never use), I am working on the STM32H745I-DISCO board (using the CM7 core) and I am facing a persistent issue with UART . No matter what I try, the RX Interrupt never triggers, and the code never enters the HAL_UART_RxCpltCallback. My Setup: Board: STM32H745I-DISCO IDE: STM32CubeIDE (Latest Version) Scenario: UART Loopback Test (Connecting TX to RX physically). Peripheral: USART6 (TX: PC6 / RX: PC7) on the Arduino Headers (D1/D0). Settings: 115200 baud, 8N1, Asynchronous. The Problem: -HAL_UART_Transmit works fine (signals observed). HAL_UART_Receive_IT returns HAL_OK. However, the HAL_UART_RxCpltCallback is never executed. When checking SFRs in Debug mode: RXNE flag stays at 0. What I have verified so far (Step-by-Step): NVIC Settings: USART6 global interrupt is Enabled in CubeMX. Vector Table: USART6_IRQHandler exists in stm32h7xx_it.c and calls HAL_UART_IRQHandler. Initialization Order: I ensured that MX_USART6_
Hi,I'm trying to drive a 5 in LCD with STM32H757. However the MCU's internal RAM is too small for the frame buffer for this 800x480 LCD. So I have a PSRAM APS6404L on the QUAD SPI bus. I have succeeded in setting the memory mapped mode for reading the PSRAM, but I don't know how to integrate the custom write routine for the touchGFX. The MX configurator seems not allow me to set up a partial frame buffer in the internal RAM. I have tried to use custom LCD type to forcefully set the partial frame buffer, but I'm unable to get the touchGFX task to run.Does the custom LCD type require lot of work? I feel so stuck right now. Please help. Thank you.
Dear STMicroelectronics Team,I am writing to strongly condemn the way power consumption values are presented in the STM32WB55 datasheet.When I choose a wireless SoC, I do so because of its wireless capabilities. If I only needed a microcontroller, I would simply buy an MCU from your STM32 families. The reason I selected WB55 was specifically for its BLE functionality. Therefore, the datasheet must provide power consumption values with BLE active, not just MCU Stop mode currents with BLE disabled.Presenting only the MCU’s low‑power figures while omitting the real BLE consumption is misleading and deceptive. It creates false expectations for developers and leads to serious disappointment in real‑world applications. This practice can only be described as fraudulent.I strongly denounce this approach. Wireless SoCs must be documented transparently, with accurate BLE advertising and connection current profiles. Competing vendors such as Nordic and Telink provide this clarity, and ST should d
NUCLEO WB55For an unknown reason I2C1 has just stopped working. The BLE & UART are working but the boards (I've tested on 2 identical boards) are no longer talking to the sensors via I2C.When I scope them up the traces for SCL & SDA are both flat lines (yes I checked the scope is working properly).Frustratingly, this all worked before xmas.Anyone any clue what could cause this?
In the UM2407 Rev 5 (Nucleo-H753ZI user manual) on page 29/54, section 7.6.6 there is a warning:USB Micro-AB connector (CN13) cannot power the Nucleo144 board. To avoid damaging the STM32H7, it is mandatory to power the Nucleo-144 before connecting a USB cable on CN13. Otherwise, there is a risk of current injection on STM32H7 I/Os. However, in an informal empirical test it seems that nothing got damaged when I connected CN13 to a PC/Laptop without powering the Nucleo. So, how big is this "Risk" really and what are potential consequences? And is this risk related to the Nucleo only, or would the same risk apply when integrating a STMH753ZI directly on a PCB. Can anybody provide more detailed information?Note: I do NOT want to power the Nucleo from CN13 but just leave the USB cable connected. Thank you and best regardsDiego
Hello,I’m new to embedded systems and currently learning STM32 + LoRa.I’m using two NUCLEO-F411RE boards and two RA-02 (SX1278) LoRa modules. My goal is to establish basic point-to-point communication.I initially tried using a LoRa.h library, but I couldn’t get it working reliably. To reduce complexity, I decided to verify SPI communication first, before dealing with LoRa TX/RX logic.However, SPI itself does not appear to work as expected, so it’s unclear whether the issue is: SPI configuration Hardware wiring Or the LoRa library integration Below are two minimal examples: A bare SPI register read (RegVersion = 0x42) A minimal LoRa.h initialization without TX/RX logic I would appreciate feedback on: Missing or incorrect SPI configuration Whether the LoRa initialization sequence is reasonable Common SX1278 + STM32 HAL pitfalls Minimal SPI test (RegVersion check) #include "main.h" #include "spi.h" #include "gpio.h" #defin
Dear ST Community Team,We are currently working on a project using the STM32N657X0H3Q1 microcontroller and developing the GUI application with TouchGFX.While configuring and generating the TouchGFX project, we are encountering RAM and ROM overflow errors during compilation/linking. The internal SRAM and Flash available on the STM32N657 device are not sufficient to accommodate the TouchGFX framework, graphics assets, and application code.As an alternative solution, our hardware design includes the following external memories:External RAM: S80KS5123GABHB020External Flash (Octal SPI NOR): S28HS512TGABHM0100We would like guidance from the community on the following points:How to properly configure external RAM in STM32CubeMX / TouchGFX so that:FramebuffersTouchGFX heapGraphics buffers are placed in external RAM instead of internal SRAM.How to configure external Flash to store:TouchGFX assets (images, fonts, videos)Read-only GUI resource to reduce internal Flash (ROM) usage.Any re
So far, in all my projects, the MCU has been powered via USB attached to computer. I would like to make a project in which the MCU is powered by a portable power supply. However, I don't know which equipment I need to use for this purpose. I have a power supply module from ELEGOO kit (ELEGOO Upgraded Electronics Fun Kit w/Power Supply Module, Jumper Wire, Precision Potentiometer, 830 tie-Points Breadboard for Arduino, STM32 : Amazon.com.au: Computers), which can output 5/3.3V electricity. Can I connect a powerbank to the supply module, and use the supply module to power the board, or should I look for other options? The board I use is stm32f407g-disc1, and the datasheet (DS8626_STM32F40xxx.book) says that the voltage should be in 1.8-3.6V range and the power of electrical current should be less than 240 mA (p79).
I'll explain Flash Erase Error to the stm32l475rct6 MCU that I'm currently using. Page : 127, Address : 0x0803F800, Bank : FLASH_BANK_1 is defined, and if you try to modify the value after first saving the value in the Flash area, the values already stored in Flash are not erased properly, so the Flash value cannot be modified. SMT32CubeIDE version is 1.19.0 and I'll attach the code I implement, so please check where the problem is and let me know if there is a solution.void AO_SaveCalibration(void){HAL_StatusTypeDef status; printf("Saving calibration to Flash...\r\n");printf("Data size: %u bytes\r\n", sizeof(AO_Calibration_t)); ao_cal.checksum = Calculate_Checksum1(); status = HAL_FLASH_Unlock(); if (status != HAL_OK){printf("ERROR: Flash unlock failed\r\n");return;} __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS); while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)){// Flash 작업 완료 대기} FLASH_EraseInitTypeDef EraseInitStruct;uint32_t PageError = 0;EraseInitStruc
Hello,we are seeing a systematic offset when using the internal temperature sensor of the STM32G031G8U6.Over the years we have tested ~50 SoCs (different production batches), and all devices show a very consistent temperature reading that is about 2–3 °C too high at room temperature compared to an external reference, higher temperatures weren't tested.Because of this, we are considering programming a temperature offset during flashing. Before doing so, we would like to better understand whether a single-point offset calibration is sufficient, or if the internal slope accuracy is not reliable enough, requiring a full two-point calibration.Example:If the MCU reports 24 °C but the real temperature is 21 °C, can we simply apply a +3 °C offset globally?Or is the internal temperature slope not guaranteed well enough, meaning that a two-point calibration is required?More specifically, regarding the factory calibration values on STM32G0:TS_CAL1:ADC raw value measured at 30 °CTolerance: ±5
Hello ST Community,I am working with the STM32N6570-DK and the USBX Ux_Device_Video example fromSTM32Cube_FW_N6_V1.3.0\Projects\STM32N6570-DK\Applications\USBX\Ux_Device_Video.I followed the README instructions exactly:Built FSBL and Ux_Device_Video projects successfully in STM32CubeIDEGenerated FSBL.bin and Ux_Device_Video.binSigned both binaries using STM32_SigningTool_CLIProgrammed:FSBL-trusted.bin at 0x70000000 (external flash)Ux_Device_Video-trusted.bin at 0x70100000 (external flash)Set BOOT0 and BOOT1 to boot from external flash and reset the boardHowever, the application does not run as expected. When the board is connected to a Windows PC, the Windows Camera application fails with the error: Can't start your camera0xA00F4241 <CameraSwitchFailed> (0xC00DABE7)From my understanding, the Ux_Device_Video example should enumerate as a USB UVC camera and stream video to the Windows Camera app. Since the camera app fails, it seems the firmware may not be executi
I'm using the X-CUBE-EEPROM library on my STM32C031G6Ux to store keys in flash memory. I configured eeprom_emul_conf.h so that the emulated EEPROM starts at 0x08007000, with 2 pages of 2 KB each, and set NB_OF_VARIABLES to 240.When I tried saving 240 variables once using EE_WriteVariable32bits and reading them back with EE_ReadVariable8bits, everything worked fine.However, when I repeat this process three times, writing stops once both pages are full, and the data is no longer read correctly.I experienced similar issues even with 120 variables. Interestingly, adding EE_CleanUp after all writes solved the problem for 120 variables.I then tried the same approach with 240 variables, calling EE_CleanUp after all write operations, but it still didn’t work.Is there a reason for this behavior? Am I limited to storing only 120 variables in flash?
Hi everyone,I’m experiencing unexpected behavior while testing 9-bit SPI on an STM32, observed with a logic analyzer. The issue only occurs when the MOSI line is physically connected to the slave.Observations::keycap_1: MOSI not connectedCS and SCLK are correctMOSI stays highSPI decoder shows 0x1FF Expected behavior for a floating MOSI line:keycap_2: MOSI connected to the slaveMOSI data becomes correctBut a very brief rising edge (glitch) appears on CS during data transmissionCS immediately returns active → causes unintended slave deselectionResult: data loss during the SPI frameAdditional info:STM32 model: stm32u5g9j-dk2SPI mode: 9-bit, masterSCLK frequency: 10 MHzIs this a known issue with 9-bit SPI on STM32?Should I add a pull-up/pull-down on CS or MOSI?Any other suggestions to avoid this glitch?Attached are screenshots showing the behavior.Thanks in advance for your help!MOSI connectedMOSI not connected
Bonjour,Je travaille sur une carte STM32U5G9J-DK2 avec ThreadX + USBX (Host Mass Storage) et TouchGFX.Mon objectif est simple ::backhand_index_pointing_right: lire le contenu d’une clé USB (fichiers / répertoires) lorsqu’elle est connectée en USB Host.Cependant, dans STM32CubeU5, j’ai constaté que :Le système de fichiers a été migré de FATFS vers FileXLes exemples FileX fournis concernent principalement SDMMC / Flash / QSPIJe ne trouve aucun driver FileX officiel pour USB Host Mass StorageLorsque j’essaie d’utiliser FileX avec USBX Host MSC, j’obtiens des erreurs de compilation et d’architecture :absence de fx_stm32_disk_driverincompatibilité entre UX_HOST_CLASS_STORAGE et fx_media_opentypes FileX (FX_DIR, etc.) non reconnus:backhand_index_pointing_right: Ma question est donc la suivante :Existe-t-il une solution officielle et supportée par ST pour utiliser FileX avec USBX Host Mass Storage (clé USB) sur STM32U5 ?Ou bien :FATFS reste-t-il la solution recommandée pour la lecture de clé
Im trying to run SYSCLK from LSI on a STM32C011. But it appears as if the MCU is not running. I cant see anything in the datasheet that says the clock cant be used and it can be routed fine in the clock configurator. Am I missing something in the datasheet or does the HAL not support it?
Hello fellow readers,##Disclaimer##I am using a Nucleo Board, the Nucleo H7S3L8, and HAL_ERROR ist laughing me since 2 days in my face# I think you, dear reader, have heard about the SWR-Bit, which vanishes out as soon the software has restarted succesfully, everything seems perfect and you have finally the feeling you found the solution to world piece.But I am currently at the brink of insanity, because this little ******* ***** ** **** wont clear itself after I forced the reset. What do I mean specifically?HAL_StatusTypeDef HAL_ETH_Init(ETH_HandleTypeDef *heth) { uint32_t tickstart; if (heth == NULL) { return HAL_ERROR; } if (heth->gState == HAL_ETH_STATE_RESET) { heth->gState = HAL_ETH_STATE_BUSY; #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1) ETH_InitCallbacksToDefault(heth); if (heth->MspInitCallback == NULL) { heth->MspInitCallback = HAL_ETH_MspInit; } /* Init the low level hardware */ heth->MspInitCallback(heth); #else /* Init the low lev
Hello all. I'm writing an application with the NUCLEO-H563ZI board (with the intention to use later the STM32H563 into a custom board). My application will communicate with a master PC via the embedded Ethernet, exchanging process data and commands. The protocol will be, most probably, Modbus/TCP. I've been able to configure the board (I/O), run the ThreadX OS, setup and run netXDuo middleware. I set up a TCP socket server connection on the STM32, with a C# test application as a client. I can open the socket from the C# client, send ad receive TCP packets almost correctly. The TCP server on the STM32 receives a packet from the client, extract the payload (data) from it, creates a new packet, copy the payload to the new packet and then echoes back the new packet to the client. This will change in the future, of course, but for the first tests it seemed nice to get back the same data. Here I have a problem. Everything works fine if the packet payload is less than 516 bytes long; over suc
STM32G031Y8Y6TR SMT上板后 需超声波清洗 PCBA 满足MOB制程需求,清洗参数:40KHZ,6分钟,60°,有经验的大神协助回复下1.STM32G031Y8Y6TR 是否禁止超声波清洗元件2.超声波清洗参数建议多少
Hi I am using Nucleo H753zi board, can I use X-CUBE-MEMSMIC1 expansion for sound source localization.
Hello ST Community, I am seeking assistance with a project generation issue using STM32 Motor Control SDK (v6.x) and the EVLSPIN32G0A1 evaluation board. The Problem: Even though I explicitly select the EVLSPIN32G0A1 board (which features the STSPIN32G0A1 / STM32G071 core) in the Motor Control Workbench, the generated .ioc file and STM32CubeIDE project target the STM32G031C8Tx instead. Consequences: Debugger Error: When attempting to flash the code, the ST-LINK GDB server returns: "Target no device found" or a Device ID mismatch because it is looking for a G031 but finding a G071 core. Configuration Mismatches: The clock tree and memory boundaries in the .ioc are being set for the G031 (64KB Flash) instead of the STSPIN32G0 (128KB Flash). What I have tried: Creating a new project in MC Workbench and selecting the board from the "Boards" tab. Configuring
I am using STM32F767 with LWIP and LAN8742 PHY.Ethernet initializes but I am facing Ping does not work reliably. This is the Schematic.
Hey!I'm working on implementing USB host functionality on the STM32U545 using the USB_DRD_FS peripheral. I've got the basic structure working, but I'm stuck at the enumeration stage, where the device responds with NAK to SETUP packets and enumeration never completes.As I'm using the dev boad which has no power, I'm using an external 5V supply on USB VCC and GND pins to use host mode.I ahve been trying the stm32u5xx_hal_hcd HAL file to get it working. Here's how I'm doing it:First, I'm keeping these structures:typedef struct { uint8_t dev_addr; uint8_t ep_addr; uint8_t ep_type; bool in_use; } channel_info_t; static channel_info_t _channel_info[FSDEV_EP_COUNT]; static uint8_t find_free_channel(uint8_t dev_addr, uint8_t ep_addr) { for (uint8_t i = 0; i < FSDEV_EP_COUNT; i++) { if (!_channel_info[i].in_use) { return i; } } return 0xFF; } static uint8_t find_channel(uint8_t dev_addr, uint8_t ep_addr) { for (uint8_t i = 0; i < FSDEV_EP_COUNT; i++) { if (_channel_info[i].
Hi,I’m developing an application on multiple STM32H563 units on the same board. Although all units use the same firmware, the logic depends on each unit’s position, so I need a way to identify which unit it is.Currently, I program the full flash memory (.bin/.elf) with STM32CubeIDE or STM32CubeProgrammer. Is there a standard or recommended way on STM32H563 to store small per-device information (like unit ID or role) separately from the main application flash, so the firmware can read it at startup? Thanks for any guidance!
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.