Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hello everyone, I can't clerarly understand if it's possible to connect my display(HIMAX7019) too STM32F429 via LTDC. According to display datasheet I have to use all RGB0:RGB7 pins, but I cubeMX I have only RGB2:RGB7 pins. According to datasheet I found out that display is working on RGB 8bit parallel interface, but LTDC supports only 18 and 16 bit interfaces. So, is it possible to run the display? Where can I find lost RGB0:RGB1 pins?
Observation:I converted my huge project (80 screens) from 4.21.4 to 4.22.1 and now see that loading the project almost takes double time than before. It takes appx. 2 Minutes on my fast PC.At least the project was converted now successfully, which was not the case with version 4.22.0.BR. GS
Hello. I have the Riverdi 7' display with PoE addon. While I am working with a project for this display, where I am trying to implement the MQTT protocol, I am facing an issue that cannot understand. It has to do with the keep alive parameter, if I set it to zero then it acting normal. For instance it is able to read messages and also to print them to the UI. Nonetheless, if the keep alive parameter is greater to zero then the UI cannot render to the screen. The only thing I see is a black screen. I am using the LwIP library.The way that I am connecting the screen with the broker is that : void StartDefaultTask(void *argument){/* init code for USB_HOST */MX_USB_HOST_Init(); /* init code for LWIP */MX_LWIP_Init();/* USER CODE BEGIN StartDefaultTask */flag0.clear_flags = 0; // Clear all flags.struct mqtt_connect_client_info_t ci; // Create an information parameter about the client.client = mqtt_client_new(); // Initialize the new client instance./* Infinite loop */for(;;){if (m
I have a project that uses TouchGFX with an external parallel SRAM for the frame buffer and double buffer. Everything works as expected, But if I try to declare other variables in the external SRAM (A section defined outside of the display buffer range) sometimes it crashes when I try to access some of these variables. Is there any limitation when accessing the external SRAM when it is used as a frame buffer for a display (can other sections of the SRAM be used for other purposes)?this is a multi-threaded project. Linker definitions:MEMORY{....SDRAM_DISP_BUF (rw) : ORIGIN = 0xC00BF400, LENGTH = 0x84D00} /*frame buffer = 0xC0000000, double buffer 0xC005FA00, next free = 0xC00BF400*/.DisplayScratchSection (NOLOAD) : { *(.DISP_SCRATCH_Sect) } >SDRAM_DISP_BUF
On the project where I'm working on, we have the requirement that bitmaps should be loaded dynamically.Due to the restricted flash memory available, the L8_ARGB8888 + RLE compression (acceptable size/decompression values) format is proposed for storing the images. The images will be stored in the external (not memory-mapped) memory.As even the uncompressed L8 format manipulation is not quite clear to me I will start with that.Once an uncompressed L8 image is extracted from the elf file using the "arm-none-eabi-objcopy --dump-section" and that binary data is "seen" in the source code, how to load it in the dynamically created L8 bitmap?For example, here is the intake from the map file for the "image_minus" image.ExtFlashSection0x000000002400086c 0x38a4 ./Application/User/generated/image_minus.o0x000000002400086c image_minus_extra_data0x00000000240008d0 image_minusI'm guessing that"image_minus" contains only pixel data (index in the palette table) and the "image_minus_extra_data" contain
Our STM32L4S7 project is consuming internal flash much faster than we expected despite the fact that we've taken steps to move as many assets into external flash as we can, including SVG images.Our next approach is to see if we can split the TouchGFX code between internal and external flash and rely on XIP to run some of it. I've run some small XIP tests on our board with success so we know it's possible in theory.My primary question is what would be the best way to split the TouchGfx code between internal and external flash? I'm familiar with the linker script so I know how to place the modules, but I'm wondering which modules to put in external flash. Is TouchGFX designed in such a way to make this feasible?
Hello,I would like to improve the performance of a scrollable container by caching its sub-containers.My framebuffer is in ARGB2222 mode.My current problem is that I always get a Hardault for unaligned access even if my framebuffer is in a MPU region, as is the cache region.Is there an issue with what I am trying to do? Is this not possible with ARGB2222 mode?Thanks,Ivan
In TouchGFX online docs there is a Tip that I think it would be very interesting going deeper into.Are there examples? Someone tried this way? "Code StructureTIPOf course you do not need to use any features of the code generated by TouchGFX Designer but it will potentially save a lot of time. It is possible to do TouchGFX applications the old-school way by just adding the necessary files by hand.It is also possible to mix and match. For example, you can have screens that are not defined within the TouchGFX Designer project. You can add the gotoXYZ functions to the FrontendApplication class and add the views, presenters and transitions you need for your screen to the FrontendHeap. "https://support.touchgfx.com/docs/development/ui-development/software-architecture/code-structure
I want to program turning on/off display backlight to reduce power consumption. 1. how can i turn off / on display backlight led?2. I use dt022ctft on GFX01M2. 3. developement board is NUCLEO-G071RB
Hi. So I use the Nucleo-F746ZG board (STM32F746ZGT MCU) and got the display expansion board X-NUCLEO-GFX02Z1. As environment I normally use Keil uvision 5. STM offers a library only for XCube, so tried that out instead of using Keil but it gives me an incompatibility error. After having a look into the (deprecated?) library, I figured out that the expansion board uses a ILI9341 display controller and got the documentation for that and currently try communicating with the display controller without a library as of now. A first read command works, so I think the hardware should be ok. However, I would prefer using a library first of all, because it would be very time consuming to write a library myself. Also had a look in the internet, there are libraries on GitHub but mostly using SPI interface. Because of the pin mapping, I have to use the 8080 I MCU 8-bit parallel interface. Other ones using parallel interface are hard to adapt to STM32F746ZGT. So do you have any recommondations on ho
Hi there. I'm trying to figure out how to draw/fill rectangle with transparency. I can fill opaque rectangles without issues. I am using `stm32h750`, 320x240 ILI9341 LCD which supports RGB565 buffers. Below is the code that kinda works, but it generates weird colors. In that code, I'm using DMA2D_M2M_BLEND_FG with RGB565 color and I'm setting alpha for the rectangle in the foreground layer. How can I make it work? ```hdma2d.Instance = DMA2D;hdma2d.Init.Mode = DMA2D_M2M_BLEND_FG;hdma2d.Init.ColorMode = DMA2D_OUTPUT_RGB565;hdma2d.Init.AlphaInverted = DMA2D_REGULAR_ALPHA;hdma2d.Init.RedBlueSwap = DMA2D_RB_REGULAR;hdma2d.Init.OutputOffset = screen_width - rect.GetWidth();// Foregroundhdma2d.LayerCfg[1].AlphaMode = DMA2D_REPLACE_ALPHA;hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_RGB565;hdma2d.LayerCfg[1].InputOffset = 0;hdma2d.LayerCfg[1].InputAlpha = alpha;hdma2d.LayerCfg[1].RedBlueSwap = DMA2D_RB_REGULAR;hdma2d.LayerCfg[1].AlphaInverted = DMA2D_REGULAR_ALPHA;// Bac
Hello, I am having problems adding my library to my project. I added the .h file to Core/Inc and my .c file to Core/Src. I included the .h in Model.cpp since that is where I want to use it. I can use the definitions that are in my header file but not the functions. I think it is not able to properly link with the .c file and I do not know how to fix it.C:/TouchGFXProjects/test/TouchGFX/gui/src/model/Model.cpp:46: undefined reference to `i2c_master_write(unsigned char*, unsigned long)'
I'm getting the following artifacts in the display and as of today, haven't tracked down the cause. I've adjusted DSI clock timings, LTDC clock timings, and SRAM timings. Caching is configured as off for the SRAM via MPU. Any ideas?
Hello,I have downloaded the latest version,4.22.1 of Touch GFX and selected the Button Example.When I tried to create the project Touch GFX prompted "Object reference not set to an instance of an object error"Please see the log file attached. Mainly it gives the"`encode': U+0131 to IBM437 in conversion from UTF-16LE to UTF-8 to IBM437 (Encoding::UndefinedConversionError)" Actually this error was the reason why I switched from an older version to the latest version to get rid of it.However in the older version I was able to create the project but not able to run the simulator.Is something wrong with my PC and Windows 10 installation? Windows 10 is in English by the way.I will appreciate if you could help as I will start to design a UI for an STMH7 custom board.Thanks,Kutlu
I can configurate the touchGFX configurator with the stm32f746, i can open the .part and designer some figures and bottoms, these yes appears in the LCD, i use the hardware stm32f746 discoveryboard. But i no can active the function of the touch, have activate the I2C3 with 100khz, standard mode, as examples use the GFX Designer, but i no find put the FT5336 driver, or how i can configurete o call a these file autmatically ? i no understad how active the touch controller,
Hello,I am wondering what is a good way to tell TouchGFX with what objects of the backend to communicate. If for example my application has some backend object "Foo bar" that I want TouchGFX to communicate with, for now the only solution I see is to declare these objects with "extern Foo bar" in the model and essentially reference it as a global variable. For testing and simulation purposes it would be great to pass data (references/pointers) from the backend to the model, e.g., to the constructor. Is there an easy way to do this?Cheers, Max
Hi.I wish to modify some of the header files in TouchGFX itself.Concretely: I want to add both data members and virtual methods to:- touchgfx/containers/Container.hpp- mvp/Presenter.hpp Possible? No... The windows simulator crashes.Why? Most likely because one links to msvs/libtouchgfx_v143.lib which contains source files that absolutely expects those header files to not be edited.Then I try to compile all the source files instead of linking to the prebuilt one.Works? No… Some of the secret stuff cannot be found as source code. That’s fair. It’s a commercial product. But then what?The core files should be hackable enough that developers can build their own frameworks around them.How about splitting the libraries into two parts: One for the files that cannot be shared and the other for files that can.Cheers
Hello,is it possible to create a container including other containers during runtime? Backgrouns is that I would like to display up to 20 sensor readings on the display. The inner container includes a background, title, measurement value, status... The layout of the container is the same for all sensors so I would like to have a create-method that creates all the containers and holds them in an array so that I can change e.g. colors just with the array index.
Hi team,I am trying to run the TouchGFX example from STM32CubeIDE on the STM32F469I-DISCO board. Everything compiles and I am able to flash the target. However, it looks like many items from the menus are missing, see a few pictures of how the menus look like.Main screen: TouchGFX Presentation Demo screen:Alpha Blending - Bird Eat Coin screenGraph Demo screenIs there anything that could explain so many parts not moving? Touch inputs seems to work (swipe, scroll, touch).STM32CubeIDE version: 1.13.1STM32Cube MCU Package for STM32F4 Series: 1.27.1Let me know if any other information could be useful to troubleshoot this issue.Thanks!-Guillaume
Hi, still can't to upload frontend heap to my 8MB external SDRAM.My linker script: /* ****************************************************************************** ** ** File : LinkerScript.ld ** ** Author : STM32CubeIDE ** ** Abstract : Linker script for STM32H7 series ** 2048Kbytes FLASH and 1056Kbytes RAM ** ** Set heap size, stack size and stack location according ** to application requirements. ** ** Set memory bank area and size if external memory is used. ** ** Target : STMicroelectronics STM32 ** ** Distribution: The file is distributed as is, without any warranty ** of any kind. ** ***************************************************************************** ** @attention ** ** Copyright (c) 2022 STMicroelectronics. ** All rights reserved. ** ** This software is licensed under terms that can be found in the LICENSE file ** in the root directory of this software component. ** If no LICENSE file comes with this software, it is provided AS-IS. ** ***************************
Is it safe not do change the touchgfx screen, switch QSPI from and back to memory mapped mode, and only change the screen afterwards? Does Touchgfx access the QSPI only if the screen is switched or does it also access the QSPI if e.g. only a timer value is modified on the screen?Details:In some cases my application running on an STM32F4 with RTOS needs to store huge amount of data into the QSPI flash, which could take more than one minute. Currently, I display a message that it will take up to a few minutes and suspend the touchgfx thread until the data is written and the flash is switched back to memory mapped mode. During this time, the clock which is displayed on the screen is not updated and of course the screen is frozen. I want to give some feedback to the user during storage operation. One possibility would be to store the data in smaller chunks and therefore suspend and continue the touchgfx many times. The solution I ask here is not to suspend the touchgfx thread but avoid ope
Hi!I develop a project based on TouchGFX. It consists of 21 screens for now (in the future it will come to 30). I noticed that it becomes pretty hard for me to code the application flow. Many screens have several conditions to be transitioned to. There are some screens that has higher priority than the rest. There are some screens that should work kind of like an interrupt. So far I implement screen transitions in each screen and it starts to look spaghetti-like. It consists of many if's and else if's, becomes hard to read and understand the logic behind it.I also noticed that the TouchGFX has a bug, at least for me it looks like one. In general it is possible to perform a screen transition during ongoing one. What it does is change the the value of the variables in `makeTransition` function and possibly also members of the `MVPApplication` class instance. In my opinion it should be gaurded with some mutex or something alike. From my experience it can cause graphical artifacts. I
HiI've added a scroll list with 10 elements to my view. It works without issues but I would like to change how far it scrolls.When I scroll up, the list stops when the last element has reached the top of the area. I would like the scroll to stop as soon as the last element is fully visible at the bottom of the area. Is this possible?If I use a scrollable container I can get this behavior, but I would like to use a list./Henrik
I am working with Version 4.22.1 of the Designer since August and had no problem to generate code.Now I suddenly get the following issue: "Generate Code | Failed" The following text is printed in the log: Generate CodeGenerateDoneGenerate Assetsmake -f simulator/gcc/Makefile assets -j80 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487AllocationBase 0x0, BaseAddress 0x1050000, RegionSize 0xE0000, State 0x10000E:\TouchGFX\4.22.1\env\MinGW\msys\1.0\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0make: *** [assets] Error 1simulator/gcc/Makefile:32: recipe for target 'assets' failedFailedFailed I am not using the simulator. It seems to me that the problem only affects the simulator code generator. Right?Can I ignore the issue then? Any comments welcome!
Using Keil ARM MDK 5.37 with armclang.I migrated our TouchGFX 4.20 project to version 4.21.4 for testing if an annoying graph bug might be fixed.Now the binary is muuch larger and does not fit into microcontroller flash no more. I figured out that the new library contains references to C++ exception code.4.20 linker output (notice the library name libcpp_wnu)4.21.4 linker output (notice the library name libcpp_wnux)Likely this is due to the new library referencing to the symbol _The new library seems to reference the symbol "__aeabi_unwind_cpp_pr0" at various points where the old one does not. This leads to heaps of exception related code to be included afterwards.It seems as if the new lib has been built with -fexceptions.Is there a version without exceptions?Thank you,Lukas
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.