Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hi,We have been using TouchGFX for our interfaces with a screen that has the following specifications (see datasheet extract below). We have noticed that in the graphics displayed on the screen, the length and width per pixels are not uniform. Upon further investigation, we found that the pixel pitch on our screen is also not uniform, as highlighted in the datasheet extract below.This inconsistency is particularly noticeable in circular objects. The circular object here is a perfect circle but it displays a bit squished.Is there any solution for this matter that can be resolved through device configuration settings, such as a scaling factor in the x/y directions that we can configure? or please feel free to suggest any workarounds for this issue.Thanks,
Hi ST Community,I've ported touchgfx on my custom board, and it runs successfully. The hardware and software configuration is as follows,HW configuration CPU -> STM32L4R9 familySW configuration IAR 8.30 TouchGFX Designer 4.9.3Now, I'm trying to upgrade TouchGFX Designer to 4.10.0, I do the following steps,open the project in TouchGFX Designer 4.10.0, and choose "Yes" to upgrade (TouchGFX Designer 4.10.0 will download something, seems like touchgfx core)run simulator successfullygenerate code in TouchGFX Designer 4.10.0open the project in IAR, and rebuild the projectdownload the image to the custom board, and it crash.I backup the call stack when crashing as follows. It crash when touchgfx_generic_init() -> FrontendHeap::getInstance(); is called.HardFault_Handler<Exception frame>[_ZN8touchgfx6Screen4drawEv + 0x23][_ZN8touchgfx11ApplicationC1Ev + 0x61]touchgfx::MVPApplication::MVPApplication()touchgfx::MVPApplication::subobject MVPApplication()FrontendApplicationBase::Fron
Hello,I've bought the Riverdi RVT70HSSNWC00-B STM32H7 embedded display.But i'm unable to flash my app to the board.Here are the log from touchGFX : ------------------------------------------------------------------- STM32CubeProgrammer v2.11.0 ------------------------------------------------------------------- ST-LINK SN : 39FF6D064E56363921500143 ST-LINK FW : V2J40S7 Board : -- Voltage : 3.28V SWD freq : 4000 KHz Connect mode: Normal Reset mode : Software reset Device ID : 0x450 Revision ID : Rev V Error: Database: There's no active configuration for this device. All the 8 configurations are disabled! Error: Database: There's no active configuration for this device. All the 8 configurations are disabled! Device name : STM32H7xx Flash size : 63 KBytes (default) Device type : MCU Device CPU : Cortex-M7 BL Version : -- Warning: Write address is ignored for hex, Srec, s19 and elf files Memory Programming ... Opening and parsing file: intflash.hex File :
Hi all,I am trying to config the LTDC, after config and generating the code by cubeMx, I see some config like the below: pLayerCfg.Alpha = 0; pLayerCfg.Alpha0 = 0; pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA; pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA; My config is the same as below:And I have tried to change some items for exploring as below:I can easily understand that L1_Alpha controls the transparency of Layer1, but others seems not clear.I am confused about what these items mean. Can some document introduce me to how to calculate the RGB result?Thanks a lot.
Hello, I am new to TouchGFX. I am developping an UI forSTM32F746G-DISCOVERY board. The goal of my UI is that the user can choose some value of variables and then send it to an other device using CAN bus. All the graphical part is working well, I use three screens and model to acces the variables from all the screens. However, when I want to use the CAN, I face some issues. CAN driver have been made by my teamworker. I wanted to include the CAN driver file to the Model.cpp but I have includes errors. So I tried to include the stm32f7xx_hal_can.h provided by the project but it doesn't work.Any idea for including the CAN driver? Maybe I should not include it in the main.cpp.Thank youLucasCompilation error message:Converting imagesCompiling gui/src/model/Model.cppIn file included from gui/src/model/../../../../Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_can.h:45:0, from gui/src/model/Model.cpp
HiCurrently we are developing a project based on the STM32H723.The project is a platform for different derivates.It uses as well Azure RTOS.We used STM32CubeMX to generate reference code.But at the end we modified the generated code and organized ourself the project and folder structure.It is well integrated in the STM32CubeIDE.Until now we had no graphical interface. But for a new project we need this.I have already good experience with TouchGFX itself on a NUCLEO Board (STM32H723) with a SPI interface to the display.But not with the integration to another project.Right now we are trying to include somehow a simple TouchGFX project into our existing project.There is nice explication on the web how to integrate the existing TouchGFX projecthttps://support.touchgfx.com/docs/development/ui-development/working-with-touchgfx/using-ides-with-touchgfxI followed the instructions. But I get an error when compiling the project.I included the necessary files into the project and added also the i
Hello, in my project, I will be communicating via CAN with an STM32H735_G and a cluster of car components. I have a sequence of test examples. For exemple , if I send a specific frame to activate a feature within the car cluster, I aim to manage these test sequences using TouchGFX. For example, if I press Button 1 on the TouchGFX interface, a communication session can initiate between the cluster and the STM32 and first test begin if i press in other button second test done . can i do this with touch gfx
I am starting my journey with STM32 and want to develop a GUI based project using TouchGFX Designer then later on add user code to it from STM32CubeIDE.I have created a simple project which displays the text 'Hello World' in the centre of the LCD screen using TouchGFX Designer and targeted it to STM32F469I-DISCO. This project loads and runs absolutely fine on the target from TouchGFX Designer.Without doing anything else I then opened the '.cproject' in the STM32CubeIDE folder that was generated by TouchGFX Designer. I built the project and loaded the .elf file to the target using STM32CubeProgrammer. This loads but gives an error of data mismatch at 0x90000000 when programming, this may be the cause of the problem..Having examined the .map file I think that this address is in QSPI flash and is used to store the text fonts etc. so it would make sense that if this can't be programmed the text won't be rendered on the screen.I can't see a way in STM32CubeProgrammer to control external QSP
Hello.During rapid screen switching, TouchGFX becomes stuck randomly in takeFrameBufferSemaphore().The issue reproduces within 1 hour after startup. We use TouchGfx 4.18.1 on STM32F439 and TouchGfx runs on external SDRAM. Also we have observed that DMA_Interface "isRunning" status was continuously 1 when TouchGfx was struck.Could you help me out? Also, when does the DMA's running status get cleared?
TouchGFX 4.15.0 and ST-LINK 4.6 and CubeProgram 2.6.0 installed to our system Windows 10 64Bit. Board Development STM32F746G Discovery.I'm tring to run touchgfx samples on the STM32F746G Discovery, every thing goes well and it seems code download completed but display shows nothing but noise.i found one error in the report:Producing additional output formats... target.hex - Combined internal+external hex intflash.elf - Internal flash, elf debug intflash.hex - Internal flash, hex extflash.bin - External flash, binary Done Flash make -f ../gcc/Makefile flash -j8 Reading TouchGFX/application.config Linking TouchGFX/build/bin/target.elf Producing additional output formats... target.hex - Combined inter
Hi,after reviewing answers to following posthttps://community.st.com/t5/stm32-mcus-touchgfx-and-gui/how-to-draw-pixel-line-or-rectangle/td-p/105737and as a TouchGFX newby, I'm wondering: how one expects to do a following task by using TouchGFX's:there are two images and some fading effect needs to be done: pseudo-random pixels from one hidden in-memory image A being moved to corresponding pixels of currently displayed image B, replacing them one by one, eventually making all pixels of image A equal to pixels of image B.Does it need to be addressed in TouchFGX by creating single-pixel "Line" widget objects for each pixel? Seems like extremely inefficient... Are there any other options to do so?Thanks
Hello,I've successfully ported my LCD init code from ESP32 to STM32, and it runs, it shows an image from Flash. And all works now. I use RGB666 LCD from AdaFruit and I want to add some graphics library to it. I don't need and touch inputs. I did installed the TouchGFX but I could not disable the Touch input necessary . would you please guide me. I only need a graphics library sections of it.
I created TouchGFX Demo7 by selecting the STM32F769I Discovery Kit.After generating code, I ran the run simulator to check that it was running on the PC, and then downloaded the program to the STM32F769I Discovery Kit through Run target.In the photo above, you can no longer move on to the next step.I also tried converting the file using ffmpeg-2023-06-04-git-b1c3d81e71-full_build, but the result was the same.How do I get the Kit to work properly?
Hello everyone in the community.I wanted to create a screen for "stm32f207zgt6" using "TouchGFX 4.23.1 Designer", but the board I wanted to use did not exist in the board options.How should I create a screen in this case?Also, after creating the screen, how can I program it with "cubeIDE"?It would be helpful if you could explain it clearly.
I have an intermittent problem with both TouchGFX and BSP LCD on startup.I have the same problem on two boards.Sometimes it starts and displays correctly, sometimes I get a greenish background - see below.Running LCD_init() again does not clear the problem.The problem exists from both power up as well as black button reset.I think it may be a register in the LCD driver that is not being initialised correctly.void MLX_LCD_Init() { uint8_t lcd_status = LCD_OK; HAL_Delay(500); lcd_status=BSP_LCD_Init(); while(lcd_status != LCD_OK) HAL_Delay(10); BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER_BACKGROUND, LCD_FB_START_ADDRESS); BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER_BACKGROUND); BSP_LCD_Clear(LCD_COLOR_BLACK); BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER_FOREGROUND, LCD_BG_LAYER_ADDRESS); BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER_FOREGROUND); BSP_LCD_Clear(LCD_COLOR_BLACK); BSP_LCD_DisplayOn(); BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER_
Hi,I was following the video in the link https://www.youtube.com/watch?v=vy1c1LbypuM on how to make the screen below, but the video uses version 4.18.0. I need to figure out how to make the background for the text using the current version. In version 4.18, the procedure corresponding to the figure below was used. Is there an equivalent procedure in version 4.22.1?
Posted on January 24, 2013 at 08:05Hi,I am using STM32F4 discovery board and ported STM32_Eval DCMI(From OV2640)example to work with OV3640.I used OV3640 to grab RGB image using settings from http://www.arducam.com/download/library QVGA setting. I could get image using my ported firmware and can see it in Irfanview(although looks very weird).I am using same firmware with modified register setting(as per arducam library) for OV5642 module but somehow I am unable to get the image. I am getting DCMI_IT_FRAME interrupt but I think it is wrong because I am not getting any DMA interrupt which I think I should get. I can read OV5642 chipid using I2C interface correctly, Also I can read/write register correctly.I am using 8MHz STM32F4 clock output(MCO1) to drive OV5642 clock.Does any one have idea why I am not getting any DMA interrupt? ST peripheral library have register setting for OV2640 and OV9655 module. Where can i get similar register setting for OV3640/OV5642 module?Reg
Hello!I need to be able to enable and disable touch screen from my GUI application. I don't want to cut the power to the touchscreen.I want my handle click functions on multiple screens to not to respond to touch events for some time after certain point of time or another event. So I imagine a function in Model class that would somehow enable and disable touch events. How can I achieve that the best way?I guess it is not a good idea to have a flag in touchController (if the flag is set, return false from sampleTouch...)Thank you.
In TouchGFX(4.22.0),I want to implement a curve similar to the following imageActually it is an SVG image, is it possible to change its path and gradient color using a program in TouchGFX? What I mean is not using ‘SVG Image’, but simply using a programmatic approach(the path may not be so complicated). <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 23.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" baseProfile="basic" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 784 350.2" xml:space="preserve"> <g> <g clip-path="url(#SVGID_2_)"> <defs> <rect id="SVGID_7_" x="4.7" y="0" width="1280.2" height="1280.2"/> </defs> <clipPath id="SVGID_8_"> <use xlink:href="#SVGID_7_" overflow="visible"/> </clipPath> <linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse"
I want the user to hold a button for at least 3 seconds before it triggers its interaction. So I created a Repeat Button, because the documentation says on delay: "Delay specifies the time (ms) to wait when the button is pressed before starting the loop of triggers."But when I configure a delay of e.g. 2000 ms and an interval time of 8000 ms, it triggers immediately and then after 2 seconds (and then every 8 seconds). Is this misleading in the documentation or a wrong behavior of the button?
My HW is NUCLEO-F446RE and X-NUCLEO-GFX01M1.TouchGFX is configured in partial frame buffer (3x1920 bytes)In the project I use FreeRTOS API CMSIS V2.The assert in question occurs randomly:assertion "state[nextSendingBlock] == DRAWN" failed: file "../Middlewares/ST/touchgfx/framework/include/touchgfx/hal/FrameBufferAllocator.hpp", line 241, function: const touchgfx::Rect& touchgfx::ManyBlockAllocator<block_size, blocks, bytes_pr_pixel>::peekBlockForTransfer() [with long unsigned int block_size = 1920; long unsigned int blocks = 3; long unsigned int bytes_pr_pixel = 2]When the assert occurs, the state fields are all EMPTY.
I am looking to implement back button to go back to previous screen (similar to UI on a smart phone). For this,1. Need to remember current screen before a button is pressed.2. In the new screen, when a back button is pressed, programmatically change to previous screen. It would need a common memory area where current screen can be saved. This information should be accessible from any screen so that it can be read when a back button on that particular screen is pressed. Here is a scenario:There is title bar with a button, say Button1.Screen 1 leads to Screen 2. Screen 2 leads to Screen 3. All screens have title bar with same Button1.Two ways to reach screen 3. First, by clicking the Button1 on title bar (a short cut). Second, Screen1 to Screen 2 to Screen3.Screen3 has a back button.When present screen is Screen1 and Screen3 is reached by pressing the Button1, if a back button is pressed in Screen3 then Screen1 should be reached.When transition is Screen1 to Screen2 to Screen3, if a
Hello,Can someone at ST provide explicit, step-by-step instructions describing in detail how to generate a project for the STM32H755 with TouchGFX running on the CM7 processor? All the posts I've seen online seem to describe ways of hacking projects together involving copying, editing, copying .cproject files, moving TouchGFX files around, deleting simulation files, etc. I've spent days on this now and always seems to end up with a project that can't build because the tools can't find TouchGFX files because TouchGFX generated those files in the wrong place (according to where CubeIDE thought they should be). My board has a working SDRAM, working LTDC correctly displaying whatever I write to the frame buffer in the SDRAM, etc. I have regenerated this project countless times now but always end up in the same place.1. What tool should I be starting my project with? CubeIDE? CubeMX? TouchGFX?2. What should the project structure look like when configured properly? What does the project dire
Hi,For TrustZone enabled project (U5), TouchGFX configuration in CubeMX can't recognize enabled THREADX.Any ideas?Two screenshots attached:one for TrustZone enabled project setup and another one for the exact same but Non-TrustZone project.For the former it can be seen that THREADX option is greyed-out and cannot be selected, while for latter everything highlighted as expected.CubeMX generates correct project for non-TrustZone enabled project.TouchGFX version is 23.1, CubeMX is 6.10.0Thanks
I have been struggling for a few days now with trying to trigger an interaction within TouchGFX (V4.23.1) via a hardware button.The board is a STM32H747i Discovery. The board bring up has been completed with a standard TouchGFX template and the touch screen and display are working fine.I have verified that I can toggle LED4 with the wake button suing a RTOS function #define LED4_GPIO_Port GPIOI #define LED4_Pin GPIO_PIN_15 ... /* USER CODE BEGIN RTOS_THREADS */ osThreadId_t toggleLEDTaskHandle; const osThreadAttr_t toggleLEDTask_attributes = { .name = "toggleLEDTask", .stack_size = 128 * 4, // Adjust stack size as needed .priority = (osPriority_t) osPriorityNormal, }; toggleLEDTaskHandle = osThreadNew(ToggleLEDTask, NULL, &toggleLEDTask_attributes); /* USER CODE END RTOS_THREADS */ ... /* USER CODE BEGIN 4 */ void ToggleLEDTask(void *argument) { uint8_t ledState = 0; // Track LED state, 0 = off, 1 = on for(;;) { if(HAL_GPIO_ReadPin(BTN_USER_G
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.