Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hello All,I'm working on my own project using an STM32H573x microcontroller. I use TouchGFX to design the display graphics, and the FMC module to interface with an ILI9341 display controller. Data is transferred to the FMC banks using DMA in linked-list mode.After some time, when the display is flooded with updates, it completely freezes. During debugging, I noticed that the DMA somehow stalls, and the interrupt for transfer completion never triggers again.I tried restarting the DMA module after it crashes, and it does work again, but the display performance becomes poor. This is understandable, since resetting the DMA takes time and causes some frames to be lost. I also noticed that after the first occurrence of the error, the reset DMA function gets called more and more often, which means the error is happening more frequently. This made me suspect an issue with the FMC configuration. However, I checked against the datasheet, and it seems correct for my case.Has anyone experienced a
Hello,I am trying to use Nucleo-H563ZI with SPI display (ILI9431) with Single Frame buffer but i couldn't configure it and didn't find appropriate example. Do anyone have used SPI display with Single Frame Buffer? Any help would be great.I do have sufficient space to implement single Frame Buffer. I am lacking knowledge for implementation.I have successfully used partial frame buffer but there was a problem, whenever i used .invalidate() to update textArea other box flicker in the display. On the partial frame buffer i used SPI with DMA. Thank youkind regards,Binod Basnet
Hi all,Hi Martin,@Martin KJELDSEN, now that version 4.26.0. of TouchGFX is out, I tried to migrate my huge project (90 screens) to this new release, but I can not get texts being generated.What I have done:I used the latest STM32CubeMX version (6.15.0) and regenerated code of the project with TouchGFX Version 4.26.0 selected. Then I opened TouchGFX Designer 4.26.0, migrated my project and generated code too.There were several warnings concerning the Unicode characters like the following sample:WARNING - Char 0xC0 is used but does not exist in the font!WARNING - A total of 64 Unicode characters did not exist in the font!In the first run, texts were generated correctly.But as soon as I change a text or add a new text, these changes are no longer regenerated when pressing "Generate code". Then I tried several things (proposed on a different post):- Change all wildcard character sets from 0x20...0xFF to 0x20...0x7E. Did not help!- Generate a bla
Hello STM family,As you know, building a project and trying it rapidly is fast enough at simulator in Touchgfx. However, we can not try every feature in simulator. So, we need to upload it to hardware. When pixel size is increased, binary file is also became bigger. Uploading that file on hardware takes considerable time. I wonder that how we can accelerate that time during development period. Best regards,Faruk Işıker
I'm seeing TouchGFX has been updated to 4.26.0 https://support.touchgfx.com/docs/miscellaneous/changelogUnfortunately, after having launched it, no pop-up appears asking for update https://support.touchgfx.com/docs/miscellaneous/updating-to-a-new-touchgfx-versionI'm noticing even on ST Download page isn't updated https://www.st.com/en/development-tools/touchgfxdesigner.html
Hi all,Can anyone give me a pointer of how-to organize and manage a group of widgets so I can enable and disable whole group together?If I have a group of buttons, gauge, text fields widgets and I need two different groups that overlap each other so I have to enable one and disable the other group and vice versa base on one toggle button states.I tried the containers method but unfortunately there are so many details that each group has to be differently so I can't implement the container. Each group has about 20 widgets, and it is just a mess (for me) to make these 20 widgets setVisible(true) vs. setVisible(false).Do any of you know how to organize these widgets as a group? So I can setVisible once for every widgets in the group?Thank you for your time.
We will constantly monitor whether the parameters of the language change in a background container. If they do change, we will apply the new language. But for components that are not in this container on the same screen, how can we resize them most appropriately?
So if you have a radio button with a callback function set via TouchGFX on click selected, the code generated in the BaseView has a typo in setActionIt uses the function SetAction (with capital S) which is wrongTO REPLICATE:Create a radio buttoncreate a Interactions "radio button is selected" that calls a virtual functiongenerate the codethe code generated:radioButton.SetAction(radioButtonSelectedCallback);instead ofradioButton.setAction(radioButtonSelectedCallback);On another note, no callback is called if the radio button is selected, even if seAction is manually fixed
For some reason, if you use a single radio button, and you want to de-select an already selected radio button, it won't work and the radio button keeps stay selected.The docs clearly states "Pushing the RadioButton again will return the to original state.". That's not the case. (Also, the documentation is spelled wrongly; it should be will return to the original state)https://support.touchgfx.com/docs/api/classes/classtouchgfx_1_1_radio_buttonI have tried both withouth a Group and with a Group for the radio button. I have also tried with multiple radio button both in the same group or with no group. There's no why to deselect the radio button once selected.I'm using TouchGFX Designer 4.25TO REPRODUCECreate a ViewAdd the standard radio buttonSimulate itClick the radio button (it will be selected)Try to click it again (it won't de-select)
NemaGFX already works baremetal on the STM32U5G9J-DK2.It probably only needs a little tweaking to get it working baremetal on the STM32H7S78-DK.So the software runs from external flash (XSPI2 0x70000000) and the frame buffer is located in external PSRAM (XSPI1 0x90000000).When the MCU writes to the frame buffer, it's displayed correctly on the screen.Then I tried to use NemaGFX but it starts hanging or generating memory traps (Fixed by now).I know NemaGFX works with RAM and not cache, so I've checked my MPU settings to rule out cache issues.My LinkerScript.ld:/* ****************************************************************************** ** @file : LinkerScript.ld ** @author : STM32CubeIDE ** Abstract : Linker script for STM32H7Sxx Device ** 64KBytes FLASH ** 456KBytes RAM ** 256MBytes EXTFLASH ** 32MBytes EXTRAM ** ** Target : STM32H7S7L8 ****************************************************************************** ** @attention ** ** Copyright (c) 2025 STMicroelectronics
I'm currently working with STM32F469IIT6 with an SDRAM called W9812G6KH in my own PCB. I tried to show the TouchGFX UI with LTDC interface connected to a LCD screen. But now I've encountered with a problem:It works fine with a static UI. However, every time I change the framebuffer, the screen flashes. This appears both for the single and double framebuffer.I tried to figure out the source code of this issue, and here's the result. Everytime we pass the code, the screen flashes.I think I know the meaning of the code but I have no idea about the solution of this issue. I read the document "AN4861:Introduction to LCD-TFT display controller (LTDC) on STM32 MCUs", I read the chapter "LTDC and DMA2D/CPU synchronization" and I followed the instructions but it was not working.So is there any other recommended solutions or advices to synchronize the LTDC and DMA2D/CPU?
I have a custom board with a 1024x600 display. It works fine.Some demo examples only work in lower resolution. I want to get those to work on my display.I was able to trick TouchGFX Designer to think lower resolutions are supported by changing AvailableResolutions in ApplicationTemplate.touchgfx.part. This sort of works, but you see some objects out of the window. It's wasted rendering time too.By changing pLayerCfg.ImageHeight of the LTDC I was able to get lower vertical resolution work. For instance 1024x300. This way the bottom half is black. Which is good.However, when I change pLayerCfg.ImageWidth to 800 I get garbage. I I set it to 1022 the image is skewed. I also played with pLayerCfg.WindowX0 and pLayerCfg.WindowX1, but it doesn't seem to do anything. #include "ltdc.h" /* USER CODE BEGIN 0 */ #include <gui_generated/common/SimConstants.hpp> /* USER CODE END 0 */ LTDC_HandleTypeDef hltdc; /* LTDC init function */ void MX_LTDC_Init(void) { /* USER CODE BEGIN LTDC_
After adding many text fields, resources, and typographies to a screen, I went to compile and was met with errors that generated base classes were using text IDs that did not exist. The text ID's had been added to the source files for the containers they were used in, but not to the header file or TEXTS enum.In an attempt to "clean" the project I deleted the contents of the TouchGFX/generated folder. The designer regenerates source files, but generated/texts/include/texts is empty. I have tried to add/remove resources in the designer so it would detect changes in the spreadsheet without any luck. With an empty folder my compile errors are now:../TouchGFX/target/generated/TouchGFXConfiguration.cpp:17:10: fatal error: texts/TypedTextDatabase.hpp: No such file or directory #include <texts/TypedTextDatabase.hpp> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~How can I force the designer to regenerate these files?
Hello Everyone,I'm using an STM32L496 (1MB of flash) with an MT25QL128A external flash memory (16MB) for graphics assets in my TouchGFX application. I'm finding that I'm running out of code memory (the memory on board the STM32, not the memory on the external flash - that has plenty of room left). I've got all of my normal TouchGFX graphics assets (texts, fonts, graphics) going onto the external flash as per typical TouchGFX setup, but I've still at 93% usage on the STM's internal flash. I believe this is mostly due that high number of screens. Is there any way to move all or most of the GUI code (view and presenter code) into external memory as well?
I have a custom stm32f746 project. Touchgfx main app is working. LCD is 800x480I developed a bootloader that is also working.Now just want minimum necessary peripherals to allow simple TEXT output to LCD to show bootloader status. Trying to keep bootloader to ~64k, so no TouchGFX.But, I have setup FMC, MPU, and LTDC similar to the main TouchGFX app.I am able to print 3 colored bars to the screen: uint16_t *fb = (uint16_t*)0xC0000000; // RGB565 view const int W = 800, H = 480; for (int y = 0; y < H; ++y) { uint16_t color = (y < H/3) ? 0xF800 : // Red (y < 2*H/3) ? 0x07E0 : // Green 0x001F; // Blue for (int x = 0; x < W; ++x) fb[y*W + x] = color; }Then when I try to print a smaller green box, it still fills across the width of the screen, distorted, and does not go from 40,320?: for (int y = 40; y < 120; ++y) for (int x = 40; x < 320; ++x) fb[y*800 + x] = 0x07E0;Then when I try to write text I get a thin fluctuating li
Hi,I am working with an STM32F769 MCU driving a 480×272 RGB565 TFT display through LTDC.Architecture:Framebuffer in external SDRAM (IS42S16800F-7TL, 16 MB) connected via FMC.LTDC + DMA2D used for graphics update (TouchGFX).I²C + DMA used to read/write parameters on an external FRAM.System managed with FreeRTOS.Problem:When a long I²C DMA transfer is running (FRAM read/write for parameter storage), I see horizontal glitches on the display: objects temporarily shift to the right (as if some pixels were missing).The curious part is that the phenomenon only happens if I change the initialization sequence in main() from this: MX_LTDC_Init(); HAL_Delay(1000); // avoid flickering on display MX_TouchGFX_Init(); HAL_Delay(200); // avoid flickering on display osKernelInitialize();…to this:MX_LTDC_Init(); HAL_Delay(1000); // avoid flickering on display MX_TouchGFX_Init(); HAL_Delay(200); // avoid flickering on display __NOP(); // added __NOP(); // added osKernelInitialize();adding only
Hi!I'm getting 2 round displays up and running using tGFX on an STM32F767 (custom board, external SDRAM and QSPI)I think almost everything is running but I have some weird artifacts. the clearest I can show is the color wheel test.While the image is 24-bit and the display is 18-bit I wonder why I see the clear lines across the display (Please disregard the red stripe horisontally - that's a smudge on the protective film)To me it would seem like something like a rounding of the color information but that would make much more sense if I was coming from less than 18-bit.Anyone who can offer some insights here or point me in a direction? I tried with a real image and certain colors just get REALLY wonky..
Hello STMicroelectronics engineers and fellow users,I recently purchased the STM32F746G-CU4 board and have been working on a project with it.The STM32F746 is an excellent processor, and I was particularly interested in its ability to control a touch screen, which is why I bought this board. Yesterday, I finally managed to install the TouchGFX software and set up my development environment.My plan today was to start by uploading a simple image to the display and then gradually research and practice the required features before integrating them into my equipment. TouchGFX has provided a very intuitive interface, and fortunately, I was able to upload an image to the board with just a few clicks. It is a very convenient environment for me.However, I’ve encountered some problems.When I downloaded the simplest images to the board (for example, just a plain white screen or a solid color), the screen displayed the color correctly. But when I uploaded the photo I wanted, the entire screen becam
Goal: I need to store my newly added assets (images, fonts and texts generated from STM's touchGFX designer) in the existing project (which already has set of assets in it).BUG: The newly added assets (maybe text area, image, fonts) to the existing project, are not displaying properly. (My assumption is, the added assets might be stored inside the internal flash, because of it's large space, the data is overflowing, because of this the image is not properly displaying, instead it should store inside the external flash, I am facing issues with storing the external flash despite enabling the mapped storage format in the touchGFX designer).Help me to implement how I can move the contents of internal flash to external flash, so that the assets will be stored inside the external flash.Thanks,
Hi all,I'm trying to use the partial frame buffer feature and I get the first two partial frames (40 lines), but TouchGFX does not seem to update the screen into the partial buffer. Just using TouchGFX no DMA, and no ChromArt. My home screen is :But the LCD only displaysLooking at the partial frame buffer, the rest of the screen is not rendered.Do I need to make some call in frame transfer to update to the next partial frame?ThanksArcher
Hello everyone,I am working on implementing display output using the STM32H747I-DISCO board. After designing the display in TouchGFX and generating the project code, I encounter a serious issue: when I modify the .ioc file (for example, enabling TIM or CAN), the onboard display that was working fine before suddenly shows heavy noise. To resolve this, I have carefully checked the clock configuration and excluded any pins that might affect the display during code generation, but unfortunately, I have not been able to solve the problem. If anyone has experienced a similar issue or knows a solution, I would greatly appreciate your advice.Thank you for taking the time to read this. For the chinese helpers…大家好,我正在使用 STM32H747I-DISCO 开发板实现显示输出功能。在 TouchGFX 中完成显示设计并生成工程代码后,出现了一个严重问题:当我修改 .ioc 文件(例如启用 TIM 或 CAN)时,原本正常工作的板载显示屏会出现严重的噪点。 为了解决这个问题,我已经仔细检查了时钟配置,并且在代码生成时避免使用可能影响显示的引脚,但最终仍然没有解决。 如果有朋友遇到过类似的问题,或者知道解决办法,非常希望能得到您的建议。感谢您抽时间阅读。
I was looking around to see if it was possible to drive the backlight of the display directly in TouchGFX code without having to pass the information to the backend to toggle it.I'm currently turning off/on the backlight with case CMD_BL_SET_HIGH: HAL_GPIO_WritePin(LCD_BL_ENABLE_GPIO_Port, LCD_BL_ENABLE_Pin, GPIO_PIN_SET); break; case CMD_BL_SET_LOW: HAL_GPIO_WritePin(LCD_BL_ENABLE_GPIO_Port, LCD_BL_ENABLE_Pin, GPIO_PIN_RESET); break;What I would like to do is to:Turn off the backlight (go into "standby mode")If in "standby mode" (it will always be in a certain view when "standby mode" is ON, when a new touch on the display is detected, turns the backlight ONIt seems it could be achieved with TouchGFX Touch Controller, but I'm not sureMy current approach is to have a message with a queue to another task running that triggers the HAL_GPIO_WritePinAny idea?
Hi Everyone,I’m working with a custom 24-bit display on an STM32H757XIH6 MCU.I’ve configured the LTDC with pixel format ARGB8888.When I test with solid fill colors, everything displays perfectly.However, when I try to display an image using TouchGFX Designer, the output appears as repeated, tiled, and shifted blocks instead of the correct image.I’ve attached a photo of the display for reference.Has anyone faced this issue before, or could guide me on how to resolve it please ?Thank you in Advanceshifted blocks /* LTDC init function */ void MX_LTDC_Init(void) { /* USER CODE BEGIN LTDC_Init 0 */ HAL_GPIO_WritePin(LCD_BL_GPIO_Port, LCD_BL_Pin, GPIO_PIN_SET); /* USER CODE END LTDC_Init 0 */ LTDC_LayerCfgTypeDef pLayerCfg = {0}; /* USER CODE BEGIN LTDC_Init 1 */ /* USER CODE END LTDC_Init 1 */ hltdc.Instance = LTDC; hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; hltdc.Init.PCPolari
Hello,I have a STM32U575 and a 2.3" TFT with ILI9341, i use TouchGFX, thats works fine, after my GPDMA1 is correctly configured. (I Hope my GPMDA1 is correctly configured, and it's not a problem with the Transmitting DMA)Now i have 3 Screens, (Red, Green, Blue) but i have the problem, the colors on my display was wrong."Red = Magenta","Green=Green","Blue=Black"The TFT is a RGB565, the Driver uses RGB565, the TFT is in the 16-Bit mode, and my SPI on 8-Bit mode.How must i change, to show the correct colors on my display?I found a thread in this forum, but there is no solution, only a hint "swap the bytes it's a problem between 16 bit display and 8 bit SPI...."..my code i use is attached. Thanks daniel
Hello, I am using my custom-developed STM32H7 PCB with an 800*480 TFT display connected via 24bpp RGB. Currently, I am only using external SDRAM (IS42S32800J) for the frame buffer, while my QSPI flash is inactive. For the configuration settings, I based them on the STM32H743I-EVAL board, which I also used as a template.In the attachment, I shared the color difference issue. Does anyone have suggestions regarding this? Because when viewed with the naked eye, there is a noticeable difference between the tones I designed in TouchGFX and the colors displayed on the screen. Could this be related to the ARGB888 format? Where might I be making a mistake? I have checked all the RGB pins in hardware, and they are all active and working. The comparative example in the image shows a color tone comparison made with the output taken from the STM32H735 DK.
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.