Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Is this parameter dimensionless or in volts? I've tried many values, but I keep getting a yellow warning icon indicating an error, such as with 0 or 1 or 1.65 or 0.5
Hello,I am developing an external flash loader for an IS25LP512MJ QSPI flash on my custom board. However, I am encountering an issue where programming always fails with the following error:Error: failed to download Sector[0]The complete log is attached below.I have verified the following: The QSPI flash is initialized correctly. I can successfully read, write, and erase the flash from my application. The flash loader builds without any errors. The issue only occurs when STM32CubeProgrammer (or STM32CubeIDE via the GDB server) attempts to program the external flash. The relevant part of the log is:Memory Programming ... File : ST-LINK_GDB_server_a19388.srec Size : 1.60 MB Address : 0x08000000Erasing memory corresponding to segment 0:Erasing internal memory sectors [0 109]Erasing memory corresponding to segment 1:Erasing external memory sectors [0 191]Download in Progress:Error: failed to download Sector[0]Error: failed to download the FileHas anyone expe
Processor is STM32U585CIU6Q. I have a trust zone project (STM32IDE) that runs just fine without the boot loader. At reset the secure project runs, transfers control to the non-secure and I can make calls to functions on the secure side just fine. All is good.This is boot loader development effort. I don’t have code to actually receive images yet. I place the secure and non-secure projects in place with the IDE and run the boot loader. When the boot loader transfers control to the secure application it seems to initially work OK. I get to the secure application OK, The secure application transfers control to the non-secure project OK. However, as soon as i try to make a call to a secure function the system hangs.To transfer out of the boot loader I save a flag in protected memory and do a SW reset. I have used this technique on other ST parts as a way to get the processor in a known state. When I come out of reset the boot loader immediately (before any initialization except C init) t
Hi, I use OEMiROT_Appli_TrustZone +OEMiROT_Boot to do some change in order to migrate to my project. Version: STM32Cube_FW_H5_V1.5.0 1.i change the secure image and non secure image size in flash_layout.h from OEMiROT_Boot. #define FLASH_S_PARTITION_SIZE (0x20000) /* 128KB for S partition */ #if defined(DEVICE_1M_FLASH_ENABLE) #define FLASH_NS_PARTITION_SIZE (0x30000) /* 192 KB for NS partition */ #else #define FLASH_NS_PARTITION_SIZE (0x60000) /* 384 KB for NS partition */ 2.then rebuild the OEMiROT_Boot. it will autocratically change the ld file and image.xls size of OEMiROT_Appli_TrustZone. 3.rebuild OEMiROT_Appli_TrustZone secure ap and non secure app 4.execute STM32Cube_FW_H5_V1.5.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\OEMiROT\provisioning.bat OK 5.reconnet the board with UART . it shows the error as follow:. INF] TAMPER Activated [INF] BANK 1 secure flash 0, 27] : OB [0, 14] [ERR] Unexpected value for secure flash protection
Hi,I am writing my own RTOS and I do not use CubeMX nor the HAL. I directly program the STM32N657 LTDC registers.The target is the STM32N6570-DK board with the original 800x480 RGB LCD.Problem descriptionThe LTDC background color is displayed perfectly.However, as soon as I enable Layer 1 with a framebuffer located in the internal AXI SRAM, the displayed image becomes corrupted.The corruption is unusual:the top of the image is correct, below approximately 320 lines, the image progressively becomes shifted, the bottom of the image looks like repeated square blocks shifted horizontally, no FIFO underrun is reported.The framebuffer contents themselves are correct when read back by the CPU.LTDC configurationFramebuffer:Address : 0x34200000Format : ARGB8888Size : 800 x 480Pitch : 3200 bytes Layer registers:L1CFBAR = 0x34200000L1CFBLR = 0x0C800C83L1CFBLNR = 480L1PFCR = 0x00000000 (ARGB8888)L1CACR = 0x000000FFL1BFCR = 0x00000607L1CR = 0x00000001 Global registers:GCR = 0x00
HiWhile reviewing some specs for the SW developers, we noticed some inconsitency between the datasheet and reference manual of the STM32H735.The DS states four VBOR thresholds (VBOR0 to VBOR3).In the RM, the description of Bits 3:2 BOR_LEV[1:0] is different for the read-only register FLASH_OPTSR_CUR and the programming register FLASH_OPTSR_PRG. The former states four VBOR thresholds (VBOR2 is 0b10), the latter refers to a nominal voltage level (2.4V - approx. VBOR2 - is 0b01). Can you please clarify. Thanks!
Dear ST Support Team,I am working on a custom BLDC motor controller using STM32G431CBU6 with STM32 Motor Control SDK 6.4.2 and DRV8316CT motor driver.I have created custom Control Board and Power Board JSON files using the Motor Control Board Designer. However, I am facing an issue configuring the current sensing topology for FOC.Hardware ConfigurationMCU: STM32G431CBU6 MCSDK Version: 6.4.2 Motor Driver: DRV8316CT Control Algorithm: FOC PWM Configuration: 3-PWM (TIM1) Current Sensing: Three Shunt Resistors (Amplified)Current sensing connections are:Signal MCU Pin ADC Function CURRENT_AMPL_U PA1 ADC1_IN2 / ADC2_IN2 CURRENT_AMPL_V PA2 ADC1_IN3 CURRENT_AMPL_W PA3 ADC1_IN4 ProblemWhen I configure Three Shunt Resistors, Motor Control Workbench reports the following warnings: CSConnect: ThreeShunt_AmplifiedCurrents DualADCs SharedSignalCSConnect: ThreeShunt_AmplifiedCurrents DualADCs NoSolutionI investigated the ParameterConnection.json file and found that the DualADCs im
Hi, I am using a STM32U375KEU on a custom PCB and I am trying to enter STOP2 mode. When flashing the code i the error: Target is not responding, retrying… and the current draw is the same as running the MCU normally at around 2mA. Here is the mainint main(void){HAL_Init();SystemClock_Config(); HAL_DBGMCU_DisableDBGStopMode(); // 3. KILL SYSTICK SO IT CAN'T WAKE THE CPUHAL_SuspendTick();SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk; // 4. ENTER DEEP SLEEP__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SBF);HAL_PWR_EnterSTOPMode(PWR_LOWPOWERMODE_STOP1, PWR_STOPENTRY_WFI); // 5. IF IT WAKES UP, TRAP IT HEREwhile (1){}}}Does it have something to do with the Clock?
Hello Everyone please guide me in the stm32h7xx_hal_eth.c file a function which name is HAL_ETH_ReadData() is not properly working in this function while loop is not working the main specific this part => “ (READ_BIT(dmarxdesc->DESC3, ETH_DMARXNDESCWBF_OWN) == (uint32_t)RESET)”isn not working and i ma getting output is host unreachable => PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.From 192.168.1.10 icmp_seq=1 Destination Host Unreachablei am using NUCLEO-H723ZGT6 board HAL_StatusTypeDef HAL_ETH_ReadData(ETH_HandleTypeDef *heth, void **pAppBuff){uint32_t descidx;uint32_t descidx_next;ETH_DMADescTypeDef *dmarxdesc_next;ETH_DMADescTypeDef *dmarxdesc;uint32_t desccnt = 0U;uint32_t desccntmax;uint32_t bufflength;uint8_t rxdataready = 0U; if (pAppBuff == NULL){heth->ErrorCode |= HAL_ETH_ERROR_PARAM;return HAL_ERROR;} if (heth->gState != HAL_ETH_STATE_STARTED){return HAL_ERROR;} descidx = heth->RxDescList.RxDescIdx;dmarxdesc = (ETH_DMADescTypeDef *)heth->R
Hi everyone,I am learning STM32 bootloader development and I would appreciate some guidance.Hardware STM32 Nucleo-G431RB Windows PC USB-to-TTL UART converter UART communication RequirementI already have an application HEX file.My goal is to update the firmware through UART using a custom bootloader.I do not want to use: STM32CubeIDE ST-LINK STM32CubeProgrammer Any IDE during firmware update The complete firmware update should happen only through UART.What I want to achievePC↓Application (my own program)↓UART (TTL)↓Custom Bootloader↓STM32 Flash Memory↓Jump to ApplicationQuestions What should be my first step to implement this? Should my PC application send the HEX file directly, or should it first convert it into BIN? Should the bootloader parse Intel HEX records, or is it better to send binary data? What communication protocol is commonly used for custom UART bootloaders? Packet format Start byte Length CRC ACK/NACK What is the recommended fl
Hello,We are using an STM32H743 MCU with the LI10600T070IA3098-TCF LCD panel (1024×600 resolution) through a 24-bit RGB LTDC interface. We are experiencing display flickering, as shown in the attached video.Could you please help us identify the possible root cause? Kindly let us know what additional information (schematic, LTDC timing parameters, oscilloscope captures, PCB layout, etc.) would be required from our side to assist in debugging this issue.Any guidance or recommendations would be greatly appreciated.https://drive.google.com/file/d/1wClnXqdIc8OI-4y19CmWxJERnSnIYUK-/view?usp=sharing
Hi, we are in the initial stage of our project and planning to use STM32H7S7I8T6, we need to have a 128MByte of external RAM as per our requirements but only 64MByte of PSRAM is available in market currently, is it possible to add two 64MByte of PSRAM to the MCU (If any please provide the guidance/design note) or any other options ?
TouchGFX 4.26.0Low severity bug. Only visual in Designer. In the generated code the correct alignment is used.Steps to reproduce:create TextArea. Disable “auto-size” Set textID with text element that has right alignment. The shown alignment is still left aligned.When Designer is restarted, the correct alignment is shown again.
Hey,I want to enable a fast connection with the STM32WB09KE. How do i avoid that the services and characteristics are discoverd every connection? i toughts there was a option for that when using the full ble stack. But whit this firmware and mcu i don’t see it in the STM32CubeMX. So before is start is this possible with this MCU and ble firmware options? Thx in advance! Best regardsMathias
Some applications have the need to use an external interrupt from an GPIO input that is already configured as alternate function. My use case is to use EXTI on a rising edge of SPI_NSS input to detect a terminated SPI transfer on a slave.So I need the combination of MODE_AF and EXTI_IT when configuring the GPIO input pin. Unfortunately, HAL does not support this and asserts on IS_GPIO_MODE(__MODE__) for this combination.However, STM32 MCUs usually support this combination, so it makes sense to support this in HAL.To allow this, I added some definitions in stm32g4xx_hal_gpio.h:#define GPIO_MODE_AF_IT_RISING (MODE_AF | EXTI_IT | TRIGGER_RISING) /*!< Alternate Function with External Interrupt Mode with Rising edge trigger detection */ #define GPIO_MODE_AF_IT_FALLING (MODE_AF | EXTI_IT | TRIGGER_FALLING) /*!< Alternate Function with External Interrupt Mode with Falling edge trigger detection
Hi friends, Does have processors from this family a dedicated input pin as the the input for inner LDO? It will be in the future to supply the inner LDO with the voltage Vcc/2 from the splitter like LM2665 or other. best regards zbynoB
Hi,I am using TouchGFX 4.26.1 on a custom STM32N655x0 board. Most widgets (Box, Text, Button, SVG, Slider, etc.) render correctly, but Canvas Widgets such as Line, Circle, Shape, and the graph plot lines are not rendered. The graph background/grid is visible, but the plotted lines are missing.The same TouchGFX project works correctly on the STM32N657-DK, but not on the STM32N655 custom board.Is there any known limitation or additional configuration required for Canvas Widgets/NemaGFX/NeoChrom GPU2D on STM32N655? Are there any differences in Canvas Widget support between STM32N655 and STM32N657?I've attached screenshots of the designed UI and the actual output on the custom board. TouchGFX design Custom board display STM32N6570-DK’s display Thank you.
Subject: X-CUBE-CLASSB-L4 (STL) — Fault Injection Method for Flash/CPU/RAM Self-Tests on STM32L451CETI am applying X-CUBE-CLASSB-L4 (Self-Test Library, STL) on an STM32L451CET MCU to implement CPU/Flash/RAM self-tests for IEC 60730-1 Class B certification.Main issue: No matter what method I try, the Flash test never passes (always reports a failure / never completes successfully under normal conditions).Certification requirement: Our certification body requires us to demonstrate both the normal (pass) case and the fault (failure) case for each test, specifically by actually altering real values during test execution:CPU test: by actually changing register values during the test Flash test: by changing the CRC value, or modifying Flash memory contents while the test is running RAM test: by modifying RAM contents while the test is runningI understand that ST's recommended method is to use STL_ArtifFailingConfig to perform fault injection. However, this only simulates a failing configurat
[PN]: EVSPIN32G06Q2S1[VERSION]: MCSDK 6.4.1[TOOL]: MC WB[DETAILS]:6step and sensorlessabout the BEMF circuit, BJT(Q2/Q5/Q8) the MCWB give me a tip should I keep the BJT and short B-E?wha’s the purpose of these BJT(Q2/Q5/Q8)?
The schematic is shown below. I have pulled down BOOT0 to ground through a jumper , power supply voltage is normal. Could you please help me check if there is a problem with the MCU configuration。
I am trying to make the ADC channels sample the current through some motor channels synchronised to the center of the center aligned PWM waveform to avoid switching noise.The microcontroller I am using is the STM32F411 series, and I am using the first 3 channels of Timer 2 for PWM. The 4th channel is set to "Output compare no output", and I also set the timer trigger output event selection to Output compare (OC4REF). I set the pulse of channel 4 to the TOP value of the timer so it triggers when the counter counts to the TOP (midpoint of PWM). For the ADC, i am trying to sample 4 inputs (2 phases for 2 motors) and shift the data into a buffer using DMA. I enabled scan conversion mode as well as DMA continuous requests, and set the trigger source to Timer 2 capture compare 4 event, triggered on the rising edge. The ADC global interrupt is also enabled.In code, I started timer 2 using:HAL_TIM_Base_Start(&htim2); HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_4);Then, I start the ADC us
Hello ST Community,I am currently working on a hardware integration project where a Xilinx ZCU104 FPGA acts as the SPI Master, and an STM32F446RE acts as the SPI Slave. We are attempting to establish a stable full-duplex SPI communication using DMA, but we are consistently encountering a "Communication Timeout" on the Master side, and the STM32 RxBuffer remains empty (all zeros).Here are the implementation details and the troubleshooting steps we have already verified:### 1. Configuration & Code Snippet* Data Size: 8-bit SPI data size, but grouped into 4-byte (32-bit) transfers to match the FPGA's 32-bit register data width.* STM32 SPI Configuration: Slave Mode, 2 Lines Full-Duplex, CPOL=0, CPHA=0 (Mode 0), MSB First.* NSS Management: Hardware NSS Input (SPI_NSS_HARD_INPUT) on PB12.* DMA Configuration: DMA1 Stream 3 (RX) and Stream 4 (TX) enabled with circular or normal transfer.In `main.c`, we initialize the peripheral and start the listening process as follows:```c#define BUFFER_
Hi everyone,I have one question before starting one project.I am working on information system related to Philippines government services like NBI Clearance. We are thinking future version can also work on small self-service kiosk or information terminal, not only website.Main requirements are:Stable for many yearsFast boot timeLow powerTouch display supportEthernet or Wi-Fi optionQR code scanner supportUSB printer support for receipt or documentI see many people using STM32 in industrial products.Do you think STM32 is good choice for this type of public kiosk?Or better use Linux SBC like Raspberry Pi for easier software development?I want something reliable because government/public service devices may run all day without restart.Anyone already build similar public information kiosk using STM32?Thanks for any advice.
Hello,I’m working on a stm32h753 MCU and trying to use LwIP. I followed a lot of topics on that but I’m still not able to make it work.When I’m using debugger to identify issue, I’m always falling in unaligned access issue.backtrace in debugHere is my configuration :MPU_configvoid MPU_Config(void){ MPU_Region_InitTypeDef MPU_InitStruct = {0}; /* Disables the MPU */ HAL_MPU_Disable(); /* Configure the MPU as Strongly ordered for not defined regions */ MPU_InitStruct.Enable = MPU_REGION_ENABLE; MPU_InitStruct.BaseAddress = 0x00; MPU_InitStruct.Size = MPU_REGION_SIZE_4GB; MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS; MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE; MPU_InitStruct.Number = MPU_REGION_NUMBER0; MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; MPU_InitStruct.SubRegionDisable = 0x87; MPU_InitStruct.DisableExec = MPU_INSTR
Hi,I am using an STM32N655X0H3Q interfaced with an NHD-7.0-800480EF-ASXN#-CTP display that uses the FT5426G capacitive touch controller. I have created a TouchGFX screen containing a single button widget. No interactions are currently assigned to the button (I had previously tested it with a screen-change interaction, but the behaviour remained the same, so I removed all interactions and am now testing with only the button widget present on the screen).The touch controller appears to work correctly otherwise. I can continuously poll touch events inside STM32TouchController::sampleTouch() and successfully print the touch coordinates and number of touch points when touching any area of the screen outside the button.However, as soon as I touch the button widget, the application hangs. The button disappears and the display turns into a plain screen. At the same time, the continuous polling inside STM32TouchController::sampleTouch() stops completely, indicating that TouchGFX is no longer ca
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.