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
when I click and open the touchGFX, it can't access into main menu and list following message. how to fix it ? pls help .
Cannot boot an m33 TA app from the RFS on a STM32mp257f-DK board running latest OpenSTLinux starter package image.Any assistance would be appreciated. Please see details and boot error below.STEPS USED:1) build a TA m33 application in STM32CubeIDE2) from PC ssh .elf file - 73551a82-b721-4e53-9c84-c962e172c8ad.elf to target dir /lib/firmware3) from PC ssh .ta file - 73551a82-b721-4e53-9c84-c962e172c8ad.ta to target dir /lib/optee_armtz/4) from target terminal invoke command: root@stm32mp2unknownunknown:/lib/firmware# echo 73551a82-b721-4e53-9c84-c962e172c8ad.elf > /sys/class/remoteproc/remoteproc0/firmware5) from target terminal invoke command: root@stm32mp2unknownunknown:/lib/firmware# echo start > /sys/class/remoteproc/remoteproc0/stateTARGET TERMIAL OUTPUT:root@stm32mp2unknownunknown:/lib/firmware# ls73551a82-b721-4e53-9c84-c962e172c8ad.elf DKfullTest_CM33.elf LICENCE.cypress_bcm4373 regulatory.db73551a82-b721-4e53-9c84-c962e172c8ad.stripped.elf LICENCE.cypress_bcm4343 brcm reg
Originally posted in MCUs forum; moved to MPUs, as STM32MP is an MPU - not an MCU.Hello Everyone,I am working with FreeRTOS on an STM32MP157CAA and configuring the CM4 core in engineering mode using CubeIDE. According to the documentation, it's necessary to select a timer other than SysTick for the HAL timebase. However, in CubeIDE, under the SYS settings in the Pinout tab, I only see SysTick available as an option.When I generate the code, I receive the following warning: WARNING:When RTOS is used, it is strongly recommended to use a HAL timebase source other than the SysTick. The HAL time base source can be changed from the Pinout tab under SYS. Despite this, I am unable to select any other timebase source besides SysTick.Could anyone provide guidance on how to configure a different HAL timebase source for FreeRTOS in this setup? Any advice or workaround would be greatly appreciated.Thank you!
Hi!Trying to get a TouchGFX working with Trustzone has shown itself to be quite the hassle. Although I have worked through a lot of issues already, my latest one has deemed real stubborn.When enabling GPU2D in a trustzone enabled project, the code throws a securefault when trying to use LCDGPU2D::fillbuffer(). My BBMPC is set correctly as the LTDC is able to create and change the framebuffer without issues. Due to the precompiled nature of the GPU2D library i am unable to figure out what buffer GPU2D is trying to access which is throwing this error.I'm running the STM32u5G7 on a custom board. Everything works in a non-trustzone project.My non-secure project has a flash offset of 0x20000 (starts at 0x08020000) and a RAM offset of 0x40000 (starts at 0x20040000). Everything before that is part of the secure code. Maybe GPU2D is trying to access a default address somewhere? Aside from this I've found other issues in my path to this point so far:TouchGFX Designer post generate target c
Hello,I’m working with the STM32H745I-DISCO board and I’d like to use the Cortex-M7 core for GUI (TouchGFX/LVGL) and the Cortex-M4 core for backend tasks like sensor data handling, communication protocols (CAN, UART, I2C), and preprocessing.I’m looking for guidance and resources on:Recommended project structure in STM32CubeIDE / CubeMX for dual-core applications.How to set up inter-core communication (M7 ↔ M4) (OpenAMP, shared memory, or mailboxes).Examples or reference projects where M7 is dedicated to GUI and M4 to background tasks.Any best practices for memory allocation (framebuffer vs shared RAM) and FreeRTOS usage across cores.If anyone has worked on a similar setup or can point me to example projects, tutorials, or documentation, that would be really helpful.Thank you!
I am having a hard time figuring out working with the STM32-E407 which is built on STM32F407ZGT6 MCU. I also brought an ARM-USB-TINY-H as it was recommended in its documentation. How and where do I start ? Say I want to interface this board with a radar sensor.
Hi everyone,I’m having issues with the VL53L7CHV0GC ToF sensor drivers on Linux. The kernel module loads fine, but I can’t read any data using the userspace part. When I try to use the driver completely in userspace mode, it reports that it can’t find the device on the bus, even though the device is physically present and visible on I²C.I use official sources from STMicroelectronics website.Has anyone encountered the same issue or maybe has a newer / fixed version of these drivers that works correctly?If not, at least a detailed datasheet with the I²C register description - which also doesn’t seem to be available online - would be really helpful, so we have a chance to write our own drivers.Thanks in advance!
Hi friends ,I need to make a TCP Server client in my STM32F769NIH6 board using LWIP. I referred many documents but so far it have led me to nowhere. Does any of you knowhow to do it, in that case tell me the steps.
Hi, we have a custom board using STM32MP157C that seems to be bricked and can no longer be flashed with STM32 Cube Programmer over USB (DFU) after fusing the Closed_device bit in OTP.Before that we verified our image with signed FSBL and FIP with TRUSTED_BOARD_BOOT enabled. Logs suggested that secure boot was working fine.After programming OTP with STM32PRGFW-UTIL and setting Closed_device bit the device won't boot and can also no longer be flashed successfully. I guess FSBL got overwritten by the one from STM32PRGFW-UTIL which was not signed. However I don't understand why flashing no longer works.Does STM32 Cube Programmer USB/DFU flashing rely on a signed working FSBL already on the device?From the documentation here https://www.st.com/resource/en/application_note/an5275-introduction-to-usb-dfuusart-protocols-used-in-stm32mp1-and-stm32mp2-mpu-bootloaders-stmicroelectronics.pdf in 1.7.1 Case 1 – programming from reset it sounds like that C
Hi, we are trying to enable secure boot on a custom board using STM32MP157C.We are using OpenSTLinux ecosystem v5en.SDK-x86_64-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gzen.sources-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gzWhat we already did:Generated keys using STM32_KeyGen_CLI.exe (publicKeyhash.bin, publicKey.pem, privateKey.pem)Write publicKeyhash.bin to OTP using STM32_Programmer_CLI.exeSign the TF-A (BL2) image(.stm32 file) using STM32_SigningTool_CLI.exeVerify it worked by getting serial output when booting "NOTICE: Bootrom authentication succeeded"Next step was embedding certificates in the FIP binary. Until then we built the FIP binary using Makefile.sdk in sources\arm-ostl-linux-gnueabi\tf-a-stm32mp-v2.8.6-stm32mp-r1-r0. If we understand the documentation correctly (https://wiki.st.com/stm32mpu-ecosystem-v5/wiki/TF-A_BL2_Trusted_Board_Boot) generating a FIP with all certificates has to be done usi
Hello everyone,I am finding to drive for 4 cabin lock. For this, VNxxx or VNQxxx series help me. I don't need high current. It is 1 amper per channel(per output. I'm looking for a chip that will not cause any supply problems and will be produced continuously. Is there anyone from ST who can help?
Dear AllI am new to STM32CubeIDE and imported an example project I2C_OneBoard_AdcCommunication_DMAAndIT_Init, it work well, but when I try to do same with my own project, the generated code like MX_I2C2_Init(void) is totally different with the example, it seem use all LL drivers, and my project generate HAL code, my question are:1. How can I let my STM32CubeIDE to generate same LL driver? is use LL encouraged instead of HAL? 2. If I use example code function like Handle_I2C_Master_TransmitReceive() to interface with generated HAL code, will it work?3. When they generate different code, it is confusing and I cannot compare them and found which code is added by user later or generated by MX. I am using Nucleo-H563Zi board and my STM32CubeIDE version is v1.19. Thank you in advance.Ping
Hello community,I'm new to using this sensor, but based on some initial testing I'm hoping it's a good fit for my application. I was hoping to get some general opinions/guidance on the approach I'm planning, so any tips/feedback are greatly appreciated!My application:Collect some reference data for a small (~1.5x1.5m) room, with the sensor mounted fixed in the middle of the ceiling, about 2.75m from the floor, looking straight down to the room. There are some stationary objects in the room that will be part of this reference 'scene' that is being captured. It is a fully enclosed room (expected to have no sunlight when the door is closed), and we can turn the lights off, so there should be little to no ambient light.I'd like to be able to periodically rescan the room and look for any differences to the reference 'scene' -- essentially looking for unexpected objects. It is not a very time sensitive application, so any filtering etc that might be helpful in making this determination is fi
Hi!I have a board with an external oscillator. The oscillator would not start, and I spent a few hours debugging the issue only to find out the automatically generated code initialized the clock and the OSC_EN pin in the wrong order!relevant ioc lines:PC14-OSC32_IN\ (PC14).Mode=HSE-External-Clock-Source PC14-OSC32_IN\ (PC14).Signal=RCC_OSC_IN PC15-OSC32_OUT\ (PC15).Mode=OSC enable PC15-OSC32_OUT\ (PC15).Signal=RCC_OSC_ENthe generated code:/* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); MX_TIM1_Init(); /* USER CODE BEGIN 2 */ ... void SystemClock_Config(void) { ... if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_O
Description:When attempting to compile a GStreamer "Hello World" example (basic-tutorial-1.c) using the cross-compiler toolchain on STM32MP1 with OpenSTLinux, a fatal error occurs indicating that the limits.h header file is missing.https://gstreamer.freedesktop.org/documentation/tutorials/basic/hello-world.html?gi-language=c Steps to Reproduce:Source the environment setup script: source /opt/st/stm32mp1/5.0.3-openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi Check the cross-compiler: echo $CC arm-ostl-linux-gnueabi-gcc -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 --sysroot=/opt/st/stm32mp1/5.0.3-openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi Attempt to compile the program: arm-ostl-linux-gnueabi-gcc -Wall basic-tutorial-1.c -o helloworld $(pkg-config --cflags --libs gstreamer-1.0) Error Message:/opt/st/
Post edited by ST moderator to be inline with the community rules for the code sharing. In next time please use </> button to paste your code. Please read this post: How to insert source code. Hello, i have a Project, where i have an FPGA connected to a STM32H723 via PSSI. The FPGA sends out 16 Bit of Dummy Data over 8 Data Lines Every 1 ms. In the STM i can receive the Data without using DMA like this: "HAL_PSSI_Receive(&hpssi,&received_pssi, 1, 5000)" Now i enabled DMA in CubeMX (DMA1 Stream 0). Inside the main.c Cube created " MX_DMA_Init();" for me. I added: HAL_PSSI_ENABLE(&hpssi); if (HAL_PSSI_Receive_DMA(&hpssi, (uint32_t*)rxBuffer, BUFFER_SIZE) != HAL_OK) { Error_Handler(); } HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn); And this does not end up in the Error Handler. As Soon as the main while loop is executed, i end up in the "HAL_PSSI_ErrorCallback" with the Error ID "0" (which corresponds to "HAL_PSSI_ERROR_NONE", so an Err
Hi everyone,I’m facing a serious issue with my STM32F407 MCU on a custom PCB.I was flashing firmware from STM32CubeIDE using the onboard ST-Link from a Discovery board over SWD, and everything was working fine until one upload failed during the erase step.Since that moment, I can’t erase or reprogram the chip anymore, even from STM32CubeProgrammer or ST-Link Utility.le programming via STM32CubeIDE, I suddenly got this error in the ST-LINK GDB server console:Erasing memory corresponding to segment 0:Erasing internal memory sectors [0 2]Error: failed to erase memoryEncountered Error when opening ...\STM32_Programmer_CLI.exeError in STM32CubeProgrammerShutting down...Exit.After this, every subsequent attempt (from CubeIDE, CubeProgrammer, or ST-Link Utility) failed the same way.I have tried : Connect under Reset mode, SWD frequencies (from 4 MHz → 950 kHz → 100 kHz), RDP = Level 0 (0xAA), no write protection in Option Bytes, Tried Full Chip Erase several time
I am looking for a way to obtain the PHY timestamp of when Ethernet packets are received. I am using the board NUCLEO-F767ZI, which should support hardware timestamping. I can barely find documentation about this online, but some investigation led me to the function HAL_ETH_ReadData, which contains the following lines: /* Get timestamp high */ heth->RxDescList.TimeStamp.TimeStampHigh = dmarxdesc->DESC7; /* Get timestamp low */ heth->RxDescList.TimeStamp.TimeStampLow = dmarxdesc->DESC6; I can see that this code is executed. When I print the values of dmarxdesc->DESC7 and dmarxdesc->DESC6, I always get the value 0. I am wondering if this is some sort of configuration issue, or if I am missing something. I'm not sure how important this is, but I'm using LwIP to handle my networking stack, which seems to work correctly on a higher-level (i.e. I can receive and send packets as expected). Any hint as to what might be happening would be appreciat
Hello, I'm currently testing the security features of OP-TEE and need to use the HUK function of SAES(CFG_STM32_SAES ?= y). However, I've found that after enabling OP-TEE, the optee-examples cannot run. May I ask what could be the reason for this? optee_example_secure_storage Prepare session with the TA E/LD: copy_section_headers:1124 sys_copy_from_ta_bin E/TC:? 1 ldelf_init_with_ldelf:152 ldelf failed with res: 0xffff0008 optee_example_secure_storage: TEEC_Opensession failed with code 0xffff0008 origin 0x3ST OpenSTLinux - Weston - (A Yocto Project Based Distro) 5.0.3-snapshot linux6.6.48
I have broken the SATEL-VL53L8 into its small PCB form and have connected it with flying wires (about a foot in length) to the NUCLEO-53L8A1A breakout board. It is wired in the I2C configuration and the J9 connector is also set to I2C.When I open up the Smart Presence Detection software, I only get a sparce reading of different array values, which I believe are coming from the ToF located on the NUCLEO board and not the SATEL. This looks to me like some sort of comms issue, but I am not sure how to tackle it.Has anyone experienced this issue and know how to rectify it?Thanks in advance!
Hi,I want to use STM32G431CB or STM32F411CEU6 to measure the time precisely.I need to know the external interrupt response time of GPIO,but I can not find it in datasheet and manual.can you tell me what is the value if the CPU frequency is 100MHz ?
Hi,I am using an STM32U545 on which I expect to use ADC4_IN1 and ADC4_IN18 in stop mode 2 (using LPBAM).I want to create two buffer (buff1 and buff2 uint16_t[32]) dedicated to each input.I want to read 32 samples from input1 then 32 samples from input2 and restart infintely.I don't find the correct way to configure LPBAM.In first try, I use an LPTIM1 as trigger I do :(sorry my project I can't get image of LPBAM configuration)1) ADC conversion (channel 1) => ADC Conversion (channel 20) and loop on first conf bloc and use LPTIM1 trigger for both => In this case each buffer contain values from correct input but i run only once2) If I do the same but loop on first data bloc => only last channel ise infinitrly sampled on both bufferCan someone help me to configure it correctly?ThanksHave a good day. Aurélien
uC – STM32U5G9NJH6Q Display – 720 × 720 (ST7703 panel) Display controller – ST7703 MIPI lanes – 2 lanes DSI Host Mode – Video Mode (DSI_VID_MODE_BURST) Pixel format – RGB888 Problem / Symptoms After the initial display setup (LP mode initialization sequence), the backlight turns ON, but no image is displayed on the LCD. I have verified that the MIPI DSI clock and data line waveforms are present and active on the scope — both lanes appear to be toggling correctly. Despite proper DSI signal activity, the panel remains blank (black screen), and there is no visible frame output from TouchGFX. What I have verified/working I can communicate with the display over DSI and run the initialization sequence (LP command mode) — panel responds, backlight comes on. LTDC timings & basic parameters match the panel spec and st7703.c values (see below). PHY frequency configured around panel-recommended range (450–510 MHz / VCO ~800 MHz–1 GHz). TouchGFX / display d
I'm not used to the automatic code completion feature at present. For example, the "for" code block is written as "for (init-statement; condition; inc-expression) {}". Could it be modified to have the code block written as "for (int i=0; i<size; i++) {}"? This would be much more convenient. Do you have such a configuration?
Hi all,I am having issues with Clock setup for Stm32h755. Especially regarding the M4 core. Currently, I only run the M4 core. The M7 core has no valid firmware. Is that even a supported mode?I try to setup a rather basic clock setup but the setup keeps failing at the call: HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4), which will return an not ok return value.I also tried using HSI and other different setups. But it seems the keep failing in the same way. Interestingly... When I simply ignore the error. Then most stuff seems to work just fine. I got ADC, SPI, Timers working. However, I am not sure where the issue is with the clock configuration.The entire clock setup: static void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; __HAL_RCC_SYSCFG_CLK_ENABLE(); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_Os
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.