Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Reference Board: Nucleo-H753ZI (MB1364, ST-LINK V3, rev B) Summary We have an external UART sensor (WitMotion HWT9053 IMU) connected to the Arduino D0/D1 header pins on a Nucleo-H753ZI. The sensor is confirmed working on Arduino. We have verified all USART register configurations are correct at the hardware level. A full GPIO scan of every MCU pin (PA0–PG15) shows zero toggling signal from the sensor. We suspect a board-level routing issue (solder bridges) but need ST guidance. Approach History Phase 1: Custom STM32H7 Firmware We wrote custom firmware using STM32H7 HAL to communicate with the sensor at 57600 baud via USART1 on PB6(TX)/PB7(RX). Console output via USART3 PD8/PD9 (ST-Link VCP) works correctly. Phase 2: Porting Vendor F1 Reference Code to H7 We also ported the sensor vendor's official STM32F1 sample code to STM32H7 HAL. This scans all standard baud rates (4800–921600) and attempts to detect the sensor. Same result — zero bytes received. Phase 3:
I realized that in my discovery board with STM32F411VE the accelerometer/magntometer is lsm303agr and not lsms303DLHC. I would have an updated schematic.
Dear, Can you confirm that OCTOSPI P2 is available only on WLCSP208 and TFBGA216 packages of this series? I wanted to use both OCTOSPI interfaces in LQFP144, but noticed that there is missing only OCTOSPIM_P2_IO3 line in it, so my conclusion is that LQFP144 supports only one OCTOSPI. Is that right? Thank you.
Hello everybody, I am new here so please let me know, if there is important information missing. Thank you already for you time! I set up a STM32U575I-EV board for communication with CAN. The STM Board, a PCAN-USB dongle and an Oszilloskope are connected to the bus. The Bus is terminated correctly with two 120 Ohm resistors. I use the HAL libraries to interface with the FDCAN peripherie. The jumpers from the eval board are set to connect PB9 and PB8 with the CAN transceiver and to disconnect PB8 from the USB-C PD-interface. To test the setup I send dummy frames (ID: 0x000, DLC: 1, Data: 0x00). The frame is visible on the Bus and also the ACK from PCAN is visibile. PCAN USB has a 200mV higher voltage on CAN High 0 level. Here is the dummy frame on the Oszi: As you see on the the screenshot, the ACK is there and even though I put only one message in the Tx-Buffer of the FDCAN, it retransmitted. Here is my code: main.cint main(void) { /* MCU Configurati
Hi,programing NBOOT_SEL and WRP in the firmware leads to strange behavior of the MCU. After running the code below and reseting the MCU, I can still debug with CubeIDE to some extent by connecting without downloading the firmware, but I can only see that the MCU is stuck in a hard fault. CubeProgrammer cannot read either flash or option bytes. If I try to reset the option bytes anyway, I lose the connection to the MCU completely and it is no longer recognized by CubeProgrammer.The behavior is not always the same either. On my first attempt, I was able to debug the code several times and see that it works correctly in principle. Resetting the WRP with CubeProgrammer also worked. However, I have now lost my second MCU.I develop a minimal bootstub for STM32C011J6 and therefore do not use the HAL. Is there an error in the code, that can lead to such a behaviour? Thank you in advance for any hints or guidance. typedef struct { volatile uint32_t ACR; uint32_t RESERVED1; vo
quectel bg96 does not reply to messages from stm32l496ag on kit board p-l496g-cell02 but since I bought it. I could not even start blink the led on bg96 so I assume there is something missing to me. I use usb cable to stlink com and debug from the software but never had a response from bg96 after sending at commands. What I can do about? thank you. Marcello
Hi, I am using the STM32L4 B-L475E-IOT01A board with Wi-Fi module Inventek system ISM43362-M3G-L44.I have seen the example WiFi projects but they do not have the .ioc file. So my question is, is there any middleware available in STM32CubeMX which can help me implement WiFi connectivity via USART? The communication interface between the stm32 board and the WiFi module is SPI3 by default but the documentation says that use of USART3 is also possible, and USART3 is what I want to use.So any easy ways to do that? Any available middleware in CubeMX? Or is any example project available online?Thanks!
I am currently evaluating microcontroller options for our project and need your support in identifying a suitable MCU.Our key interface requirements are as follows: 2× MDIO interfaces,3× I2C bus interfaces If you could recommend an MCU that supports these features or share any relevant technical details/datasheets, it would be very helpful.If not, please also suggest alternate part numbers that can meet this requirement.
As mentioned in the title already, the file core_cm4.h is not contained in the recent version of https://github.com/STMicroelectronics/STM32CubeG4 anymore.Selecting the v1.6.1. in that repo the file is contained. Looks like there was an error genererating the new version.
I am experiencing issues powering the STM32H755ZIT6 MCU on our custom board. The schematic has been derived from the NUCLEO-H755ZI-Q development board reference design, and we have verified that there are no apparent design or assembly errors. However, the MCU fails to power up as expected. All VDD pins are connected to an external 3.3 V supply (VDD_MCU). For the power supply configuration, we selected the default internal SMPS-only configuration, identical to the NUCLEO-H755ZI-Q board, as detailed below: VDD_MCU is connected to VDDSD (pin 16).VLXSD is connected through a 2.2 µH inductor to the VDDLDO pins (70, 105, 143) and the VCAP pins (68, 103, 140).In CubeIDE, PWR_DIRECT_SMPS_SUPPLY is selected under RCC > Power Parameters > Supply Source.Power Regulator Voltage Scale 3 is selected under RCC > Power Parameters > Power Regulator Voltage Source. When powered from the external 3.3 V source, both VDD_MCU and VDDSD are at 3.3 V; however, there is no voltage present a
I am a fan of STM32, especially the peripheral sets offered are great. Over the years however, one type of peripheral is missing which would be a great help for many projects, this is a programmable logic cell.Such a cell would contain elements like Flip-Flops, Look Up Tables and such that can be configured for specific functions. For instance using the LUT's, it would be possible to create all kinds of logic operations like AND, OR, XOR gates.Using the Flip-Flops, I would be able for instance to create a clock gate, which I needed in my last project. There I needed an external clock signal to propagate to other peripherals and be able to enable/disable this. In the end I manage to create this function with a timer but this unfortunately generates something like 9 clock cycles of latency limiting the maximum frequency of the external clock signal. A basic Flip-Flop solution would probably introduce a much smaller latency.Competing products offer this kind of functionality more and more
Hi ST Community,I am new to ST and hope to find a fast solution on this way. Background:I am working on a hobby project and want to drive a BLDC Motor. Once I flash the SW on the target, Overcurrent Protection is hit immediately (can see on debugger and Motor Pilot (in MCSDK). Target: Custom Board based on EVSPIN32G4 Schematic (EVSPIN32G4)Chip: STM32G431VBx3. Workflow: 1.) Board Designer done over Motor Control Workbench2.) New Project created and .ioc file generated3.) Generating the Code over MX Cube (without touching any config)4.) Start Motor Pilot or Debugger -> results in overcurrent protection (PWMC_OCP_Handler() is triggered immediately and OverCurrentFlag is set to true.) My Assumption:1. It is not an HW issue because I removed the Motor from the Board so there can no big current flowing.2. I can see in MX Cube that not all of the Pins are configured from MC SDK, is that normal? Do I need to configure the missing pins (only related to motor con
Hello All,I am current testing STM32U375RGT6Q at 80 degrees and I see that there is significant increase in the average current consumption at 80 degrees C. Average Current consumption increases from 290uA to 1mA. Also note that1) Pull up and Pull down are 1Mega2) MCU is in sleep mode for 50 percent of the time.3) Internal oscillator MSI is used at 3MHz4) Flash memory is 1MB5) SMPS mode is used to reduce the current consumption.Is there a way out to reduce the current consumption at high temperature. I know that STM32L4 series are more stable over temperature but they dont suite the current budget of 300uA
Dear all,we're creating a camera application and have successfully run and modified some of the demos available. ( State at time of writing: 800x600 30 fps full-frame encoding to SDCard).We have full-frame double-buffering code running but this is consuming extensive memory; from the documentation I saw that there is a hardware-linked mode available chaining DCMIPP and VENC cores. From the code, I see there is one implementation in VENC_USB example.The camera and venc middlewares on github miss the slice aka "HW Handshake mode" so I wonder which code-base is recent and will be supported in the future, especially as CubeMX does not (yet) support VENC configuration.We're trying to go beyond a proof of concept, so I'd like to base our project on a maintained code-base but that is hard to spot, could you give some indications?Many thanks,Simon
Hello STM32 friends!I've previously used USB on an STM32G474RET6, and it was initialized with the function:MX_USB_Device_Init()The goal is to use it as a USB serial port to communicate with my device, and that worked.Now I'm using the STM32U5G7VJT6, and this time, the USB is initialized with the function:MX_USB_OTG_HS_PCD_Init()But this function hangs.I've enabled USB interrupts in the STM32CubeMX, but that doesn't help.I haven't been able to isolate the problem yet, but it's probably something very simple.Is this another new USB library?As requested, I attached my IOC file.What could be the problem?Sincerely, Jack
I have a problem with the RTC initialization on the STM32WB05TZF6TR (BGA package). When the board is powered on, the MX_RTC_Init() function calls HAL_RTC_Init(), which returns with HAL_ERROR status.I traced the problem to the stm32wb0x_hal_rtc.c file, inside RTC_EnterInitMode(). It attempts to set the INIT bit, and then waits until the INITF bit changes state to confirm that Initialization Mode has been entered.However, the INITF bit never changes state, so the while loop times out. On my custom board, I have confirmed that this error always occurs when power is applied to the board, but if I manually reset the MCU while power is already applied (by shorting RESET to GND momentarily), then the initialization will complete successfully.To eliminate anything specific to my board, I generated a very simple test project (attached), which uses the default clock configuration with internal oscillators only, for both High Speed and Low Speed clocks. The ONLY configurati
I created a sample project using the STM32N657-DK, but when I try to debug using ST-LINK, each project does not work and results in a HardFault or similar error.I also tried loading them simultaneously from the debug configuration, but it was not successful.How can I properly debug both AppliSecure and AppliNonSecure? Also, is this the correct way to create a sample using the TrustZone feature of the STM32N6570-DK?I would appreciate your guidance.I am using STM32CubeIDE version 1.19.0.For the sample project I created, I made "FSBL", "AppliNonSecure", and "AppliSecure".
We need the secure boot and secure firmware update solution for both the execution models to meet the EU-CRA standard:• Execute in place support (XiP support) - direct execute from external QSPI flash• BootROM support - copy from QSPI flash to SDRAM, and execute from SDRAM https://www.st.com/resource/en/application_note/an5188-external-memory-code-execution-on-stm32f7x0-value-line-stm32h750-value-line-stm32h7b0-value-line-and-stm32h730-value-line-mcus-stmicroelectronics.pdf
Hello ST Support,I reproduced an ETH TX DMA issue on STM32N6570-DK where the DMA never consumes the TX descriptor.Environment- Board: STM32N6570-DK- Security: TrustZone enabled, Secure-only platform configuration- PHY: ID1=0x001C, ID2=0xC916, link-up confirmed- Interface: RGMII, 1G linkObserved behavior- HAL_ETH_Transmit*() submit succeeds (st=0)- TX descriptor OWN bit remains 1 (never cleared by DMA)- TX complete callback/counter never increments- DMA enters/keeps TBU state- Key symptom: DMACCATXBR remains 0 (buffer base is never loaded)Representative logs- [eth][post-start] dlar=0x3402C1E0 dtpr=0x3402C1E0 rlr=0x00000003 txcr=0x00200001 dmacc=0x00080218 txqomr=0x0007000A- [tx][path] st=0 own=0->1 catxdr=0x3402C1E0->0x3402C1E0 catxbr=0x00000000->0x00000000 csr=0x00000000->0x00000004- [tx][stall] own=1 ... catxdr=0x3402C1E0 catxbr=0x00000000 csr=0x00000004 ... dmad=0x00006400 tps0=0x00006000 axr=0axw=0What we already tried (same result in all cases)1. EDSE on/off (txcr=0x102
Hello,I'm developing an application with OEMiRoT and trustzone for STM32H563.I'm getting a write protection error (WRPERR) when I try to erase a secure flash sector from secure code that is not protected neither by write protection or HDP. I'm using the method HAL_FLASHEx_Erase() and I mapped the region as readable and writable with the memory management tool of CubeMX.If I try to do the same process without the secure boot provisioning, everything works as expected. I would like to know if there are any additional operation in order to write/erase flash at runtime when secure boot is used.Any help is really appreciated!Thank you,Giulio
This is a followup on this post https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/compilation-error-macro-quot-bind-quot-requires-3-arguments-when/td-p/881690 . mƎALLEm provided very comprehensive answer for the issue. I was unable to post a reply hence this post. I've followed the solution to the letter using the guage touchgfx example. I got a blank white screen and this is the debug window: and here is main.c: /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics. * All r
I am looking for information that compares the security in an STM32U5 or similar with the PUF-based solutions used in competitor's processors. The problem is that "PUF" has a simple explanation that sounds good and a head-to-head analysis of the advantage of these other processors against what ST provides seems to be lacking in the market place. Obviously, ST could have selected a PUF-based security and decided not to do so, so the clues might exist in why that decision was reached. Note: The primary focus is to find processors that prevent software pirates from extracting the firmware. Any help that addresses this will no doubt be repaid in future design wins.
I would like to refer you to the following post from @JRuss.4 that was never satisfactorily answered:STM32L4 Standby Mode GPIO State {Schmitt Trigger} Clarification from Reference Manual I also have the exact same question. Here is my version of the question boiled down to a couple of sentences:The STM32l4 series reference manual, RM0394 (Rev 5 - the latest available), on page 158, states, "In the Standby mode, the IO’s are by default in floating state. If the APC bit of PWR_CR3 register has been set, theI/Os can be configured either with a pull-up (refer to PWR_PUCRx registers (x=A,B,C,D,E,F,G,H)), or with a pull-down (refer to PWR_PDCRx registers (x=A,B,C,D,E,F,G,H)), or can be kept in analog state if none of the PWR_PUCRx or PWR_PDCRx register has been set."This is confusing. The statement "In the Standby mode, the IO’s are by default in floating state" contradicts the statement, "or can be kept in analog state if none of the PWR_PUCRx or PWR_PDCRx r
Hello everyone,I’m working on a project with Secure Manager on STM32H573IIK3Q using the STM32H573-DK board. I have followed the official tutorial from ST to make my application compatible with Secure Manager:https://wiki.st.com/stm32mcu/wiki/Security:How_to_make_your_application_compatible_with_Secure_ManagerSo far the system works fine — I can blink LEDs and run a basic non-secure application without issues.However, as soon as I integrate FreeRTOS and switch the HAL timebase source from SysTick to TIM7, the program immediately stops and goes into the BusFault_Handler() after TIM7 interrupt. Steps to reproduce:1) Follow the Secure Manager tutorial and set up SM provisioning2) Confirm basic GPIO/LED blinking works3) Add FreeRTOS middleware (no other changes)4) In Clock Configuration → SYS, change Timebase Source to TIM75) Build and flash — program immediately hits BusFault_Handler() Environment / versionsSTM32CubeMX: 6.17.0STM32Cube FW_H5: V1.6.0STM32CubeIDE: 2.1.0 Thank
I'm still working my way around the DMA learning curve. Having found the IOC approach to DMA configuration too confusing, I'm configuring the structs and calling the HAL_DMA_Init(...) method myself.Something I haven't been able to find clearly described is the "TransferAllocatedPort" field of the DMA_InitTypeDef struct. I understand that it's there to specify source/destination port0/port1, but I don't understand the significance of that selection.One blog post I found seems to say that having two ports allows the DMA peripheral to assemble or disassemble transfers when source and destination have differing alignments. Okay, I understand that explanation, but is that a correct explanation?If my source and destination have the same alignment, can (or should) I assign the same port to both? Is there any advantage or disadvantage? Since a "channel" is devoted to a particular path and direction, I wouldn't think the unused port would be useful for anything els
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.