Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
We have both a very RAM constrained and space constrained board. So the OctoFlash chips are larger then i would like. So being able to XIP off a spi flash that only has 4 SPI lanes would be very helpful. I just don't know the ramifications of something like this. If we have like 200 Mhz chip flash Chip, in spi 1-4-4. Will this cause a significant delay? I'm guessing all these instructions get loaded directly into the instruction cache which is only a few KB of storage. If you think this is a valid option. Does ST have any parts for this? If I use a different Flashchip. Will i have a hard time programming it with the standard ST? Related question * Limitations of flash
Hello ST Team,I am working with the X‑NUCLEO‑67W61M1 Wi‑Fi 6 & BLE NCP expansion board and I need to flash the Mission Profile T01 firmware to the ST67W611M1 module.The official X‑CUBE‑ST67W61 package supports flashing only through the following Nucleo boards:NUCLEO‑U575ZI‑QNUCLEO‑H7S3L8NUCLEO‑H563ZINUCLEO‑N657X0‑QI currently do not have these boards.Instead, I have:NUCLEO‑U545RE‑QMy goal is to flash X‑NUCLEO‑67W61M1 using NUCLEO‑U545RE‑Q as the host board.According to the ST Nucleo documentation, the NUCLEO‑U545RE‑Q and NUCLEO‑U575ZI‑Q boards are nearly identical in terms of Arduino pinout and electrical compatibility, so the Wi‑Fi shield connection is valid.However, X‑CUBE‑ST67W61 does not provide any ready‑made binaries for NUCLEO‑U545RE‑Q.When running the official script:Projects\ST67W6X_Scripts\Binaries\NCP_update_mission_profile_t01.batthe process stops at:Board ID NUCLEO-U545RE-Q not recognizedThis happens because the package does not include:NUCLEO-U545RE-Q_Binaries\
I have watched ST's offical YouTube series about bootloder and I found it very clear and helpful.That series: https://www.youtube.com/playlist?list=PLM7yYW7w7MWms-Um-dHxbftXRUFT74u9lI was able to understand the general workflow and main ideas. However, I still feel that I have some missing points, especially the pratical and low-level details.I am a junior embedded software developer and I would like to properly learn bootloder and OTA update concepts from the ground up.That's my questions are here : 1) From which topics should a junior embedded developer start in order to understand bootloader and OTA mechanisms correctly ?2) What fundemental topics should I focus on first ?3) I have several discovery and nucleo boards, and my goal is to implement a very simple bootloader or OTA demo on one of them. Any guidance, recommended learning path or simple example project suggestions would be greatly appreciated.Thank you in advance.
Hi everyone, I’m asking for your help with accessing my SD card. I’m running into an issue with the STM32N6DK750 Discovery Kit and would really appreciate some advice. I’m trying to write data to an SD card using FileX and ThreadX. Everything compiles and debugs fine, but nothing actually gets written to the card. I also tried the FX_MultipleAccess example provided by ST, but it doesn’t compile. I’ve tried fixing several compilation errors, but some declarations are missing, like byte_pool in app_filex.c. I’m not sure what’s causing the issue, and I’m wondering if I might have missed an important step or misconfigured something.
[VERSION]: 6.2.1[TOOL]: Motor Profiler in Motor Pilot V1.2.5[DETAILS]:Motor Profiler gets stuck while profiling at "Profiling % 28".Hardware used is the inverter-board B-G431B-ESC1.[EXPECTED BEHAVIOR]: I expect the motor profiler to either finish the process or abort with an error so that I can fix any existing issues.[HOW TO REPRODUCE]: Motor is soldered to the inverter-board, power supply connected and set up to deliver the correct voltage and enough current (12V, 30A). Motor Profiler is started and connects successfully. The required motor parameters are entered accordingly. The profiling is started. At 7%, the motor twitches once, and at 21% the motor hums for half a second. Maximum observed current is around 2.5A until then. Then the process gets stuck at 28% until the notification pops up that the measurement takes too long. The board pulls standby current.
Hi,I'm developing a camera interfacing application. I've used GPDMA in linear-circular mode. But, now I have to handle larger resolution(640x480). Is there any application example from where I can start configuring DMA in CubeMx?
Hello,I'm using uSD.I observe that in the sd_diskio.c driver SD_TIMEOUT is 30sec, is'nt very long ?If uSD works normally is not sufficient just 1sec ? Best regards.
Hi, I'm designing the board for STM32H755IIK6. My power supply plan is SMPS + LDO, since I want to use 480MHz speed. I wonder if there are better recommendations about 2.2uF VCAP placement. There are three VCAP pins, but two 2.2uF capacitors are instructed to use in reference design. On the other hand, capacitors should be placed near VCAP pins. So how to place two capacitors near three pins A4, A14 and R13? It looks like MB1520 does not have capacitor near A14. Is that correct implementation?
When I write code, should I keep the microcontroller on, or turn it off and only turn it on when I want to test the code?
Hi,we are using the STM32H7R7I8T6 MCU with an Infineon S70KL1282 HyperRAM Chip attached on XSPI1 and configured via CubeMX, we are looking for an example for the correct timing/parameters to use the RAM Chip in memory mapped mode as Graphics RAM.Our current config makes makes reading and writing possible but the memory contains garbarge data.We are repeatedly trying to write the string "1234567890" into the external RAM but we get back the following:The current config is built from various other examples we could find like this one: https://github.com/STMicroelectronics/STM32CubeH7/blob/master/Projects/STM32H735G-DK/Examples/OSPI/OSPI_HyperRAM_MemoryMapped/Src/main.c but the parameters do not match exactly. Our current code looks like this:/** * @brief XSPI1 Initialization Function * @PAram None * @retval None */ static void MX_XSPI1_Init(void) { /* USER CODE BEGIN XSPI1_Init 0 */ /* USER CODE END XSPI1_Init 0 */ XSPIM_CfgTypeDef sXspiManagerCfg = {0}
Why is it that when I set the clock frequency of the STM32 to a high frequency (180 MHz), the code will crash, but when I set it to a low frequency (72 MHz), the code can run normally?
Hi, I know that currently STM32WB0 is the only family of BLE MCU that currently supports BLE PAwR, but this MCU is very limited in terms of on-board peripherals, RAM and other features. The STM32WBA series looks like a promising candidate for one of our upcoming projects (industrial sensor nodes application), but unfortunately it seems it does not support PAwR. So I wanted clarity on if there is any plan to support PAwR in the near future on STM32WBA chips? Best Regards,MCM
Following this thread Solved: USBPD EPR Source - STMicroelectronics Community Do you have a similar guide on how to do EPR as a Sink?
Hello ST Support Team,I am reporting a regression issue with the latest STM32F0xx Device Family Pack (DFP) version 3.1.1 when used with Keil MDK 5.43a.Problem Description:Installation Issue: The DFP 3.1.1 often fails to install via the Pack Installer, showing validation errors or failing to resolve dependencies.Missing Registers: Even when successfully installed, the System Viewer in Debug mode is empty. Peripheral registers (GPIO, RCC, etc.) do not appear for the STM32F030 series.Environment:IDE: Keil uVision v5.43a.0Device: STM32F030xx (all variants)Pack: Keil::STM32F0xx_DFP.3.1.1OS: Windows 11Observations:The issue seems to be related to the new SVD (System View Description) file structure or pathing in the 3.x.x branch.Manually pointing to an older SVD file (from DFP v2.2.3) restores the register visibility.The "System Viewer" list in the "Peripherals" menu remains blank when using the default settings of the 3.1.1 pack.Request:Please verify the compatibility of the SVD files in th
I have a question about writing to the STM32F410's FLASH.I'm creating a program to write data received via USART to FLASH, but it's not working correctly.The writing to FLASH itself is happening, but the written data differs from what I expect.This different written data contains a large number of “0xAA” values that are not present in the original data.Do you know what might be causing this phenomenon?void FLASH_UNLOCK(){ while ((FLASH->SR & FLASH_SR_BSY) != 0){ } if ((FLASH->CR & FLASH_CR_LOCK) != 0) { FLASH->KEYR = 0x45670123; FLASH->KEYR = 0xCDEF89AB; } } void FLASH_DELETE(uint32_t address){ while ((FLASH->SR & FLASH_SR_BSY) != 0){ } FLASH->CR |= FLASH_CR_SER; FLASH->CR |= (FLASH_CR_SNB & 0x8); FLASH->CR |= FLASH_CR_STRT; while ((FLASH->SR & FLASH_SR_BSY) != 0){ } if ((FLASH->SR & FLASH_SR_EOP) != 0) { FLASH->SR |= FLASH_SR_EOP; } else { } FLASH->CR &= ~FLASH_CR_SER; } void FLASH_Write
I’m a beginner with TouchGFX, and I’m wondering whether it’s possible to make touch input behave the same way it does on mobile smartphones. Specifically, before a drag event is detected, the finger must move a certain number of pixels.What I’d like is this: when a press event is first detected, you check whether the user has moved their finger at least 10 pixels, and only then do you start moving the screen. However, once that threshold is reached, the screen should move starting from 1 pixel. When the user releases their finger, a release event occurs and everything is reset, so that after the next press event, the finger must again move 10 pixels before a drag event can occur.Is it possible to implement this behavior? I tried using setDragThreshold, but then the entire screen scrolls by the number of pixels specified as the threshold. Is it possible to change setDragThreshold dynamically in the view?
Hello, Developing a firmware to update the application via Bootloader over USART2. But, the STM32U5G9BJYXQ is not responding on 0x7F. The MCU is successfully starts from the NSBOOTADD1(0x0bf90000) on driving the BOOT0 pin high while deasserting the reset. The USB-USART tool is sending a proper 0x7F, verified by oscilloscope. Please point to what I might be missing.
Hello,I use STM32 Motor Control X-CUBE-MCSDK. I currently am on this stage - please see screenshot attached. For my project, I use two gimbal Sparkfun 3-phase BLDC electromotors with the encoders AS5048A. Right now, I have just one motor, see the screenshot. Could someone please clarify how to add the second motor? I also need to add two brushless 3-phase motor-drivers https://www.sparkfun.com/sparkfun-brushless-motor-driver-3-phase-tmc6300.html#content-documentation and one power board (9V 5A step down voltage regulator) https://www.pololu.com/product/5576 instead of the X-NUCLEO-IHM11M1 power board. Could you please clarify how to add them? Thank you.
I'm building a little tester for 6821 PIA using a STM32F103.I need to be able to write to the data bus of the PIA, and also read from it. (6821 has 4 registers that are addressed using 2-bits input RS0,RS1).So 8 GPIO pins for the databus. And I use 3 more GPIO pins for RS0,RS1 and R/W pin.For writing to the PIA:I set the GPIO pins to output, set the output pins actual data and then make R/W low for writing.For read from the PIA:I set the GPIO pins to input, make R/W high for reading and then read the input pins..Does that sound right? I'm concerned about the timing between the GPIO data bus pins switching from output to input (and back) and then toggling the R/W line to the PIA. Is all this switching even needed?
Hi here. I am trying to get STM32H743iit as usb_audio_device with CubeMX latest version.No initialization of stm32 sound device in windows 10 device manager.Other projects from this link https://www.waveshare.com/wiki/OpenH743I-C especially USB_FS, USB_HS working good, but in windows devise manager no descriptors info in usb device properties windows for HID project. Could somebody help where i am got problem with usb_audio_device? I change VID, heap size but it is do not help. Please help.Regards
I'm trying to interface a TI ADC with an STM32U575ZI or STMU545RE (same issue on both Nucleo boards).The ADC has a "data ready" pin that needs to trigger a fixed-size transfer of 32bytes over SPI. Given the overall sampling rate, only a few microseconds are available for overhead. Seems like a natural fit for the autonomous mode + DMA features on the STM32U micros, but I can't seem to figure out how this is supposed to go together.I can get one transfer going no problem, sometimes two, but something always errors out. Currently getting a MODF flag, which makes no sense based on the documentation as the NSS system is set to "software" and always at 1.Is there a document describing how the DMA and SPI modules interact under autonomous mode? I'm clearly missing something important here. Handshaking, what causes the TSIZE to reload the CTSIZE register, recommended DMA configs + trigger setups, anything?Working on putting together an example for people to disse
Hi, I am facing an issue while connecting to my board using STM32CubeProgrammer and ST-LINK. I would appreciate any help. Board: NUCLEO-F072RBProgrammer: ST-LINK (Onboard)Software: STM32CubeProgrammerConnection: SWDST-LINK Firmware: V2J46M31 Issue Description:STM32CubeProgrammer is unable to detect the target MCU. It shows errors like: Unable to get core ID No STM32 target found ST-LINK error (DEV_CONNECT_ERR) Observed Details: Target voltage showing around 0.29V Connection mode tried: Normal (SWD) Reset mode: Software reset Speed: Reliable Frequency: 4000 kHz Log Messages (Important Parts): Error: Unable to get core ID Error: No STM32 target found! ST-LINK error (DEV_CONNECT_ERR) Error: Problem occurred while trying to connect What I Already Checked: USB cable and port Reinstalled STM32CubeProgrammer ST-LINK firmware upgrade option checked Tried reconnecting multiple times Questions: Is the low target voltage (0.29V) the reason ST-LINK cannot
I'm using the link below to select boot path and do secure boot device provisioning for my STM32H563 board:https://wiki.st.com/stm32mcu/wiki/Security:How_to_start_with_STM32CubeMX_OEMiRoT_Boot_path_on_STM32H563Boot path is configured as follows:I have run provisioning.bat, the product state was set to PROVISIONED. The provisioning was successfull, with logs at the end of ob_flash_programming.log:OPTION BYTE PROGRAMMING VERIFICATION:Option Bytes successfully programmedTime elapsed during option Bytes configuration: 00:00:01.334Programming successHowever, inside ob_flash_programming.log, it also shows:PROGRAMMING OPTION BYTES AREA ...Warning: Option Byte: boot_ube, value: 0xB4, was not modified.Warning: Option Byte: hdp2_end, value: 0x0, was not modified.Warning: Option Byte: secbootadd, value: 0xC0000, was not modified.Warning: Option Byte: secwm2_end, value: 0x0, was not modified.Warning: Option Byte: sram2_ecc, value: 0x0, was not modified.Warning: Option Byte: sram2_rst, va
We have a design that has been working fine for some time now using STM32G071CBT6 in LQFP48 but a new batch is suddenly failing with ADC readings from VREFINT that are quite a way out of spec.Previous versions have always been slightly low - reading maybe ~3.15v on a ~3.25v supply voltage but that's always been "close enough", but now the latest batch of devices are dipping below 3.0v on the same ~2.35v supply and triggering our under-voltage detection.We are monitoring a few voltages using the ADC, including the supply voltage which is commoned with VDD/VDDA, VBAT and VREF pins - decoupling is per the power supply scheme shown in the datasheet DS12232.VREFBUF is disabled.Since we are not worried too much about absolute accuracy, we are not running the calibration routine on the ADC.System clock is 16MHz and ADC sampling is 79.5 cycles, ADC resolution is 12 bit.The ground pin is solidly grounded, supply voltage going into the pins is ~3.25v and I can't see any significant current being
Found a bug with RX_POOL buffers been permanently used. There are total of 12 buffers defined by default. Adding more buffers will prolong the operation, but eventually all of them will be permanently locked. Using the latest available from ST LWIP stack. Our configuration: enabled ARP, ICMP; TCP server with 5 available connections. As soon as a whole buffers are locked, the ethernet driver won't process any incoming packets. Soon after start the number of used buffers goes from 0 to 4 with no active TCP or UDP communication, just a normal network activity. Once TCP communication is started, and if there is no traffic congestion like opening several connections at the same time or sending too many packets, LWIP may function without a problem for days, which makes finding the issue with losing the ethernet communication difficult. The number of available buffers may go down one-by-one. Opening several connections simultaneously and starting the traffic on all of them locks the buffers i
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.