Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Posting mostly to record some data on a pretty data-free topic. How long after reset is released does the state of the BOOT0 pin get sampled? On the STM32F413 in particular, but it would be good to know how consistent the spec is. The official docs always just say "pins are latched on the 4th rising edge of SYSCLK after a reset" (or possibly "of startup clock"), but are never clear on when SYSCLK starts. I figured I had a few 10's of µs to play with, but it turns out I was wrong.This scenario is not fast enough: Blue is my BOOT0/NRST signal generation trigger and not important here. Magenta is NRST and cyan is BOOT0.At the trigger ("T") point NRST is asserted and the STM32 reliably goes into reset (after a <1µs glitch filter). 70µs later I simultaneously release NRST and drive BOOT0 low with the intention of a normal Flash boot. It is not successful, and the STM32 enters the bootloader instead.The logic thresholds are here: and my Vdd is about 3.15V. So NRST shou
PM0223 STM32 Cortex®-M0+ MCUs programming manual (Version 9.0, 20 Jun 2024)
I have a custom board. Right now we have a "template project" which is mostly a stripped project and we have a customer project. We periodically merge some changes between them. Instead of copying the template project and modifying it I would like to be able to use it as a board in TouchGFX designer directly. This will be important when we will use the board for more than 1 customer.I followed the instructions, but the board doesn't show up.I followed these instructions: https://support.touchgfx.com/docs/development/scenarios/scenarios-create-atI stripped the project.My project structure is:C:\source\company\company-stm32-touchgfx-hmi-bspC:\source\company\company-stm32-touchgfx-hmi-bsp\.gitC:\source\company\company-stm32-touchgfx-hmi-bsp\DocC:\source\company\company-stm32-touchgfx-hmi-bsp\Source\MiddlewaresC:\source\company\company-stm32-touchgfx-hmi-bsp\Source\TouchGFXC:\source\company\company-stm32-touchgfx-hmi-bsp\Source\TouchGFX\company-STM32-TouchGFX-HMI-BSP.touchgfxI closed
On a couple of internally developed boards based on an architecture combining an STM32F407 and a KSZ8863RLL, I have experienced failures on the latter chip that I cannot explain. The issue manifests as intermittent communication with the TCP client that pings the board. Occasionally, it seems that some packets are lost, causing the communication to drop out and then resume, only to fail again after a short while. I suspect that the environment in which the board is used might be subject to ESD events or overvoltage conditions caused by imbalances in the differential voltage on the bus. Since we are in an industrial context, it is standard practice to connect the digital grounds of the boards and power supplies to earth. The suspicion that the problem is due to internal damage of the chip is supported by the fact that, on these faulty boards, replacing the KSZ8863 restores normal operation without any interruptions.
I’m testing low-power modes on my STM32 B-L072Z-LRWAN1 board and measuring the current consumption. When I measure the current using a Xiao PowerBread, I get around 20 mA on the 5 V rail, even when the MCU enters Sleep Mode. My question is whether the on-board LEDs (LD5 and LD7) could be masking the expected drop in power consumption. According to the board documentation: LD7 (Red) is the 5 V Power LED, which is always on when 5 V is present. LD5 (Green) is the ST-LINK COM LED, powered from the ST-LINK interface and active during communication. Since these LEDs are powered from the 5 V rail and the ST-LINK section, they remain on regardless of the MCU power mode. So my questions are: Can these LEDs (and the ST-LINK interface) prevent me from seeing the real power drop when the MCU goes into Sleep Mode? What is the best way to measure only the MCU’s current consumption, excluding the ST-LINK and LEDs?Should I remove some jumpers or power the MCU directly through the VIN V pin?
HI,I am currently working on an Ethernet project using STM32F765IIT with the LwIP stack .I have configured the MAC and PHY (DP83848/DP83842) in MII mode, and link status is active.Now I want to verify Ethernet communication by implementing the ping (ICMP Echo Reply) functionality.Could anyone please share:Example code or reference project for STM32F765IIT + LwIP that handles ICMP Echo requests (ping)?Or guidance on how to properly configure LwIP for responding to ping commands?My setup:MCU: STM32F765IITInterface: MII (PHY: DP83842)Toolchain: STM32CubeIDECubeMX: Ethernet + LwIP (no RTOS)Any working example, configuration tips, or LwIP settings related to ping would be greatly appreciated.Thank you,Sreerag
Hi,I have downloaded and installed STM32CubeIDE version 1.18.1, and created a new project for the STM32F042C6T6 chip. For this chip, the latest available firmware pack is STMCube MCU Package for STM32F0 series version 1.11.5.When I install this firmware pack and open it from the STM32Cube / Repository directory, I can see that in the middleware folder I have the STM32 USB middleware library version 2.5.3. This is apparent from the Relese Notes file present in the directory.In GitHub, the latest available version for the STM32 USB middleware library is much newer, version 2.11.4 which contains all the nice things I need such as support for USB composite devices. I have already reviewed the post https://community.st.com/t5/stm32-mcus/how-to-implement-a-usb-device-composite-in-stm32h5/ta-p/708078 found from this forum but this link only deals with STM32H5 which is a completely different MCU from my meager F0.My main question then is, how can I use the latest STM32 USB middleware
It should be purple, but it shows up as blue. background is svg picture is normal.
Hi everyone,create the cubeide project for onboard PDM MEMS microphone on stm32 discovery kit. 1- I2S22-Mode: Half Duplex Slave3-DMA Settings -> add -> SPI2_TX Problem in section 3 . I cannot see the SPI2_RX which I will get the PDM peripheral to memory. As much as I know that is the right. Also I watched a video it is the same. Where is the problem. New version of software has problem? Or I can do something for it? Thanks for help in advance.
How I get the software stack/firmware library stack with LoRaWAN for STM32WLE5xx MCU (other than Seed Studio Library) ?. In github, stm32wl repository only has a STM32WL55JC drivers alone. Is there any possibilities to get a firmware stack for STM32WLE5xx ? If anyone have an idea kindly let me know.
I purchased the X-NUCLEO-GFX01M2 with the Nucleo-L476RG eval board.The example project "Hello World" came with six image files (Image1.h - Image6.h).This project built okay, and the canned images appeared correctly.Next, I tried to use my own images instead of the canned images. The images list array must be modified to match the width and height of each new image used.The following are problems that I encountered, or extra tasks required:1) My images are JPG format, but Touch GFX only accepts PNG or SVG. I had to use Photoshop to convert them.2) The images next had to be cropped and resized for the LCD display.3) Touch GFX was next used to generate the proper image string array files for the project in place of the Image1-6.h files.4) Even though the original "Hello World" image files were .H files, and 16-bit (word) arrays, Touch GFX generated .CPP 8-bit (byte) arrays. This also made the text files almost twice as large as a word array file (0x12, 0x34 vs. 0x1234).5) Since
Hi, I'm working on a TouchGFX ( version 4.18.1) project using the STM32F746IGT6 controller.. The issue I’m facing occurs intermittently — the code sometimes fails to enter the while loop inside int main(). During debugging, I noticed that the entire code is executing and suddenly the console repeatedly displays the following message: Target is not responding, retrying... Target is not responding, retrying... Target is not responding, retrying... Target is not responding, retrying... Although the system doesn’t shut down, the display freezes as a result. When I pause the execution and step through the code, it appears to be looping within the ISR, and I see the message:0x080bec0e in touchgfx::ConstFont::find(unsigned short) const () set *(int *)0xE000EDFC=*(int *)0xE000EDFC|0x7F0. For reference, here are the hardware components used: External Flash: IS25LP512M-JLLE-TR SDRAM: NDS63PT9-16IT The screen freeze also happens even when the code is not in debug mode.I
Hello Everyone!I am running TouchGFX with ThreadX. When I add a new object, TouchGFX does not display anything.The settings for TouchGFX are as follows:1. ThreadX2.TouchGFX3.TouchGFX DesignerI just created a box for the background. TouchGFX is working well. TouchGFX doesn't display anything when I add an image to this screen, as shown below. Could you please give me some suggestions? Thanks in advance.
Hi,I would like to manage .bmp (with alpha channel for transparency) stored in flash and show it as it was included in the application via Touchgfx designer.In other words I would like to customize my application with this bitmap simply uploading the bitmap and not flashing the whole applicationAt the moment I am able to load from usb .bmp file and store it in a memory portion of the internal flash working as a storing device.I understand it is possibile to manage dynamical bitmap via the useful tutorial I found in the documentation, but I don't know if it works with .bitmap with alpha channel.Do you have any suggestion for me?Best regards.Davide
Hi everyone,I started designing PCBs last year and have completed a few projects using Arduino and ESP32. For my new project, however, I need to use an STM32 microcontroller. I could technically use an ESP32 as well, but STM32 is more suitable for industrial applications, so I decided to switch.I already have a STM32F401CCU6 Black Pill board, and I can use that chip — but I’d like to ask for advice: Is there a better STM32 option for my project?Here’s a brief description of the project:I’m building a Vehicle Control Unit (VCU) for the Teknofest Efficiency Challenge Race. The race is mostly focused on minimizing power consumption.In the VCU, I need to connect and manage the following components:3 × DS18B20 temperature sensors1 × Hall-effect or proximity sensor1 × LoRa module1 × SD card module1 × Nextion HMI screen1 × relayAny suggestions or guidance about which STM32 chip would be most suitable are greatly appreciated.Thanks a lot for your help!
Hi.I'm not very familiar with STM32 yet.Can STM32F103 delay up to 62ns or 125ns to raise GPIO and lower it again during that time interval?Thank you :)
Hello,I had a problem with Nucleo H723ZG ADC, i needed ADC error to be less than 1mV and a sampling rate of 2.5MSPS, but the built-in ADC was having errors around 20mV. (topic).So i decided to proceed with an External ADC, ADS9219 The problem with this one is that the interface for this ADC is Serial LVDS, when i looked it up on the MCU datasheet, i couldn't find anything on it. Is it possible to interface LVDS with the board. A quick look on the internet also suggests use of converters , for LVDS to peripherals like SPI. If you have some information or experience with this, can you help
DescriptionCurrently, in the HAL USB driver, the PCD_HandleTypeDef structure embeds the setup packet buffer directly:uint32_t Setup[12]; /*!< Setup packet buffer */ This design tightly couples the control structure (state, locks, callbacks) with a DMA-dependent buffer. As a result:When USB OTG FS/HS DMA is enabled, the entire PCD_HandleTypeDef must be located in a DMA-accessible SRAM region.This prevents developers from keeping the handle itself in faster memory (e.g. DTCM) while only placing the setup buffer in SRAM.It reduces flexibility and forces a performance compromise.SuggestionThe setup buffer should be separated from the handle:PCD_HandleTypeDef should only store a pointer to the setup buffer.The actual buffer can then be allocated by the user in a proper memory region (DMA-accessible SRAM).For example:uint32_t *Setup; /*!< Pointer to setup packet buffer */ This would make memory placement more flexible:Developers can keep the handle in DTCM for fast CPU access.Onl
Hi,There is a STM32F407 on my board to configure and control the optical module. Also, STM32F407 use SPI to interface with CPU. STM32F407 work as SPI slave mode, and CPU work as master mode. Some protocol require one flow control byte in SPI timing, such as OIF protocol. My understanding is :For read operation. After slave receive the operation code and address, slave need time to prepare data according to address then put the data into TX_Buffer. This all will be finished in the one clock period as below red mark shown. If slave can't finish the job in time, slave must inform to host through flow control byte .My question is whether flow control byte is needed in the SPI frame for STM32F407?or it can mitigate this issue through reducing the SCK frequency, not through flow control byte? Thanks in advance!Best regards!Jason
HelloWe are considering STM32 based processor for our next generation of products and would like to talk to a security expert with ST to discuss achieving CRA compliance.The "contact" page on the website down not provide a way to contact ST in the UK.
Hello all, I have been struggling with DMA transfers from SPI transactions and would love a second opinion on what I could be doing wrong. I have confirmed that polling works and I can corroborate the data I see in the RX registers with a scope. I do not use the HAL API for SPI receptions with DMA, I am mostly using low-level register modifications to trigger read/writes from the SPI peripheral, although I do use the initialization of the peripheral that is generated by Cube IDE.I was looking into why the DMA destination buffer was not being filled, when I realized there was something wrong with the SPI transaction itself. According to the RM, the DMA will make a request once RXP is set and it is automatically activated according to `RXWNE` and `RXPLVL`. When inspecting these register during the transaction I see that `RXWNE` is set to 1, meaning there is, at least, 4 bytes in the RX FIFO. RXPLVL itself reads all zeroes since the data size is larger than 16 bits, so I don't s
Possible Bug in HAL_SD_InitCard Hello wonderful STM community!I have identified a possible bug in the HAL Layer for the SDMMC peripheral. First time filing a bug report so please let me know if I miss anything import or if I'm completely wrongSystem InfoMCU: STM32H5Firmware Package: STM32Cube FW_H5 V1.5.0Board: CustomCubeIDE Version: 1.18.1Please ask if anything else should be included here! BackgroundFor a (u)SD to init it needs the clock speed to be slowed down to 400 kHz or lower, init commands and are then sent before the clock is then taken back up to speed. See this electrical engineering post for a good explanation and further reading.Symptoms uSD does not init correctly and does not return card info Cause In the file stm32h5xx_hal_sd.c (under HAL Drivers) and the function:HAL_StatusTypeDef HAL_SD_InitCard(SD_HandleTypeDef *hsd)There are two relevant lines:Line 494: Init.ClockDiv = sdmmc_clk / (2U * SD_INIT_FREQ);Line 519:sdmmc_clk = sdmm
At STM32G431 Is it possible to make a (SPI daisy chain) shift register with one cyclic ringbuffer.With SPI peripheral as Full duplex Slave, with 2 DMA (RX TX) channels. "HAL_SPI_TransmitReceive_DMA(SPI_GetHandle(), ringbuffer, ringbuffer, SPI_size); "And stop DMA once NSS external pin interrupt accors ( rising edge). Or in other words read and write to same buffer in dma is that possible?I tested and it was working. Is this lucky or indeed possible, because SPI Transmit (read from buffer[x]) always happens before receiving (write in buffer[x]) from same index and therefore always guaranteed it works ?
Hello I tried a blinky code which works with an other disco board I bought several months ago and it doesn't work with the new one. I tried it in debug mode and I'm stuck here.void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) { } /* USER CODE END Error_Handler_Debug */ } I saw in the forums that can be the power supply choice but it's the good one here I think I know my code works but it doesn't with newer boards, I bought the newer boards 3 weeks ago. Do you know what's happening here ?Regards
Hello,I am having trouble memory mapping both OSPI ports at the same time. Can I run a QSPI Flash on OSPI1 and a OSPI Hyperbus RAM on OSPI2 and have both be memory mapped or do both OSPI ports need to be running in the same mode to be memory mapped?Thanks,Dan
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.