Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hi,I'm using a custom matrix orbital TFT display which is interfaced to the STM32H7B3-DK board through SPI. How to implement developed a UI from TouchGFX to the custom display. Referred to an FMC and SPI interface section, need better clarification. Please suggest a solution.
Hi Guys,I am working on one of the project, in that I have to read the TouchGFX assets from External flash and also sensor data from external flash.So, TouchGFX assets has to be read in Memory Map Mode and Sensor data has to be read in Indirect Mode.So in this I am not getting how to exit from the Memory Map mode to Indirect mode to read the Sensor data.I had followed below sequence but code is entering into error handle function.main(){ MX_QUADSPI_Init(); EnableMemoryMapMode(); MX_TouchGFX_Process(); QUADSPI->CCR &= (~(QUADSPI_CCR_FMODE)); HAL_QSPI_DeInit(&hqspi); MX_QUADSPI_Init(); /*from this function code is going into Error_Handler();*/ MX_FREERTOS_Init(); /* Start scheduler */ osKernelStart(); while(1) { }}Any kind help will be appreciated.Thank You.
Hello there, I am actually new in coding STM32 boards. I am currently working on an STM32 F746G-DISCO. i am using the "LCD_UsrLog ((char *)" to print messages on the LCD tft screen. I am wondering if there some high level function that enables me to clear the messages I show (only messages and not the totality of the screen.Thank you in advance
I'm working on a project based on STM32F769ii MCU with external Flash via Qaud-SPI and 480x800 DSI LCD(no onboard GRAM). I have successfully integrated TouchGFX into my project however I see unexpected artefacts with the image widgets. Box widgets are drawn correctly. I use a button in my project to invalidate the image and box widgets to force them to be redrawn by doing so image widgets colour is wrong 80% of the times with no issues with the box widget.TouchGFX is set up for double buffering with each buffer located in a separate bank on the SDRAM chip. moving the image files into the internal flash didn't solve the issue. I also tried RGB888 and RGB556 configurations, the system behaves the same.The first image is what I'm expecting to see and the second image is what is depicted on the LCD.Any idea how I can fix this issue?
Hi All,I am trying to work out wiring for my discovery board with an ILI9488 TFT Display (MIPI-DBI 16 bit) and as I was going through Discovery board schematics for reference. I checked the default board configuration in STM32CubeMx but the RGB565 (16) pinouts don't match with the one shown in schematics. For example:In the RGB data pins only G2 - G7 || R3 to R7 || B3 to B7 are configured. Although these 16 pins matches the number of data pins on my display controller, does the RGB565 defines somewhere as to which bits from RG & B will be missing? (Sry I just cant find RGB565 standard anywhere)The LCD schematics above has Tearing Effect (TE) pin which isn't mapped in LTDC GPIO. How is this pin configured ? Other then that, my TFT display is missing the HSYNC and VSYNC signals as the ILI9488 is configured in MIPI - DBI (16 bit) mode. Is there a way to configure LTDC without these signals? Below is a pinout for this display .. just need to figure out how to map them to ST
..
I asked this question in the following thread:https://community.st.com/s/question/0D53W000003vv9GSAQ/cacheable-container-does-not-work-when-display-orientation-is-landscape-and-width-heightBut received no responses, so I decided to create it's own thread and ask the question specific to image painters. I believe there is a bug in TouchGFX. It shows up 4.15.0 and 4.16.1 (I am not sure about other versions). I will explain the process to recreate it below (then maybe I'll get some responses?).I am having this problem on my custom board, but was able to recreate it with the STM32F769I Discovery Kit template and simulate it. It is an 800x480 display, and I have selected Portrait Display Orientation (the opposite of the native orientation of the display):I added an image which will be painted in a circle. Here is the image's settings in the Image Format tab of the Designer:I placed this in a circle. Here is the Designer circle's parameters:It shows up in the Designer (above), but DOES NOT S
Hi, For a new project, We have our custom board with STM32L4R9ZI IC. In our hardware setup, we don't have an external RAM to use Double Buffer. So we are using Single Buffer for rendering purpose. we have our UI with transitions like Carousel, Cover. And also we are using TextureMapper to Rotate Image. We implemented above functionalities in our UI. When we use PC Simulator, Transitions and animations are looking great. But As we test the code in our hardware display refresh is too slow.Could you please let us know, if there is any way to setup the hardware features in PC simulator to test as the hardware?Or If you have any Emulator to test the Hardware features please let us know.Thanks and Regards,Bala
I'm trying a palette that goes from white to red and red to green. Following this article https://support.touchgfx.com/docs/development/ui-development/scenarios/creating-dynamic-l8-images, I could make the columns colored. But I couldn't make it 3 colored.BitmapId dynamicBitmap1 = Bitmap::dynamicBitmapCreate(200, 10, Bitmap::L8, Bitmap::CLUT_FORMAT_L8_RGB888); imageDynamic.setBitmap(Bitmap(dynamicBitmap1)); if (dynamicBitmap1 == BITMAP_INVALID) { touchgfx_printf("Unable to create dynamic bitmap\n"); } else { uint8_t* data = Bitmap::dynamicBitmapGetAddress(dynamicBitmap1); uint8_t* pixel = data; //make colored columns for (int y = 0; y < 10; y++) { for (int x = 0; x < 200; x++) { *pixel++ = x; } } uint32_t byteSize = 200 * 10; byteSize = ((byteSize + 3) & ~3); //Palette starts four bytes after the pixels uint8_t* pal = (data + byteSize + 3); //Make palette with 256 colors from white to red, red
I started a new project in TouchGFX with the template of STM32F746G-DISCO board. I then generated code on a blank screen, and opened the MX file in CubeMX. After verifying correct settings, I generated the code for the project in STM32CubeIDE. To my surprise, the project does not show the partial file of TouchGFX generator, nor does it show the .ioc file in the Project pane. I am unable to edit the app in TouchGFX Generator. Pl help.
HiCurrently in the project, I am using a custom container and want to implement DragEvent and ClickEvent in the custom container. I follow the instructions to configure my container.hpp and container.cpp, but nothing works.I use the same method in the main interface can be used normally, do I need other configuration?Thank you in advance for your help.
Hi,In the process for learning to use TouchGFX, I encounter a weird issue, confirmed with two different boards and two different TGFX application templates:When I generate the project with TGFX Designer, import it in CubeIDE, compile it; set the right external flash loader and launch it, it works as expected.But, if I open the .ioc file with cubeMX (both version: embedded in CubeIDE or standalone) regenerate the code (without upgrading the Cube firmware package version) and launch the software, it run without error but only display the background image but not the text for the first board (32G071) and the animation for the second (32F412).In addition, If I allow CubeMX to upgrade the firmware package then the project become unusable and can’t compile: the folder containing the HAL (ProjectRoot\Drivers\STM32G0xx_HAL_Driver) is cleared by the upgrade process.My IDE install is fresh, as the workspace used for those testsI use : CubeIDE 1.51 with embedded CubeMX Version: 6.1.1-RC2&nb
Really need to implement a external data reader with a display that only has the capability of 24 bpp of color depth. If i make the change between RGB565 to RGB88 manually on the Display_Bitmap function the speed dercreases a lot. So it would be possible to have the 24 bpp selected in the touchgfx configuration and make a external data reader manually?
Hi,The minute hand of the Analog clock increments in hours so unlike a real analog clock the hour hand always points exactly to a digit; never in-between. This results in misreading the clock.eg: if the time is three minutes to ten, the hour hand points at nine so the clock time looks like its three minutes to nine when in fact it is 3 minuted to ten. The hour hand should have four or five intervals between hour so this doe not occur. So if the clock was in the last 10 minutes of the hour the hour hand would be 4/5 of the interval between the hours.Magnum confusion!I thought I had set the hours incorrectly as the digital clock read:09:56:20Whilst the analog clock looked like it was 08:56:20To me an analog clock should simulate analog behaviour of all of the hands. It is probably not required for the minute hand but definitely the hour hand.What do other people think?
Hello,I made an interaction for a Flex button to call a function with TouchGFX Designer 4.15.0.I closed TouchGFX Designer and reopen the project file that I saved, the interaction is not bound to any button. (See the image below)When I press [Generate Code] button on TouchGFX Designer, the interaction in ViewBase class is overwritten and deleted.However .touchgfx file is not changed at all, so I can see the interaction is bound to button if I open the project file with text editor.This bug does not always occur. and other interactions in the same screen or the other screen is not affected.Hope this issue would be fixed soon.Shimpei.
When using scroll wheel with text area, the controller falls into a hard fault, when I use the function scrollWheel1.animateToItem(ItemCounter, 30). No problem with other widgetshttps://github.com/vitamin18/touchgfx_example.git
I want to put my font data into external flash from internal flash. So, I configure and implement my code following docs of touchgfx-4.16. https://support.touchgfx.com/docs/development/scenarios/using-serial-flashThere are some source codes;static FontFlashReader fontReader; static STM32TouchController tc; //static STM32L4DMA dma; static NoDMA dma; //static LCD24bpp display; static LCD16bppSerialFlash display(fontReader); static ApplicationFontProvider fontProvider; static Texts texts; static TouchGFXHAL hal(dma, display, tc, 320, 360); static WatchButtonController buttonController; void touchgfx_init() { Bitmap::registerBitmapDatabase(BitmapDatabase::getInstance(), BitmapDatabase::getInstanceSize()); TypedText::registerTexts(&texts); Texts::setLanguage(0); hal.setDataReader(&fontReader); fontProvider.setFlashReader(&fontReader); FontManager::setFontProvider(&fontProvider); FrontendHeap& heap = FrontendHeap::getInstance();
I am new to the STM world. I was drawn to the STM because of the beautiful graphics I see in demo's and I would love my HMI's to look that advanced. I am having trouble trying to figure out just what software to use to build an HMI/GUI. Everything I read says TouchGFX but then I click on the "Premium Content Webinar " and they show me Embedded Wizard. In general there seems to be a never ending sea of links that lead to more confusion when clicked. Can anybody set me straight?
Same known Issue!I'm working on a project with an STM32F746BGT6 microcontroller with external RAM and nor-flash memory. in the CubeMX, I configured FreeRTOS version 2 and have two tasks (128 words + 8192 words) and LTDC configured correctly (I believe) with TouchGFX. when I add "MX_TouchGFX_Process()" to the task, the program crashed and I get the following Error. But when I commented out "MX_TouchGFX_Process()", the program run correctly (I tested with LED blink).attempts to increase stack size with no luck :persevering_face:. noted that I updated the TouchGFX to 4.16 (not 4.16.1), maybe the issue caused by the new release (God knows).Any help will be appreciated.
If I alternate a text between displaying a pair of floating point numbers, e.g. 10.0005 and 5.0000, very briefly these are drawn incorrectly as 10.0000 and 5.0005, before the correct value is drawn. There seems to be a lag between the first and last character updated.This is using snprintf() to update a char array from the float, then Unicode::strncpy() to update the text buffer from the char array, finally invalidating the text.
I am trying to interface a TFT which has ILI9341 driver with Touch capability.It is not giving any response. I am using Keil IDE + STm32F407VG board + 2.8" TFT. For more information You can check my code which I attached with it.Thanks
Hi, When I was creating a UI template before format my laptop, it was ok. But now, When I was trying to create an ui temp, I got the error like object reference not set to an instance of an object. What is the problem?
Hi st community members,I'm having some stranges behaviors with the DSI and LTDC, I use these peripherals to communicate with my screen driver. The driver need an init to give specific values for some registers, this step is well done.After that i'm able to write pixel data thanks to the buffer area dedicated to the LTDC peripheral and with the command HAL_DSI_Refresh(&hdsi);.My problem is that I need to write two times at least in the buffer area before the refresh to write correctly all the pixels data.For exemple on the picture below, I write a full green screen (2 times needed with 0x00FF00) and after that I restart my program with only 1 write but with less green (0x00AA00). As you can see on the picture I have a partial write, at the right it remain the previous value (0x00FF00).And when i take an oscillo I'm able to see that the sended data is not always 0x00AA00, I have the previous value 0x00FF00 instead. So after that I have verified the data in the LTDC buffer
HiI have a scroll wheel that selects number. When I change the scroll wheel I wish to raise a virtual function that returns the selected value.How do I do this?
I am using TouchGFX 4.16.1 and i will be using 800x480 display. I want to use table on display. I have 5-6 Parameter and has 50 entries total. So for this i want to use table to display the data. Is there any widgets or method to display table?Here is the example
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.