Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi,I'm using an STM32H563VG (1MB Flash version) on a custom board. I have a STLINK-V3MINIE connected and I'm using STM32CubeProgrammer.When I'm doing a full chip erase, the content of the flash memory is not altered, everything is still there when I read it back. It works nicely on the 563ZI on the Nucleo dev kit.This happens both with Trustzone enabled and disabled.Since there is not really a dependency here to the custom board (except providing 3.3V power), is this a known bug?Product state is ED (open), TrustZone disabled (C3) Anyone using the 1MB version? Also in the option bytes, I do not understand the defaults for SECWM1 and SECWM2 addresses, the default to e.g. 7f. In my understanding, that is the sector number for the 2MB Version and it should be 0x3F on the 1MB Version. The address shown for SECWM2_END for sector 0x7f is 0x0817e000 which is outside of the actual address range of the second flash bank. BestCornelius
I am testing this with a set of STM32F573 boards, the example taken straight from CubeMX example selector for the STM32H573I-DK board without any changes. I am running it until after the call to HAL_CRYPEx_WrapKey() and before the call to HAL_CRYPEx_UnwrapKey(): /* USER CODE BEGIN 2 */ /* User key AESKey256 encryption*/ if (HAL_CRYPEx_WrapKey(&hcryp, AESKey256, Encryptedkey, TIMEOUT_VALUE) != HAL_OK) { /* Processing Error */ Error_Handler(); } /* we could not compare results, key is not known and unique for each device */ /* User key AESKey256 decryption*/ if (HAL_CRYPEx_UnwrapKey(&hcryp, Encryptedkey, TIMEOUT_VALUE) != HAL_OK) { /* Processing Error */ Error_Handler(); }Where it says "we could not compare results, key is not known and unique for each device".However, I am comparing results because I am expecting Encryptedkey[] to be different for each chip. But it is always the same!When the chip has TrustZone disabled, it is (in hex):CB3E195F 345C0D8C FAEF2E
I have on my desk an STM32F407 Discovery board and an STM32U083 Nucleo board. My intent is to write software for the F407 to bootload the U083 via I2C. As far as I can tell, these are the general steps:Drive BOOT0 high and pulse the NRST pin on the U083 to enter the bootloader.Send appropriate erase/write/read commands to reprogram flash.Drive BOOT0 low and pulse the NRST pin to have the U083 boot from flash.Problem is, I can't even seem to do step 1. I have a logic analyzer verifying NRST and BOOT0 at the U083 chip, but regardless of the state of BOOT0, if I reset the U083, it boots from flash (i.e. I see my debug output on the UART).Looking at RM0503, section 2.5 Boot configuration, Table 6 Boot modes, there are two ways to boot into system memory. Summarizing the table's logic conditions:BOOT_LOCK bit must be 0.nBOOT1 bit must be 1.If nBOOT_SEL bit is 0, BOOT0 pin must be 1.If nBOOT_SEL bit is 1, nBOOT0 bit must be 0.Here are the option bytes and their factor
Hello, I have a custom board wich is based on the evspin32g4-dual Board. I generated the code with motorcontrol work bench and could upload it with a j-link. I added an uart output in the startup and noticed that it kept printing it, so the board was constantly resetting. When I stepped through the code the problem was in HAL_Delay, as the HAL_GetTick() function always returned the same value, thus not leaving the function. Could there be an error with the external Crystal? I am using a ECS-240-8-37-CKM-TR with 8pF caps.Thanks!
I am working on an audio application which is to be built on a custom board using STM32H723VG and the X-CUBE-AUDIO-KIT V1.1.1. I have demonstrated a prototype solution using the pre-built AUDIO-KIT binary loaded on the STM32H735G-DK development board and running LiveTune. I would now like to use AUDIO-KIT and create the similar real application for my target board with STM32H723VG.Being relatively new to the STM32CubeIDE (Version 1.16.00) environment I am unclear how to create a new project using the AUDIO-KIT as a foundation and then altering the BSP for my implementation of the H723. Can someone please point me to documentation or provide assistance for this?
Hi everyone,I'm developing on an STM32L562CEU6P board using STM32CubeIDE on a Windows 11 laptop.In my project, I'm trying to use the USB_DEVICE feature, but when I run the project, my computer fails to recognize the USB device.What I've tested so far:I tested the same board on a desktop computer running Windows 10 – the USB device was recognized successfully.I tested a different board (NUCLEO-F767ZI) on my laptop – it was recognized without issues.I verified that the physical connection is fine, drivers are installed, and there are no hardware issues.My questions:Could there be a difference in USB recognition between desktop and laptop computers?Could this issue be related to the operating system (Windows 11 vs. Windows 10)?Are there any specific drivers or settings required for the STM32L562CEU6P board?I’d really appreciate any help, suggestions, or insights :folded_hands:Thanks!
I configured STM32CubeMX to have a timebase source as SysTick. I'm using this for my scheduler. its running at 1ms. I also configured tim3 for 1ms sortof.But for some reason this will not stay in synch with systick. They are drifting constantly apart.The green lines are racing across my screen. Even though they are 1ms period as well. But obviously they couldn't be. I just don't understand why. Or maybe I have an issue with my data??
Hello, I am using QuadSPI in STM32H723ZGT6 which has OCTOSPI and I am changing octospi to quadspi in pin configuration and writing code also I had written same code for STM32H750VBT6 which only supports QUADSPI and I am using W25Q128JVSIQ Flash for this in H750 the same code is working but in H723 it is not working can anyone explain me why you can check my main.c file for both of the controllers I am attaching it below.
Hello , I'm using STM32G431RB, and I am trying to flash the MCU via UART1 using PA9 and PA10 pins but I can't make it work ..I get an error like "Error: Activating device: KO. Please, verify the boot mode configuration and check the serial port configuration. Reset your device then try again... "Serial port configuration = 9600 8e1 (but it's the same thing with other baudrates)i'm using STM32Cube Programmer , also I followed the instructions in AN2606 , the application note states that it should follow pattern 15 , as far as I can view the option bytes using the onboard ST-Link:BOOT_LOCK(bit) = uncheckedBoot0(pin) = manually set highnBoot1(bit) = checkedBoot0_SW(bit) = checkedThe chip is mounted on a new PCB without any other connections than PA9, PA10, RCC_OSC_IN, RCC_OSC_OUT and Serial Wire for debugging.Can someone help me?Thanks to everyone in advance
Hello,I am attempting to set up QSPI to operate in classic SPI mode so that I can transmit data to another STM32 processor. I have set up my code as followed and have connected my QSPI lines to an oscilloscope and a half duplex SPI slave on the same board for testing. I am unable to see any signals being sent over the QSPI lines. Have I setup my QSPI_CommandTypeDef incorrectly or am I missing necessary HAL commands?QSPI_HandleTypeDef hqspi; SPI_HandleTypeDef hspi1; uint8_t test_data = 6; uint8_t hold; QSPI_CommandTypeDef cmd = { .Instruction = QSPI_INSTRUCTION_NONE, .InstructionMode = QSPI_INSTRUCTION_1_LINE, .DummyCycles = 0, .Address = QSPI_ADDRESS_NONE, .AddressMode = QSPI_ADDRESS_1_LINE, .AddressSize = QSPI_ADDRESS_24_BITS, .AlternateByteMode = QSPI_ALTERNATE_BYTES_1_LINE, .DataMode = QSPI_DATA_1_LINE, .NbData = 0, }; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_QUADSPI_Init(void); static void MX_SPI1_Init(void); int main(void)
Hello,I am wondering if a nucleo stm32 board could be used directly in a commercial product with others parts?
HelloI have a lot of assets, both images and texts, that I need to use across multiple projects. Is it possible to link to the assets without creating a local copy in the project?When I add an image in the designer it copies from the original location to the project assets\images folder. Can I not just set a relative link from the project folder to the folder that holds the assets? Thank you in advance.
Hi all,I'm working on a project based on the STM32H7 and STM32G4 series, and I'm performing flash write and erase operations using the STM32 HAL functions:HAL_FLASH_Program()HAL_FLASHEx_Erase() My question is: Should these functions be placed into the .ramfunc section to avoid instruction fetch stalls or faults when writing/erasing flash on the same bank where code is executing?Is there any direct feeback from ST about this topic? On this topic I've the following observations:I know that flash memory becomes unavailable during erase/programming, and the reference manual warns that executing from the same bank can cause CPU stalls or faults.(from H7 RM: The embedded flash memory supports read-while-write operations provided the read and write operations target different banks)However, in my testing:I'm calling these HAL functions from flash, without placing them in RAM.I'm writing to or erasing a sector in the same bank where my code resides (e.g. bootloader on
hello,everyone,I used STM32CUBEMX+freertos+lwip to generate a project. Pinging 100 bytes was normal. Setting it to 1000 bytes would cause the program to freeze without any lwip error. The LWIP configuration file uses the default parameters. Has anyone encountered this problem before? Can you provide me with a solution? STM32CUBEM V6.14 STM32 firmware package V1.12.1 LWIP V2.1.2 /*----- WITH_RTOS enabled (Since FREERTOS is set) -----*/ #define WITH_RTOS 1 /*----- CHECKSUM_BY_HARDWARE enabled -----*/ #define CHECKSUM_BY_HARDWARE 1 /*-----------------------------------------------------------------------------*/ /* LwIP Stack Parameters (modified compared to initialization value in opt.h) -*/ /* Parameters set in STM32CubeMX LwIP Configuration GUI -*/ /*----- Default value in ETH configuration GUI in CubeMx: 1524 -----*/ #define ETH_RX_BUFFER_SIZE 1536 /*----- Value in opt.h for MEM_ALIGNMENT: 1 -----*/ #define MEM_ALIGNMENT 4 /*----- Default Value for MEM_SIZE: 1600 ---*/ #d
I’m driving a hobby servo on the STM32WB5MM-DK Discovery board using TIM2 PWM and the STM32CubeWB Sequencer/LPM utilities. When I disable low-power mode entirely, the servo moves flawlessly on each 500 ms button-hold toggle. But as soon as I allow the LPM manager to enter Stop mode, the PWM pulses become unstable and the servo either jitters or stops moving.PWM in Stop Mode: Are there proven techniques to retain stable PWM outputs during Stop or Low-Power Run modes on STM32WB series?Sequencer Integration: Can anyone share examples of driving servos reliably while staying in LPM using the Utility Sequencer?I have uploaded the project.
Hello,MX_TouchGFX_PreOsInit() fails at the line below and connection to the debugger is lost in my project. Please see the screen below for the issue. The .ioc file is also attached. What's wrong with it? It is a custom board and working from RAM in FSBL. Is there any example project for TouchGFX with N6?
Hello Everyone,Can anyone guide/confirm whether we can use two 8-Mpx cameras each with STM32N647A0? Best Regards,Sakshi
Hi all,I've been struggling so much to get wake from uart working on this board. It looks like it should be simple, I have this code which I am pretty sure should be everything needed, but it just doesn't wake up when I send data to the serial port.Can anyone see what I might be missing?#include <Arduino.h> #include <stm32u5xx_hal.h> #include <stm32u5xx_ll_usart.h> #include <stm32u5xx_ll_bus.h> #include "CustomPinsHub.h" static constexpr uint32_t LED_PIN = LED1_GRN; uint8_t aRxBuffer[10]; void SystemClock_Config(); // forward HardwareSerial stlinkSerial(rx_pin2debug, tx_pin2debug); void setup() { stlinkSerial.begin(115200); HAL_PWREx_EnableUltraLowPowerMode(); pinMode(LED1_GRN, OUTPUT); digitalWrite(LED1_GRN, LOW); stlinkSerial.println("→ Setup complete. LED is ON."); delay(500); UART_HandleTypeDef *huart = stlinkSerial.getHandle(); UART_WakeUpTypeDef wudata{}; wudata.WakeUpEvent = UART_WAKEUP_ON_READDATA_NONEMPTY; HAL_UARTEx_StopModeWakeUpSour
Hello,We would like to know if it is possible to connect the STM32N657X0-Q board with a B-CAMS-IMX camera. If so, what would be the best way to verify that the connection is successful and that the camera is working properly?Any guidance or documentation references would be greatly appreciated.Thanks in advance!
I'm running into a pixel mismatch issue when trying to capture frames over DCMI from a [B-CAMS_OMV with an OV5640 sensor board attached. I've used CubeMX and the stm32-disco F746 development board to successfully collect RGB565 and JPEG image compression data in various formats and resolutions.Below is my CubeMX generated DCMI configuration:hdcmi.Instance = DCMI;hdcmi.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;hdcmi.Init.PCKPolarity = DCMI_PCKPOLARITY_RISING;hdcmi.Init.VSPolarity = DCMI_VSPOLARITY_HIGH;hdcmi.Init.HSPolarity = DCMI_HSPOLARITY_HIGH;hdcmi.Init.CaptureRate = DCMI_CR_ALTERNATE_4_FRAME;hdcmi.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;hdcmi.Init.JPEGMode = DCMI_JPEG_ENABLE;hdcmi.Init.ByteSelectMode = DCMI_BSM_ALL;hdcmi.Init.ByteSelectStart = DCMI_OEBS_ODD;hdcmi.Init.LineSelectMode = DCMI_LSM_ALL;hdcmi.Init.LineSelectStart = DCMI_OELS_ODD; The OV5640 board is attached to an ST module, and I've written a driver heavily influenced by the [VISION-AI](https://www.st.com/en/emb
Facing issue with CAN baud rate change!1. The Master and slave devices are communicating at baud rate of 1Mbps.2. If I change the baud rate of Master device to any other baud rate(like, 250kbps, 500kbps,125kbps,50kbps) then master device contiguously restarting the device! Got to know that, it is restarting due to watch dog timer!3. To resolve the restart issue, added the timeout logic in the while loop where it is entering into intialize mode and normal mode.4. I gave CAN_TIMEOUT as 1000ms, If I add timeout logic, device is not communicating with slave and data is not exchanging due while timeout logic5. Tried with different logic by calling HAL_NVIC_SystemReset(); in the timeout logic. static UINT32 CanFunctin(void) { UINT32 tickstart = 0,tickstart1=0; // static UINT32 BaudRateChange=0; UINT32 error=0; // Exit Sleep mode and enter Initialize mode. CAN1->MCR &= ~CAN_MCR_SLEEP; CAN1->MCR |= CAN_MCR_INRQ; tickstart = FPGA_GET_FRT_UINT32; // Wait for Initialize m
Hello, I have the STM32N6570-DK kit. I can compile, upload and debug by following the instructions on the kit. I designed my own board but I can't debug. I'm reviewing all the possibilities and I noticed some problems. I couldn't find any explanation. https://community.st.com/t5/stm32-mcus/stm32n6-boot-rom-explained/ta-p/763648@B.Montanari 's article says H(High) VDDIO. However, in the DK schematics and pcb, the left side is vddio and the right side is gnd. Also, the Boot1 pin is pulled to the right to load software on the DK. So Boot0 becomes important. What's the problem? Are the documents wrong? Also, on the board I made, I can load software when boot1 is connected to vddio. But on the DK, it allows me to load software when boot1 is GND. What's the explanation?
Hi, I am trying to use a Nucleo-F446re as master and another one as slave. But the master is probably being timed out (not sure). Can you guys please have a look at my code and configuration. Thanks in advance <3 My Wiring:1. I connected PB8 & PB9 of both master and slave via direct wire as I used then as SCL and SDA2. Connected GND of master and slave My code:Master code: /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2025 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. * ***************************************************
From the reference manue, I can find a term half-DMA, but this term is not well described, and I don't know what this half means, what is the difference bewteen a half-DMA and a normal DMA??? Is it just the size or the available target address is smaller??
Could you please send me the link of the video or documents on interfacing the DCMI on STM32N6 series.
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.