Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello ST Team,I'm implementing robust Ethernet on STM32H743ZI. Need technical guidance on:PART 1: BANDWIDTH VERIFICATIONQuestion 1.1: How to verify link speed?How to check link speed (100 Mbps)?Question 1.2: Bandwidth testing methodology?Create a TCP socket, send a large file to the PC?Expected bandwidth on STM32H743?Network overhead (TCP/IP stack)?Optimal packet size for testing? Also, how can I debug this to check if I am using full bandwidth and if my link is down during transmission?
Post edited by ST moderator to be inline with the community rules for the code sharing. In next time please use </> button to paste your code and a linker script content. Please read this post: How to insert source code. Hello, I am working on STM32H753ZI (NUCLEO-H753ZI board) with NetX Duo.I am trying to place all Ethernet DMA descriptors, RX/TX buffers, and NetX packet pool in D2 SRAM, but the system always ends up in a Hard Fault right after starting the Ethernet interface. I have already followed the ST AN4838 guidelines and forum suggestions, but the fault still occurs. 1. My linker script sections .NetXPoolSection (NOLOAD) : { . = ALIGN(32); KEEP(*(.NetXPoolSection)) } >RAM_D2 .RxDescripSection (NOLOAD) : { . = ALIGN(32); KEEP(*(.RxDescripSection)) } >RAM_D2 .TxDescripSection (NOLOAD) : { . = ALIGN(32); KEEP(*(.TxDescripSection)) } >RAM_D2 .RxBuffSection (NOLOAD) : { . = ALIGN(4); KEEP(*(.RxBuffSection)) } >RAM_D2 2. My variable placement ETH_DMADescType
I am working on a NUCLEO-H753ZI board and want to set up Ethernet communication using LwIP in STM32CubeIDE. I am looking for step-by-step guidance from the IOC file configuration to the generated code, including: Pinout configuration for RMII (TX/RX, MDC/MDIO, REF_CLK) LwIP middleware settings (heap size, pbuf pool, MEM_SIZE, etc.) Memory layout for D2 SRAM / AXI SRAM for LwIP heap, DMA descriptors, RX/TX buffers MPU region configuration for Ethernet and LwIP memory Generating code and linker settings Any tips to ensure that ping from PC works reliably Could someone provide a complete, detailed guide or example project showing how to configure CubeIDE and LwIP for NUCLEO-H753ZI?
I have exported X509 certificate from STM32H573I-DK board, and checked how it is organised.The certificate was issued by "ST CA 01 for STM32 Initial Attestation".I would like to verify whether it is truely signed by ST's upper-level certificate.Where can I find the upper-level certificate?
My target is a 144 pin version of the STM32H5.I would like to implement both a JTAG and a FMC interface.More specifically, a 24-bit muxed-PSRAM.And I would like to output the Byte enable signals.However on this package size, there is only one possible pin for NBL1, PA15.Which is also the DEBUG_JDI pin.Is there any way to route the value of NBL1 to another GPIO pin?
Hi ST team,I am using STM32U5G9 in my project. It would need simple firmware update feature and the image would be received by UART from a zigbee module.I have read UM2851 and AN5447 application notes and check the SBSFU example in STM32CubeU5 package (v1.8.0) in github. I believe this is what my project needs:1. MCUBOOT (Secure area)2. NS Application (non-secure primary slot)3. Nonsecure image secondary slot (for firmware update)4. Authentication and integrity check5. SWAP mode with scratch region I want to maximize the flash usage, so it doesn't need:1. Secure application2. Secure data3. Non-secure data4. Loader5. Encryption The bootloader would verify the signature in primary slot and execute the NS application. NS application would write the new image into Nonsecure image secondary slot when firmware update is needed.I would like to ask:1. How to modify the SBSFU example to meet above requirement? How should I modify below config file?- mcubo
Hello, I’m working with an STM32F446 and have configured GPIOB pin 12 as an EXTI input. After initialization and before entering the main while loop, I call a function that blocks program execution(what I mean by blocking : I have a test that stands in a blocking while until I receive the first bytes of USART reception) . In this scenario, changing the pin state does not trigger the EXTI interrupt. However, if I comment out this blocking function, the EXTI works as expected. I also observe the same behavior if I insert a while(1) loop before the main loop.Has anyone experienced similar behavior? If yes, do you know what the solution might be? Thank you in advance.Aymen
Dear ST Team,我用usb转ttl单独对4g模块发at,回复消息是正常的,单独模拟给单片机发数据,回应的数据也没有丢字符,就是4g模块跟单片机之间通信的时候存在问题When I use a USB-to-TTL adapter to send AT commands to the 4G module alone, the responses are normal. When I simulate sending data to the microcontroller alone, the data is also received correctly without any missing characters. The problem only occurs in the communication between the 4G module and the microcontroller. STM32L051C8T6Watcher List:<wang_hardware@wisetelcom.com>
STM32F429ZI Ethernet @180MHzRM0090 33.8.1 page 1197, ETH_MACMIIAR CR: max value is 100 150-168MHz HCLK/102Is this a print error (other micros in the family can only reach 168MHz) or the controller is not specified to work at 180MHz ?Thx
Hello ST Community,I'm currently developing a project on STM32H743 using TouchGFX 4.25.0 (RGB LTDC interface, framebuffer in external 16MB SDRAM) and LWIP + FreeRTOS (TCP client mode over Ethernet RMII). Everything works fine when TouchGFX is not included. However, after adding TouchGFX to the project, I'm facing strange Ethernet instability.:magnifying_glass_tilted_left: Observations:Without TouchGFX:TCP Client connects to the server reliably.No reconnection or data loss observed.Using recv() with flags = 0 works flawlessly for long durations.With TouchGFX + LTDC + DMA2D:Frequent TCP reconnections start occurring.Happens especially when using lwip_select() + recv() mechanism.If I skip lwip_select() and use direct recv() with flags = 0, reconnections stop, but after some time communication lags or stalls.:light_bulb: Hypothesis:I suspect the problem lies in AXI bus contention between:LTDC/DMA2D accessing external SDRAM (for framebuffer)Ethernet DMA accessing DTCM/SRAM or other AXI slav
hello, I need to use both touchgfx and usb msc host with stm32h743 in my project. they work fine separately , but when I add usb to my touchgfx project it does not work(all my usb implementations are based on controllerstech video). Do I need to do any different thing when they are used together? thank you for your help.
Hi All,I am currently planning a custom motor control design based on the STM32G431CUB6 microcontroller for a 3-phase inverter application.Before finalizing my PCB design, I would like to clearly understand the firmware flashing and runtime communication possibilities, especially related to Motor Pilot and real-time monitoring.I kindly request your clarification on the following points:Is the use of ST-LINK mandatory for flashing the firmware into the STM32G431CUB6 during development?Does Motor Pilot software communicate with the MCU only through ST-LINK, or can it also operate via UART?For real-time monitoring of parameters such as RPM, DC bus voltage, current, and motor status using Motor Pilot, is ST-LINK compulsory? Your guidance will help me finalize my hardware design and production programming strategy correctly.
I am working on custom evk of STM32WB05KZ sdk(stm32cubewb0-v1-3-0) on STM32CubeIDE_v_1.19.0 and STM32CubeProgrammer and trying to redirect logs on UART1 through __io_putchar/_write. It is working with Examples(GPIO_EXT, I2C, ADC, etc) but while running BLE(Any of it) section from Applications it is not giving any log through UART/Virtual COM Port. Below is the refrenced code of my main.c: /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2024 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ***************************************************************************
Hello there, First time posting here!Please let me know if I am posting things inappropriately. We are looking for a MCU and its corresponding evaluation board. Our input signal that coming into the board/MCU is 800 MHz.And our application processing speed is also at least 800 MHz. We notice that STM32N6/Cortex-M55 seems like a choice as its processing speed can go up to 800 MHz.It also has a new ST Neural-ART accelerator, seems like a good choice for our neural network process.However, we did not find a evaluation board with STM32N6/Cortex-M55 that has input PIN can digest up to 800 MHz. Anyone has any suggestions?Or is there any other combinations you should consider? Thank you guys so much!
Hello everybody! I guess that apart from the Cube IDE, the only viable option for Mac users is Crossworks, so I would like to make an LED-flash project in Crossworks just to see what this IDE can offer. The problem is that I could neither find any prepared example project nor any guide on how to make one. Please, could anybody guide me through the process? Thank you guys!
Hi,My problem is, that i want to trigger an SPI reading event, on an master timer repetition event. I registered the HAL_HRTIM_RepetitionEventCallback and start the SPI, within this function. The first problem is, that there is always a delay, that seems way too big, to start the peripheral at a CPU clock 0f 170MHZ. On the other side, that delay is not consistent, making it even harder to work with. This is a waveform i get. In pink is the clk line of the SPI, you can see, that for whatever reason sometimes 4 transmissions take place, eventhough only one dataframe was set up. When the light blue line goes high, the SPI should be triggered by the according ISR. I´m not sure, what im doing wrong, but i even set the HRTIM interrupts to the highest priority to service earlier. Here is my SPI setup. As i only want to recieve data, im using master recieve. I also tried full duplex and then i can get rid of the multiple data frames sent, but i thought this would then include du
Hello, i have a problem with I2C SSD1317 OLED display in combination with STM32. On arduino it works. On STM it works with other controllers but not with SSD1317. Display is working and address is ok (because it's working on Arduino). I tried different speeds and pullups. Arduino and SSD1317:STM32 and SSD1306: STM32 and SSD1317:Arduino code://Atmega88 SSD1317 OLED 4 pins I2C //Buffer size 384Bytes //Four 7 segment numbers are displayed. No flicker. //Decimal point and frame graphics are provided. //Without the character table, 30% of Flash and Ram are used only. static byte bufr[384] = {}; unsigned long tim , bufridx ; #define oled 0x3c const byte initcode[]= { 0xae,0xd5,0x80,0xa8,0x2f,0xd3,0x00,0x40,0x8d,0x14, 0x20,0x00,0xa1,0xc8,0xda,0x12,0x81,0xcf,0xd9,0xf1, //0x81 contrast 0xdb,0x40,0xa4,0xa6,0x2e,0xaf}; void setup(void) { TWSR=0x00; TWBR=0x02; //8M / (16+2*2)*1 = 400khz // Set pre-scalers (no pre-scaling) //TWSR = 0; // Set bit rate //TWBR = ((F_CPU /
Hello, I want to design a PCB with STM32H743VIT6 MCU. But I am not sure how can I choose crystal and capacitors properly. In STM32H743VIT6 datasheet there is one section about this topic;according to this information should I take the Cstray value as a10? (Many other documents suggesting 3-5 pf)so if I choose 16MHz 12pf Capacitor my values are gonna be like this;CL = 12pFCstray = 10pFC1 and C2 load caps,Formula : CL(crystal)=( (CL1 * CL2) / (CL1 + CL2) )+CstrayCL1 = CL2 --> C12 = ( C / 2 ) + 10pFC values are should be 4 pF instead of 12pf in the circuit ?
Moved from this thread. Why does attempting to compile this example result in these errors? ../../USBX/Target/ux_stm32_config.h:29:10: fatal error: stm32h5xx_hal.h: No such file or directory 29 | #include "stm32h5xx_hal.h" | ^~~~~~~~~~~~~~~~~
Hi everybody,I'm trying to make a bootloader in my STM32F446. The aim if this one is the possibility to update the firmware but with keeping the previous one in case of issue. So, I'll have two slots for firmware.For now, I have the following sectors in my flash :BOOTLOADER : 0x0800 0000 -> 0x0800BFFF (it only uses sector 0 & 1 for code, so I use last word of sector 2 (0x0800 BFFE & 0x0800 BFFF) to write a "magic word" which gives me the information, if we're currently running on SLOT 1 or 2).SLOT 1 : 0x0800 C000 -> 0x0800 3FFFSLOT 2 : 0x0804 0000 -> 0x0807 FFFFMy FW is running on slot 1. It receives the order to update, so it restarts, checks on which slot the new FM must be copied, writes into the flash, and starts again on new slot (and this is done at each update, so FM is running on SLOT1/2 alternatively).Everything works well, except the last step, it always run on slot 1 (even if all the code has been written in the slot 2).In the two first 32 bytes (0x0800 0000
Hello,I'm new to this STM32 products. We designed custom module with STM32F103CBT6TR. We are facing issue with serial boot loader.I'm using CH340 UART to USB converter module. CH340 MOD TX --> Our Module's RXCH340 MOD RX --> Our Module's TXCH340 MOD GND --> Our Module's GNDAnd our module is powered by USB connector.Boot mode configurationBoot 0 is HIGHBoot 1 is LOWI'm using STM32cube programmer tool.When I try to connect our module, I'm seeing the above error. Just to confirm CH340 module, I tried that with Nucleo board. With Nucleo board I can see it is able to connect without throwing any error.I tried other reccomondations which are mentioned in this community post like hold reset button and plug USB and then try pressing connect in the STM32cube programmer. But that also, didn't help. Any help will be really appreciated.Thank you.
From the ES0335 errata there are two errata that look pretty significant for dual bank boot (which I'm planning to use as the basis of field firmware update):2.2.8 Dual-bank boot not working when the boot in flash memory is selected by BOOT0 pinDescriptionWhen the nSWBoot0 option bit is set and the BOOT0 pin level is low, the dual‑bank boot does not work (BFB2option bit = 1).The user code is only executed when BANK 0 is valid.WorkaroundDo not rely on the BOOT0 pin to select the boot in flash memory. Instead, use the option bytes for that purpose,setting the nSWBoot0 option bit to 0, the nBOOT0 option bit to 1, and the BFB2 option bit to 1. This setting allowsthe correct check of the address 0 of the two memory banks, in order to execute from the correct one.2.2.9 Dual-bank boot fails with stack pointer placed within aliased SRAM2DescriptionIf dual-bank boot is selected through option bits, the bootloader checks the contents of either flash memory bankfor validity. It conside
I have an I2C device that only operates with 1.8V logic (Pins are not 3.3V tolerant) that I want to connect to the STM32N6. I don't want to add an I2C redriver if I can avoid it. I want to keep as many of my I/O pins on the STM32N6 powered from 3.3V as I can. Which power rail on the STM32N6 determines the logic high voltage for the I2C bus? I want to use the 1.8V rail on my design for the I2C SDA and SCL pull-up resistors.Thanks
Greetings everyone!I've been quite busy this year with other MCUs and haven't been able to continue my STM32 learning, but this year, 2026, it will be a priority. With that in mind, I've already started creating project templates with LwIP and other protocols, as well as useful drivers and libraries to facilitate my work.The big difference is that I'm releasing these projects as Open Source under the CC-BY-4.0 license, which will allow others to use them and learn along with me. I'm also open to suggestions to enrich these examples. Another great advantage is that I'm using CMake. I chose this approach to make project creation as easy and decoupled as possible.The pileline works as follows:* You can create the project via CubeMX, inserting all the necessary resources and middleware.* Then, simply make the desired adjustments and customizations.* From this point forward, the project build orchestration will be entirely via CMake.If any colleague would like to contribute to this in
Heyho,I'm working with a STM32G431 on a Nucleo-32.I've played with it before some years ago, so I already put on a 24 MHz crystal "HSE".I'm using only the in-built ST-Link's USB power as a source.Problem:after connecting USB, the reset button must be toggled to start the controller.Any ideas how this can be prevented?We want to use the Nucleo for some in-house testing, and it would be nice if the controller started instantly at power-up without the reset button (which might be "hidden" in a small case).Google and search here didn't really show this problem.Thanks!
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.