Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I test app on U599. GUI task priority set little low as hw task. After flash all works ok, but after powering start gui glitch on SVG fade animation or other redraw.After swap priority GUI up all works ok. Why this after flash difference occurs?
Hello ST Community,I am currently using the EVSPIN32F0251S1 inverter board to control a BLDC motor in an elevator door control application.When I run my BLDC motor in torque mode and set torque with this api MC_ProgramTorqueRampMotor1_F() so my motor is rapidly rotating and after 1 second it will give me startup failure error.Thank you in advance for your support. Best regards,Vedant Kachhadiya
Hello, I have a problem with a PCB with an STM32F410. This board is used in the field, and in some cases, it freezes, and only works by reflashing the firmware. We're using some data in the Flash (emulated EEPROM) to write data, about 18 bytes, written to sector 1 of the flash. When reading these microcontrollers that came from the field, I notice that sector 0 has invalid data, preventing the microcontroller from booting.The writes are performed sporadically according to certain button commands, and only the read is performed when the code starts to check the status of these variables.I performed several bench tests with noise generators and several continuous writes to memory to see if this could be a problem, but I was unable to reproduce the problem. My power supply is stable, and when I input electrical noise signals, the microcontroller freezes, but it recovers after a watchdog reset.I also reviewed the PCB to check for layout issues, but I didn't find anything that could cause a
Dear ST, After signing the NDA agreement, I received STM32CubeExpansion_STL_G0_V2.0.0. I tried testing the projects for NUCLEO-G071RB in STM32CubeIDE 1.14.1, but to no avail. Edit: Removed screenshots as package is under NDA. After importing the projects: Edit: Removed screenshots as package is under NDA. When I compile, I get the following error: Edit: Removed screenshots as package is under NDA. Any suggestions?
HelloI have two boards. Both of them are based on STM32 MCUs. One is a SPI master and the second is a SPI slave.Settings for master (STM32H723): mHandle.Init.Mode = SPI_MODE_MASTER; mHandle.Init.Direction = SPI_DIRECTION_2LINES; mHandle.Init.DataSize = SPI_DATASIZE_8BIT; mHandle.Init.CLKPolarity = mSclIdle == SclIdle::kLow ? SPI_POLARITY_LOW : SPI_POLARITY_HIGH; mHandle.Init.CLKPhase = mSclEdge == SclEdge::k1 ? SPI_PHASE_1EDGE : SPI_PHASE_2EDGE; mHandle.Init.BaudRatePrescaler = mPrescaler; mHandle.Init.FirstBit = SPI_FIRSTBIT_MSB; mHandle.Init.TIMode = SPI_TIMODE_DISABLE; mHandle.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; mHandle.Init.CRCPolynomial = 0x00; mHandle.Init.NSS = SPI_NSS_SOFT; mHandle.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; mHandle.Init.NSSPolarity = SPI_NSS_POLARITY_LOW; mHandle.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA; mHandle.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN; mHandle.Init.RxCRCInitializationPattern = SPI
Hello,I am using STM32H7 as SPI slave with DMA transfer, the communication works fine till 18MHz of clock frequency from the master side however for higher clock speeds of 20 MHz - 31MHz it is noted that the bit shifts by 1 bit for the whole stream of data.e.g if STM is sending 00100111 00010010 01101101 00000000 then in the master side the received bits are 00010011 10001001 00110110 10000000.The LSB of first byte shifts to MSB of 2nd byte thus corrupting the whole data. The target is to achieve maximum speed of 31 Mhz. Below I have provided my STM setup code for reference, moreover software NSS is used: void SPI_Slave_Init(void) { /* SPI5 disable */ LL_SPI_Disable(SPI5); /* USER CODE BEGIN SPI5_Re_Init 0 */ /* USER CODE END SPI5_Re_Init 0 */ LL_SPI_InitTypeDef SPI_InitStruct = {0}; LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; /* Peripheral clock enable */ LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI5); LL_AHB4_GRP1_EnableClock(LL_AHB4_GRP1_PERI
I know that flash erase during BLE activity is an issue with that controller and a lot of notification/semaphore stuff needs to be build around it. But measuring my implementation including the later today, it looks a lot more horrible than I imagined. If I have BLE Advertisement (no connection open!) on with Advertising_Interval_Min = 1800 Advertising_Interval_Max = 4000, deleting one block of flash takes nearly 1 second (~815ms). If I stop Advertisement afterwards, it remains the same. Only if I disable the stack completely, or did not yet start the first advertisement, I get back to the 25ms ballpark from the HW itself.Is this really the delay I will now have to find a way to work around, or should I have a look at my flash erase routine again.
Hello, I'm using Nucleo-WL55JC cards and I wanted to know if it was possible to use them as gateways, partly to connect the radio world to the internet (LoRaWAN), and partly to extend the range of my network (by dispersing multiple gateways everywhere).Note: there would only be a single "sensor" device that would send its data to the nearest gateway. This "sensor" device is also a Nucleo-WL55JC. Thanks in advance. Best regards, KYZ.
Right now hardware buttons work the following way:The TouchGFX engine checks if the button value matches the trigger set up in the designer in the generated method of the screen view base handleKeyEvent().In target hardware the method Sample() of your button controller (base class touchgfx::ButtonController) is called by TouchGFX engine. In simulator the vent SDL_TEXTINPUT is used. If you hold a key the event will happen in rising edge of the key press and then re-occur periodically if you hold it down, because the keyboard event repeats.Using SDL_KEYUP would make more sense as touch button widgets also produce a pressed event on falling edge of button press (button release).You cannot read the values the engine gets from the target hardware or simulator in the model directly. You would have to send them from view to presenter to model and do that for each screen. This is tedious.Alternatively you can retrieve the HAL instance and sample again:uint8_t key
Hi all,I am working on a QSPI driver for W25Q512 flash memory (extloader for stm32cubeprogrammer and main firmware driver). I had a look at the errata ES0392 - Rev 13 and I have a question about paragraph 2.8.4: 2.8.4 - QUADSPI internal timing criticality --------------- Description The timing of some internal signals of the QUADSPI peripheral is critical. At certain conditions, this can lead to a general failure of the peripheral. As these conditions cannot be exactly determined, it is recommended to systematically apply the workaround as described. ... [omissis] I have applied the suggested patch on the "external loader" driver and there is no particular problem in applying it, but I have also the "very similar" driver on the main application firmware in processor. Up to now I had no errors in the main firmware qspi driver : read and write are ok also without the patch. Applying the patch on the "main firmware" needs testing and I have to schedule this te
Hello,I am working with the STM32G0B1CCT6 MCU and facing an issue while flashing firmware using ST-LINK.During the flashing process, I get the following error:Error: Sector erase operation has failed at least for one of the existing specified sectors. Please verify flash memory protection. Warning: Connection to device 0x467 is lostI have checked my hardware connections, and power supply seems fine. However, the erase operation still fails, and the device disconnects.Could this be due to flash write protection, or some RDP (Readout Protection) setting?Please help me resolve this issue.I am attaching the screenshot of the error and the related project/file for reference.Thank you!
Hi,I have a STM32U535 microcontroller, I would like to send data to the display via SPI using GPDMA with LLI. The Frame buffer is about 150kB, so due to the fact that in a single transfer I can send max. 64kB of data, I want to divide it into three LLI nodes create a queue and send via SPI.For the test, I created two LLI nodes in CubeMX:DMA_NodeTypeDef YourNodeName; DMA_QListTypeDef YourQueueName; DMA_NodeTypeDef YourNodeName2; /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ uint8_t ScrAdrPart1[] = {0xAD, 0xAD,0xAD,0xAD,0xAD,0xAD,0xAD,0xAD,0xAD,0xAD,0xAD,0xAD,0xAD,0xAD, 0xAD,0xAD,0xAD,0xAD,0xAD,0xAD}; uint16_t DataSizePart1 = 20; uint8_t ScrAdrPart2[] = {0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD,0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD,0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0x
Hello ST Community,I'm working on a project using STM32U595 with INMP441 MEMS microphone and NS4168 audio DAC. The system is configured to capture audio data from the microphone using SAI1_Block_A in DMA mode and then output it to the speaker using SAI1_Block_B.Issue:I've implemented the SAI RX half-complete and complete callbacks, but they are never triggered. I've added printf statements to display the received data, but nothing is being printed. The DAC seems to be initialized correctly (NS4168_INIT() returns without error), but no audio data is being processed. Code:/* USER CODE BEGIN Header */ /** ****************************************************************************** * File Name : SAI.c * Description : This file provides code for the configuration * of the SAI instances. ****************************************************************************** * @attention * * Copyright (c) 2025 STMicroelectronics. * All rights reserved. * * This so
Hi, all.I'm using STM32H747I-DISCO.I tried STemWinHelloWorld example, and "Hello world!" string was displayed on LCD properly.I added EXTI IRQ. And I confirmed when EXTI IRQ occur, it went to EXTI15_10_IRQHandler.Then I added proccess that display "How are you?" string in EXTI15_10_IRQHandler, as shown below.void EXTI15_10_IRQHandler(void) { /* USER CODE BEGIN EXTI15_10_IRQn 0 */ /* USER CODE END EXTI15_10_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GpioInt_Pin); /* USER CODE BEGIN EXTI15_10_IRQn 1 */ GUI_DispStringAt("How are you?", (LCD_GetXSize()-100)/2, (LCD_GetYSize()-20)/4); /* USER CODE END EXTI15_10_IRQn 1 */ }But when EXTI IRQ occur, "How are you?" string was not displayed on LCD, although it go to EXTI15_10_IRQHandler.And I confirmed below action.I added proccess that display "Fine!" string in MainTask() followed by GUI_Delay(1000), as shown below.void MainTask(void) { GUI_Clear(); GUI_SetFont(&GUI_Font32_1); GUI_DispSt
Are STM32F0 microcontrollers railway approved to use them when I'm designing rolling stock electronic component? or there is any certification regarding compliance with railway/rolling stock?
Hello everyone,I need a starting INI file for an STM32H753.I'm using the NUCLEO-H753ZI evaluation board.I'm using sample projects for various peripherals: GPIO, ADC, TIM, ... . My IDE is Keil uVision.Using the sample projects, it's easy to debug the microcontroller behavior. All debugger features are accessible and work correctly: Watch, Memory, Peripherals, Logic Analyzer, etc.My goal is to prepare an initialization file (.ini) to configure Keil debugger at the following path:Options->Debug->Initialization fileThis initialization file, in addition to providing the debugging functions mentioned above (Watch, Memory, Peripherals, Logic Analyzer, ... ), will allow me to read/write information from/to flash memory when loading my executable onto the board.Can anyone recommend an ini file to start for the STM32H753?.Thanks in advance for any help/suggestions.Bye,Matteo
Did you come to a conclusion on this approach? I am having the exact same dilemma. There is an approach to do it through TF-M, but then how is the support from ST on that part? https://github.com/zephyrproject-rtos/trusted-firmware-m/tree/release/2.2.x Again, I want to emphasize on what is available from ST and not compare it to nRF. This way I can decide which approach to take for the secure boot solution on STM32U5. @Sarra.S Edit: Moved from mcuboot bootloader update.
Dear ST,For the implementation of many security mechanisms (e.g., the MARCH C algorithm), the use of a RAM backup buffer is proposed. However, I can't find a RAM backup buffer in the STM32G0 family datasheet. I also can't find the SRAM Backup option in the STM32F4 family.Could you help me?Thank you.
I am attempting to transmit four bytes via I2C to a device with address 0x27, using the code below.data_t[0] = 0x01; data_t[1] = 0x02; data_t[2] = 0x04; data_t[3] = 0x08; HAL_I2C_Master_Transmit (&hi2c4, 0x27U,(uint8_t *) data_t, 4, 100);My understanding is that the structure of an I2C message is7 bit addr | R/W bit = 0 (for write) | DataThe address is 0x27 = 0b0100111The RW bit is 0 for WSo the header byte is then 0b01001110 = 0x4ESo I would expect one of two possible things to happen when I use this command. EitherEach byte is separate and preceded by the address byte. Then 8 bytes will be clocked out to the I2C bus[0x4E],[0x01],[0x4E],[0x02],[0x4E],[0x04],[0x4E],[0x08]Or there is one address byte, followed by 4 bytes of data. Then 5 bytes will be clocked out[0x4E],[0x01],[0x02],[0x04],[0x08]What I actually see on the logic analyser below. So there is 5 bytes, which is something I would have expected, but it seems to be just repeating the address each time, and never actually wri
Hello,I came across this document here https://www.st.com/resource/en/application_note/dm00622045-stm32h7-series-lifetime-estimates-stmicroelectronics.pdfWe have a H75x custom board running the MCU in VOS1 at 400MHz with external 1.2V core power supply.According to this description hereAccording to Figure 2, when VOS1, VDD = 3.3 V, VCORE = 1.2 V and operation ratio of 100%. Some examples are illustrated such as: • Tj = 105°C the lifetime estimation is > 10 years • Tj = 125°C the lifetime estimation is 4 years • Tj = 140°C the lifetime estimation is 2 years In the same conditions and for an operation ratio of 20%, the lifetime estimation is as following: • Tj = 125°C the lifetime estimation is 20 years • Tj = 140°C the lifetime estimation is 10 yearsthe power consumption, heat dissipation and lifetime is influenced by "operation ratio". What does operation ratio mean and how can I influence/control it? Does this mean that only a part of chip silicon is powered/used? Or time spen
Greetings, I'm having an issue with low-power modes. I'm using a STM32U585 MCU and while in run mode it is consuming around 100mA, which is a lot. I tried to enter in Sleep, Stop and Standby modes right after the main declaration:int main(void) { HAL_Init(); SystemPower_Config(); SystemClock_Config(); PeriphCommonClock_Config(); HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI); ...The thing is, the current just drops from 100mA to 70mA, which is still a lot. Any clue why the circuit is consuming so much current? Thank you
Hello,I am using X-CUBE SBSFU for an application running on STM32H750 mcu.The user application is running from QSPI, and I want to encrypt/decrypt some data that will be stored into an external EEPROM.To do this I would like to use an AES algorithm and I would like to store the crypto key in a secure area.In this regard it is not clear to me whether it is possible to store selected data/code in secure flash that can be accessed through the call gate feature by the user application.I will use encrypted firmware update, so it would also be fine to access the firmware encryption AES private key or encryption functions using that key.Thanks to anyone who could help me to put some light on this topic,Ivan
Hi , I am also making custom board for GPS, and same issue I am facing, unable to connect via SWD, Please help to debug.
Hello Team ST,I have design the STM32H7 MCU based custom board. So before going to fabrication, Can you please review attached the Gerber data and share any suggestion or comment.
Hello,A topic I am struggling with.On the STM32F469 Discovery board, I would like to connect a display (800x268) with a MIPI DSI connection, and the controller is an ST7701S.I would like to know how to do this (and if anyone has faced the same issue). I’ve tried several configurations but still nothing happens, the screen stays black (with the backlight on).Is there anyone who has a project to share (based on the STM32F469 Discovery) to get this display working?The SDRAM (FMC) and external flash memory (QSPI) are external.Thank you for your help.
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.