Get ready for the STM32 Summit 2026 | Online, November 3
Join discussions in the Product Forums. Ask questions, learn from your peers, and share insights on ST solutions to accelerate your design journey.
Most recent activity
Hello. STM32H5I'm used to cache operations using memory barriers (ISB/DSB), but looking at a function like HAL_ICACHE_Invalidate() or HAL_DCACHE_Invalidate() I can't find any. Are memory barriers not needed with STM32 ICACHE/DCACHE?
I am using the STM32U575CGU3 MCU in my project, where I transmit data using two CAN frames on the bus. I have configured a CAN transmission cycle time of 250 ms in my software. However, on a few PCB assemblies, I am observing inconsistencies in the transmission cycle time. On few boards, the cycle time appears to fluctuate (e.g., around 0.5–0.6 ms deviation), while on other boards, it works well. Could you please help me understand what might be causing this variation across different PCBAs? Any guidance on potential root causes or debugging approaches would be highly appreciated.
Hello ST Community,I am currently developing a coin recognition vision model (MobileNetV4) to be deployed on the NUCLEO-N657X0-Q (STM32N657X0H3Q) board. I am trying to fully utilize the integrated NPU using STM32Cube.AI.[My Approach] To maximize feature extraction of the coin's engraved patterns, I am using a Photometric Stereo-like approach. I capture 4 grayscale images using a global shutter camera with 4 directional lights (Top, Bottom, Left, Right). My goal is to stack these 4 images into a single 4-channel tensor (H x W x 4) and feed it directly into the NPU. I have already modified the first Conv2d layer of my PyTorch model to accept in_chans=4 and trained it successfully.[The Issue] When trying to validate and deploy this model, I encountered the following constraints regarding the Neural Network Input:"Only RGB888 format is tested for Neural Network Input.""Only UINT8 format is supported."The UINT8 constraint is perfectly fine for our quantization pipeline. However, the RGB888
Hello ST Community, I am working with an STM32U585 custom board and I would like to clarify the supported and recommended workflow for flashing TrustZone‑enabled firmware with SBSFU using USB DFU via STM32CubeProgrammer. Hardware / Software Setup MCU: STM32U585 Custom hardware board Tool: STM32CubeProgrammer v2.19.0 Interface tested: ST‑LINK (SWD) USB DFU Security configuration: TrustZone enabled (TZEN = 1) SBSFU (Secure Boot & Secure Firmware Update) used What works (via ST‑LINK / SWD) Using STM32CubeProgrammer CLI with ST‑LINK, I am able to successfully flash all components: SBSFU bootloader File: SBSFU.bin Address: 0x0C004000 Initial SBSFU application image File: sbsfu_app_init.bin Size: ~1.80 MB (0x1c000) Address: 0x0C030000 The script erases the correct flash sectors, programs the binaries, verifies them successfully, and the board boots correctly. So SWD flashing works as expected for: TrustZone‑enabled device SBSFU bootloader SBSFU appli
Dear ST team,In the ST87MXX AT Command User Manual, I can find that I can retrieve the data received on a socket withAT#IPREAD:AT#IPREAD=<context_id>,<socket_id>#IPREAD: <context_id>,<socket_id>,<data_length><data>OKBut I cannot find the max length of the <data> field that can be returned by the modem. Where could I find this information ?Best RegardsThierry
I am having an issue while trying to setup an I2C driver on my STM32F767ZI Nucleo board interfacing with an SHT31 and SGP40 I2C sensors. The code I am running first initializes the SHT31 with a write and read and then initializes the SGP40 with a write and read. The issue I am running into is whenever I send the next message (read on whichever sensor I decide to try to configure first), the I2C peripheral sends a start bit and address as expected but adds a null byte immediately after the address. See attached example where I would expect the address of 0xB2, and the two byte message of 0x36 and 0x82 to be sent instead I see the address of 0xB2, then data of 0x00 and 0x36. It runs through the first write cycle without an issue. Edited to elaborate on the logic analyzer captures. I2C_LA._Expected captures the moment after stepping through setting the start bit in the CR2 register. It shows the address being transmitted and then SDA returns high and SCL is set low w
Title edited to highlight that this is a build error, "Unknown destination type (ARM/Thumb)"Hi!I'm trying develop code with STM32H745IIT using SDMMC2 in M7 core based in this tutorial:https://www.youtube.com/watch?v=I9KDN1o6924My version the CubeMX is: 6.17 and STM32CubeIDE is 2.1.0Initially I set mode: SD 4 bits Wide bus and configuration is:NVIC: EnabledNO constantsGPIO Setting:- PB3: D2, PB4: D3, PB14: D0, PB15: D1, PD6: CK and PD7: CMD- DMA: not exist??Only with this code is the following error generated in CubeIDE:(HAL_SD_Init): Unknown destination type (ARM/Thumb) in ./Application/User/Core/main.o(HAL_SD_IRQHandler): Unknown destination type (ARM/Thumb) in ./Application/User/Core/undefined reference to `HAL_SD_Init'undefined reference to `HAL_SD_IRQHandler'Any sugestion?Thank's
STM32N6 NPU – Why does ROM size increase for some models after Neural-ART compilation?Hello,I noticed an interesting behavior while comparing STM32N6 CPU execution vs NPU execution using ST Edge AI + Neural-ART.For a simple Dense/Fully Connected (ad.tflite) model, enabling the NPU did not significantly change the weights size:CPU target:weights (ro): ~270 KBNPU target:weights (ro): ~269 KBSo the compiled NPU representation stayed almost identical.However, for a VWW/MobileNet-like model using many DEPTHWISE_CONV_2D layers, I observed a large ROM increase after enabling the NPU:CPU target:weights (ro): ~42 KBNPU target:weights (ro): ~227 KBAt first I thought this was caused by the quantization format conversion:CPU:model_fmt : ss/sa per channelNPU:model_fmt : ss/sa per tensorBut I also tested ResNet model where the same quantization conversion occurs, without a major ROM increase.So it seems the quantization format change alone is not the main reason.My questionCan ST confirm whether:Neu
I am a beginner in electronics. I recently designed a board using the STM32F407VGT6 and DP83848, but after assembly and testing, I encountered a problem. The board can be programmed and it runs, but the Ethernet section does not work properly. It does not obtain an IP address. When I ping any IP address in network range, the Ethernet LED(pin 26) turns on and off, but the Ethernet connection is not actually established. I would appreciate it if you could guide me regarding the schematic and circuit so I can solve this issue.I attach my pcb schematic and board
I am working with the STM32H723ZG and trying to implement Ethernet communication without using an RTOS using LWIP(TCP/IP) Setup Details: Board: NUCLEO-H723ZG IDE: STM32CubeIDE v1.19.0 Ethernet stack: LwIP PHY interface: RMII Flashing tool: ST-LINK (onboard) Test performed: Ping test from PC Observed behavior: The Ethernet port LEDs (orange and green) remain solid ON after connecting the Ethernet cable. Ping is failing continuously, I got (Destination host unreachable) error. Troubleshoot taken: Checked with multiple Ethernet cables to ensure cable isn't a problem. I'm using static Ip and checked the Ip is correct in lwip.c while flashing the board. Rebuilt and reflashed the project multiple times. After all this still I can't ping the board. Assistance required : is there is any problem in cache coherency in the code? Kindly check with the MPU unit configuration and let me know is there is any issue? I'm
Hello ST,We are using STM32H563RGT6 and want to run at 125℃ environment.We see in the datasheet as below.it seems that for STM32H563RGT6 with suffix 6, if we are using LDO bypass mode (using external 1.2V power supply for MCU Vcore), MCU works at VOS1 mode, it also can run at 125℃ environment.Is it right?Thanks.
Hi,I have a problem with a custom board, where i can not enter bootloader, on some boards...I had a production where around 10% has this issue. (I did not see it on earlier production of 5pcs).The problem is the cube programmer will not enter bootloader mode.I use a autodirection rs485 tranciever (5V on FT pins) and it is working on many of the boards with no problem, also the in-application code works fine for modbus (also on the bootloader broken devices, after programming with ST-Link)I am using a FTDI USB to RS485 converter.The boot pin is held up by a hall sensor and inverter transistor, i have noticed these sensors has different startup time 50-100ms - therefore the MCU reset pin is controlled by a rather slow RC circuit, to ensure boot is high before reset is released. (this is a litle risky).However, i can see on the current consumption when it goes into application mode or assumed bootloader mode, as in bootloader mode the current stays much lower.I can see on the RX pin of th
Hi, Just now I have done bringing up a custom board for STM32MP133/ STM32MP135 with OpenST Linux, with kernel 6.2:- The whole boot chain bring up from tf-a, uboot, kernel.- Configure PMIC and support DDR test.- Support FMC NAND, change flash partition layout.- A/B FOTA ready Yocto build (with uboot)- Total boot time is 30 seconds to access to ADB (android platform tool)- Platform CAN bringup- Integrate Quectel modem for network over LTEIf someone needs something related to this, I can help.Best,Eric
Hello!I am using a 32.768 kHz TCXO (TG-3541CE) as the LSE to count the RTC.The MCU is an STM32L452RE.At room temperature, the RTC operates correctly, but at high temperatures (around 50 °C), the RTC stops.Strangely, once it has stopped, touching the MCU by finger causes the RTC to start running again.Suspecting an issue with the TCXO, I tried a different TCXO, but the same behavior occurred. When I added a 200 Ω damping resistor between the TCXO and the MCU, the RTC no longer stopped even when the temperature was raised to 60 °C.This seems to have solved the problem for now, but I am concerned about whether 200 Ω is an appropriate value and whether this is truly a fundamental solution.If you have any ideas about possible root causes or considerations, I would really appreciate your advice.
Hello,I am trying to deploy a custom image classification model (bacteria classification) on the NUCLEO-N657X0-Q board using the STM32 AI Model Zoo v4.0.0 deployment pipeline.What works:The pre-built flower classification hex from Binary/NUCLEO-N657X0-Q/USB-UVC-Display/NUCLEO-N657X0-Q_GettingStarted_ImageClassification-uvc.hex works perfectly — camera streams via USB UVC and classification is displayedTraining a custom EfficientNetV2-B0 model (128×128 input, 5 classes) completes successfully with 100% validation accuracyQuantization (ONNX PTQ uint8) completes successfullyThe Model Zoo deployment script (operation_mode: deployment) successfully:Compiles the model via ST Edge AI Developer CloudGenerates C code and librariesBuilds the STM32CubeIDE project (UVCL_ModelZoo configuration)Signs the binary using STM32_SigningTool_CLIWhat does NOT work:After flashing the generated files to the board, the firmware does not boot — no serial output (tested at 115200 and 921600 baud), no USB UVC cam
I am using STM32H723ZGT6 as the host MCU with the ST67W611M1 Wi-Fi + BLE module. Software details: Firmware flashed on ST67: T01 binary STM32 firmware package: X-CUBE-ST67W61(1.1.0) Application selected: BLE P2P Enabled parameters: Wi-Fi SAP: Yes Wi-Fi STA: Yes BLE: Yes NET: Yes DHCP: STA+SAP Issues observed: Intermittent failure after reset in debug mode When I reset the board while running in debug mode, the system sometimes does not work correctly(w6x init failed or other intiliazation failed in mainapp.c). The behavior is inconsistent—occasionally it works, but often it fails after reset. Wi-Fi SoftAP start failure The following API fails: ret = W6X_WiFi_StartAp(&ap_config); While debugging, the failure occurs due to a timeout in the following function: /* Initialize the dual interface mode */ ret = TranslateErrorStatus(W61_WiFi_SetDualMode(p_DrvObj)); SPI clock configuration doubt Could you please confirm the recommended SPI clock frequency for STM32H723ZGT6 when interf
Hi ST community,I am using STM32H723ZGT6 as the host MCU with the ST67W611M1 Wi-Fi + BLE module.Software details:Firmware flashed on ST67: T01 binarySTM32 firmware package: X-CUBE-ST67W61(1.1.0)Application selected: BLE P2PEnabled parameters:Wi-Fi SAP: YesWi-Fi STA: YesBLE: YesNET: YesDHCP: STA+SAPIssues observed:Intermittent failure after reset in debug modeWhen I reset the board while running in debug mode, the system sometimes does not work correctly(w6x init failed or other intiliazation failed in mainapp.c). The behavior is inconsistent—occasionally it works, but often it fails after reset.Wi-Fi SoftAP start failureThe following API fails:ret = W6X_WiFi_StartAp(&ap_config);While debugging, the failure occurs due to a timeout in the following function:/* Initialize the dual interface mode */ret = TranslateErrorStatus(W61_WiFi_SetDualMode(p_DrvObj));SPI clock configuration doubtCould you please confirm the recommended SPI clock frequency for STM32H723ZGT6 when interfacing with S
Hi,I am working with a custom board using an STM32N657X0H3Q and cannot for the life of me bring about a reset via the NRST pin.I have tried applying the workarounds from errata sheet ES0620 - Rev 3, sections 2.2.19 and 2.2.23, but my device still just hangs when any reset is attempted and needs a power cycle to recover. In our setup:MCUboot and the application are both built as secure firmwarethe application runs from AXISRAM1 after RAM-loadSince it runs from AXISRAM1 which is where the errata recommends to place the First power-on reset flag, I instead decided to set the CORE_RESET_TYPE bit in the SYSCFG_CM55RSTCR register before each reset (in addition to resetting the clock switch control bitfields to their defaults). Does this type of setup have any implications regarding using the SYSRESETREQ bit to generate a software reset? Thank you/ Silvia
Hello,I am experiencing two issues that started after updating STM32CubeAI Studio. Both worked correctly before the update.---Environment- Board: NUCLEO-N657X0-Q- STM32CubeAI Studio: latest update (STEdgeAI Core v4.0.0)- STM32CubeIDE: 2.1.1- STM32CubeProgrammer: v2.22.0- ST-LINK FW: V3J17M10- Model: MobileNetV3-based custom model (ONNX), int8 quantized and float variants---Issue 1: Build failure – CMSE stub too far (float model)When using a float ONNX model (~19 MB weights), the Appli build fails with:ERROR: CMSE stub (.gnu.sgstubs section) too far (0x135e520) from destination (0x52f0)collect2.exe: error: ld returned 1 exit statusAdditionally, the linker reports multiple memory regions not declared in the generated `STM32N657X0HXQ_LRUN.ld`:warning: memory region 'AXISRAM2' not declaredwarning: memory region 'AXISRAM3' not declared... (AXISRAM4, AXISRAM5, AXISRAM6, XSPI1, XSPI2, ROM)This build succeeded before the update with the same model.---Issue 2: Flash failure – flash loader canno
Hi,this one is similar to https://community.st.com/t5/stm32-mcus-products/ioselect-option-in-stm32h563-is-not-working/m-p/681099but not the same. While testing OSPI1 on our MP257 board and our FSBL I found thatMSEL in OCTOSPI1->CR is ignored.CSSEL and DMM are honored and works as expected but when DMM=0 then output signalsare the same on both IO[3:0] and IO[7:4].Attached is analyzer output of CLK,CS,IO0,IO4 for transaction with relevant regs:0x50430000: 00000f010x50430100: 04002101AR was 0xfa0000 and 8 bytes was sent to DR.Martin
Dear ST Support Team,Thank you for your suggestion to refer to the NX_UDP_Echo_Server example and compare configurations.I have tried to follow your recommendation, but I am still facing issues with Ethernet bring-up. Please find my observations and current status below.1. Current Status (My Application Logs)ETH HAL initialization is successfulPHY link is coming UPHowever, it is negotiating only at 10 Mbps (Full Duplex) instead of 100 MbpsMAC is configured accordingly (10M Full)Transmission is working (ARP packets are being sent successfully)Reception is not working at allKey observations from logs:ARP requests are transmitted:"ETH Tx OK len=42"But:No RX frames receivedRX descriptors remain unused (OWN bit = 0)Frames processed = 0Ping from PC is failing (Destination unreachable / timeout)2. Ping ResultPC Configuration:IP: 10.0.0.100Subnet: 255.255.255.0Result:No successful ping responseBoard keeps sending ARP requests but does not receive any response3. NX_UDP_Echo_Server Exa
Hi,I’m working on an STM based UI with multiple dynamic graph widgets on a single screen and running into a hard fault when scaling things up. Right now I have 5 graph widgets, each needing to plot around 700 data points dynamically. However, when I configure all 5 graphs with 700 points each, the screen crashes. The most stable setup I’ve managed so far is about 200 points per graph, anything beyond that consistently leads to a hard fault (which seems memory related).My goal is to reliably support 5 graphs × 700 points on the same screen. I’m trying to understand what could be causing the crash, whether it’s heap or stack limitations, frame buffer constraints, or something else in the graphics pipeline. It would be helpful to know how to narrow this down effectively.
Running on UbuntuSTM32CubeIDEVersion: 1.13.2Build: 18220_20230914_1601 (UTC).Fresh installation but just getting blank page saying "Target selection: STM32 target or STM32Cube example selection is required".I've:1. Checked for target selector device database updates2. Checked for Embedded Software Packages Updates3. Managed Embedded Software Packages and installed latest package for STMG0Rebooted etc, but still getting this message and can't get past.PS: STM32CubeIDE runs fine on Windows 11 connected to target board (Nucleo-64 G071RB)
Hello,at the moment i try to read correct accelerometer data with a STM32L010C6 Microcontroller from a accelerometer sensor BMA530. The connection is via I^2C (SDA and SCL) and i programm the Microcontroller with a ST-LINK V2. I took a code from gitHub Platform boschsensortec/BMA530_SensorAPI and changed it because in the common.c data i can´t use the coines commands because the STM32L010C6 needs STM32 HAL-Functions because Bosch use other Hardware as STMicroelectronics. The dev_addr2 = (0x18 << 1) see at https://sourcevu.sysprogs.com/stm32/HAL/symbols/HAL_I2C_Mem_Read#:~:text=SourceVu%20STM32%20Libraries%20and%20Samples,information%20for%20the%20specified%20I2Cand i got it from the BMA530 Datasheet - The default 7 bits I^2C address is 0x18.The Mem_addr = 0x18, i got it from the BMA530 Datasheet. 0x18->ACC_DATA_0 -> Read-only acc_x_7_0. In the BMA530 Datasheet at the Connection Diagram there are two resistors which i don´t have at my board. Could th
Hi, I have an USBPD sink application created with CubeMX that can be found here:https://github.com/ThiRom/H563NucleoUSBPDSink The project can be build using cmake. If the project is build using Debug configuration, it works. But using Release it shows timeouts on requests. As you can see below during one millisecond the firmware sends 3 retries and a soft reset. This problem can be seen with -O2 and -O3 option. It seems that the file usbpd_timersserver.c is not working correctly. I found that function: uint32_t USBPD_TIM_IsExpired(TIM_identifier Id) { uint32_t _expired = 1u; switch (Id) { case TIM_PORT0_CRC: _expired = TIMX_CHANNEL1_GETFLAG(TIMX); break; case TIM_PORT0_RETRY: _expired = TIMX_CHANNEL2_GETFLAG(TIMX); break; case TIM_PORT1_CRC: _expired = TIMX_CHANNEL3_GETFLAG(TIMX); break; case TIM_PORT1_RETRY: _expired = TIMX_CHANNEL4_GETFLAG(TIMX); break; default: break; } return _expired; } When I change it to this: uint32_t USBPD_TIM_Is
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.