Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
In TouchGFX 4.26.0 image order changes in application.config even if those images don't change.This causes unnecessary changes to show up in git: Feature request is to either preserve the order or to have them always lexicographically sorted.
I want to design according to the Figma design, but I have no clue.How can I make the menu follow the selection in the simulator? If I want the last menu to scroll down.
Hi Team,Is there any framework or lib support available from ST for automation testing of TouchGFX based UI either on simulator or on actual device?If anyone has any idea or workaround, then please share!Thanks
Hi, I made a custom board and made a design in touchgfx. But my screen keeps being black.I want to confirm something because I think I made a mistake in my design. I selected the following display:MDT0130CIS-MULTI:https://www.farnell.com/datasheets/4321575.pdf?_gl=1*vshmrc*_gcl_aw*R0NMLjE3NzUxMjEwOTIuRUFJYUlRb2JDaE1JM1BxQnEtbk9rd01WdHprR0FCMXQ5Z2k1RUFRWUFTQUJFZ0xmZVBEX0J3RQ..*_gcl_au*MTM4MTIxMjM2Mi4xNzc2NDEzMzk5 Now in the datasheet from the ST7789V driver which is on board of the MDT0130CIS-MULTI display it says the following.Can I conclude from this that I cant drive this display with LTDC and Touch GFX?Kind regards, WilliamP.S.I included my .ioc file and main.c file if that could help.
i need build a slider as following picture, when i change the item up and down , at the same time, the slider need move up and down with the item's movement;
Hi everyone,I have a screen project displaying a camera image using an STM32N6. I've validated and run several peripherals like DCMIPP and DMA2D. I'm currently displaying a 720x576 resolution image from DCMIPP on the screen via layer 2 using bitmap addressing.My question is: Since I'm using internal RAM, Touchgfx uses one layer, and one layer is used for the camera. Because I'm not processing any bitmaps and need space, I've significantly reduced the size of the cmd_list area. After adding all this, I have about 300kB of free RAM left.Now, what I need is to be able to see this camera image in full size on my 1024x600 px screen. However, I want to know if this enlargement is possible and if it requires a cmd_list, i.e., vector graphics.Will I use vector graphics for this? Will GPU2D use the RAM allocated for layer 2 for this operation, or will it require an additional amount of RAM equal to the screen size? Best Regards,Onur
I have created a project with a scroll wheel of 10 items, each item is displaying a single digit 0-9. Imagine an odometer for instance. I am incrementing a variable(num) every second and usingscrollWheel.animateToItem(num, 20);to scroll through the list of items, it is working as expected until it gets to 9. Instead of it the scroll wheel continuing to rotate the same direction to 0 it reverses the direction of rotation and scroll past all other digits to get back to zero. I have verified I have the scroll wheel set as "Circular" and it does indeed display the scroll wheel correctly as if it was circular. Can I somehow change this behavior?
Good day, ST community,I am writing to inquire about the possibility of updating the custom container used on each screen when a new change is made to the custom container template. Currently, I am required to delete the old custom container widget on all my screens and add the new updated container manually each time. Thank you in advance for your assistance.
After updating from TouchGFX 4.24.x to 4.26.0, the code generated cannot be compiled w/o manual correction - there are commas missing: const touchgfx::AbstractShape::ShapePoint<float> downArrowDisplayPoints[4] = { { 0.0f, 0.0f }, { 80.0f, 0.0f }, { 40.0f, 10.0f }{ 40.0f, 10.0f } };downArrowDisplay.setShape(downArrowDisplayPoints);downArrowDisplay.setVisible(false);add(downArrowDisplay); upArrowDisplay.setPosition(80, 61, 80, 10);upArrowDisplay.setOrigin(0.0f, 0.0f);upArrowDisplay.setScale(1.0f, 1.0f);upArrowDisplay.setAngle(0.0f);upArrowDisplayPainter.setColor(touchgfx::Color::getColorFromRGB(217, 141, 0));upArrowDisplay.setPainter(upArrowDisplayPainter);const touchgfx::AbstractShape::ShapePoint<float> upArrowDisplayPoints[4] = { { 40.0f, 0.0f }{ 80.0f, 10.0f }, { 0.0f, 10.0f }, { 40.0f, 0.0f } };upArrowDisplay.setShape(upArrowDisplayPoints);upArrowDisplay.setVisible(false);add(upArrowDisplay); upArrowLed.setPosition(80, 191, 80, 10);upArrowLed.setOrigin(0.0f
I am working with STM32F746G-DISCO development board for my phasor measurement unit project. The project displays few line parameter and a phasor diagram with a GUI and also sends data to a network.The project was first created with TouchGFX with all the GUI created and working standalone but when LwIP and ETH is enabled using the CubeMX the display does not work. The display has artifacts and also the other parts of the programme does not work.Please help me out to know what is the proper way of creating a project which uses TouchGFX for GUI and LwIP. I am pretty sure that it is a memory conflict. Both LwIP and TouchGFX using the same memory region. But even after doing some MPU configuration and changing the framebuffer start address, the problem exists.I have attached the .map file of the project as .txt file for the better understanding.
Hi,When using this, single-character text isn't perfectly centered on the button,the letter appears slightly higher.Also, characters like .,_ appear higher than they should.Is it possible to adjust the text position horizontally when using these?
Hi all, Thank you for looking at my thread.I have started a proof of concept project that runs ThreadX and TouchGFX on a custom QSPI display on STM32F7. I noticed from the documentation at https://support.touchgfx.com/docs/development/touchgfx-hal-development/scenarios/scenarios-configure-rtos that the following warning is highlighted.Now indeed when I generate the code from CubeMX the MX_TouchGFX_Init is not getting called from anywhere, and in the documentation it suggests to call it from app_azure_rtos.c in the tx_application_define method.However in such method the main thread is already been initialized.If i replace App_ThreadX_Init with MX_TouchGFX_Ini, I am getting a TX_POOL_ERROR.What am I supposed to do to initialize TouchGFX?Thank you
Hi everyone,I'm experiencing a very specific bus/clock issue on a custom board using the STM32U5G9ZJ (and also tested on STM32U5F9ZJ).The Problem: My display (320x240, RGB565 via LTDC) only works if the HSPI1 peripheral is enabled in CubeMX. As soon as I disable HSPI1 (which I need to do to free the PH9 pin for power management reasons), the screen turns grey, even though the LTDC settings remain unchanged.Key Technical Details:Data Location: All assets (images/fonts) are stored in Internal Flash memory. The HSPI/OctoSPI bus is NOT used during the display process.Memory Status: In Debug mode, I can confirm via the Memory Browser that the Frame Buffer (located at 0x20025800) is correctly populated with pixel data.LTDC Behavior: Despite the RAM being correct, the LTDC fails to output data to the panel when HSPI1 is OFF.Configuration: Pixel Clock (PLL3R) is at 200MHz, GPIOs are "Very High Speed", and the Frame Buffer is placed to avoid conflicts with the RTOS (ThreadX) heap.The Mystery: W
I created the project in TouchGFX 4.26.0 Designer, modified pins with CubeMX_17, and attempted to debug the project in STM32CubeIDE 2.1.1. The example I used was Flex Button Example.Kit is STM32U5G9J-DK2.When I attempt to set up a debug configuration in CubeIDE, I am unable to select a project. This project compiles and works when I flash it to my kit through TouchGFX. Could there something wrong with my project structure? Thank you.
For our product we use sliders to set parameters in our software. Some parameters effect the range of others at runtime. Sometimes the allowable range of the values is limited to a single value. In such a case min equals max. This leads to an assert error in the simulator and undocumented behavior on the target.We would like to see support for min=max. One way to implement it is to show the Indicator Image in the center (or left), disable sliding, and set the value=min=max. This would simplify our firmware since we wouldn't need to handle it as a special case.I also added the tag bug-report since undefined behavior on the target is unacceptable.
Hello,I have a few questions regarding image and audio formats on STM32U5.For graphics with TouchGFX, I see that PNG is usually used. However, in some MCU documentation it is recommended to use JPEG. Also, when I try to add a JPEG image directly in TouchGFX Designer, it does not work.Which format is preferable between PNG and JPEG for TouchGFX?Why is JPEG recommended in some MCU documentation?Is JPEG intended only for dynamic loading with software or hardware decoding?What is the recommended way to use JPEG images with TouchGFX, if possible?Regarding audio on STM32U5, which audio format is recommended such as WAV, MP3, AAC or other?Is there a specific library recommended for audio playback on STM32U5?Is there an optimized solution provided by ST?Thank you in advance for your help.
Hi,I am at the beginner/beginning stages trying to pick up STM32 ecosystem involving touchGFX and a display board STM32H7S78-DK. For now I would like to interact a touch button on screen to turn on an LED.Could I get guidance on the overall workflow if it is correct:1) touchGFX - generate UI and generate code2) open up STM32CubeIDE and import touchGFX generated .cprojects and other supporting files3) edit .ioc file to set LED pin (PO1) as output (active-low). save and generate code4) stm32CubeIDE -> build and run -> LED PO1 turns on but my display goes blankover at touchGFX when I try to regenerate code it states [generate code failure] Could I get some guidance thanks.
Hello,TouchGFX seems to have some sort of a “bug”, where in PORTRAIT orientation the text will glitch with some weird white lines, unless there is an image in the item-tree situated ABOVE text items. It doesn’t have to be any image in particular, but MUST be an image.If there isn't any image added, then every text element is glitched the moment I rotate to PORTRAIT:touchgfx::HAL::getInstance()->setDisplayOrientation(isPortrait ? touchgfx::ORIENTATION_PORTRAIT : touchgfx::ORIENTATION_LANDSCAPE);The glitched text looks as such (see the white weird lines corrupting the text):This is my item tree in TouchGFX Designer (I also tried removing the background but the white lines remained):Then, if I add any kind of image, any text area under that image in the designer stack-up, it will be displayed without glitches and any text area placed above will glitch as such (Note, the XY location in the screen does not affect this, only the stack-up arrangement!):This is the stack-up to produce such
I am using a custom PCB design with a 480x800 pixel RGB input LCD display. I am driving the display via the LTDC peripheral. When I change the default colors, the color on the screen changes accordingly, which indicates that there is no apparent hardware issue with driving the LCD.However, when I try to display a simple text on the screen using TouchGFX, the system enters the DMA2D_XferErrorCallback function due to a DMA2D error. Because of this, the text cannot be rendered on the display.Could you please explain the possible reasons for this DMA2D transfer error and what might be causing it? best regardsCelil Bayrakdar
Hi, Currently I face problem that TouchGFX 4.26.0 use a lot of PC RAM up to 9GB RAM Project info: Resolution 480x800 Number of screen 26 Number of custom container 82 Support language: 5 Typographies: 25 With the same design for resolution 272x480 use up to 3GB RAM How can I reduce number of RAM usage? Thanks, Phat
There have been great improvements to TouchGFX Designer and the build process. It now cleanly allows integration into the STM32CubeIDE project structure. The problem is that even though you can provide a project name and the output will be placed in a folder with that name, the .IOC file always has the same name as every other project made with the same device. My workflow from the Designer, to CubeMX to CubeIDE is painless. Generate code, then allow CubeMX to open the project and it's imported into CubeIDE. The first project is great. If you go back to Designer and create a different project with the same device, the process breaks down. You'll have the same project as the last project as far as CubeIDE is concerned. Now if you create a new workspace for each project, you can get all of your projects imported albeit you have to switch workspaces. You can at least name them, so you know what project you're working on. No
I have a self-contained widget (a rectangle of 360x60) which has a draggable mixin and a custom handleDragEvent.void WarningModal::handleDragEvent(const touchgfx::DragEvent& event) { if (!draggingEnabled || !animator) return; int16_t newX = animator->getX() + event.getDeltaX(); // Hard clamp: never allow leftward movement past the resting position if (newX < WARNING_MODAL_VISIBLE_X) newX = WARNING_MODAL_VISIBLE_X; animator->moveTo(newX, WARNING_MODAL_Y); }Basically it can only be dragged from left to rightI'm noticing that, if I try to move it up and down, I'm able to generate a wobbling movement up and down because, the widget tends to return to its WARNING_MODAL_Y due to the modeTo line.Is there a way to disable the drag for an axis to get a smooth movement right-left or up-down
I found I can not config ToucgGFX to APPmode.It's seems I have to config EXTEM Loader first.I tried many management,but still fail to use TouchGFX in APP.I wonder if there's other way to use GFX.By the way,I have to write the link files to fit in my HyperRam and Flash.Is there something to do with the"EXTEM Loader"and "EXTEM Manager"?Thanks a lot!
Hi,I'm using TouchGFX to make a simple screen with just one slider. This to prove my graphics work and i can use touch to move the slider.I started with a CubeMX project this time but i got stuck somewhere.I enabled DMA2D and touchGFX.I see the DMA2D IRQ's passing by and My frame buffers are swapping when i touch the screen.I see that I get calls to HAL_LTDC_LineEventCallback so I think hltdc is working as well.But i see that my images that should be drawn on my screen are not there. I see the global layout of the slider but it is not the correct image.Steps to reproduce:1) start a new TouchGFX 4.26.0 project2) disable all frameworks in config page3) Set a Box with a specific color (not black)4) Add a simple slider to the canvas5) run the simulator In the simulator i now see the same issue I see on My device. When I re-enable the Config->FrameworkFeatures. I get a working simulator but on my embedded device the images stay wrong.I have tried everything and check
So I have a container with a single image in it. The container is used in a view and has the Mixins Draggable and MoveAnimator ON Now, I want to animate it from the current position (400,38) to 800,38 so, basically a slide animation. I have a function that should trigger the animationwarningModal.startMoveAnimation(WARNING_MODAL_HIDDEN_X, WARNING_MODAL_Y, WARNING_MODAL_ANIMATION_DURATION, touchgfx::EasingEquations::cubicEaseOut, touchgfx::EasingEquations::linearEaseNone); }wherestatic const int16_t WARNING_MODAL_HIDDEN_X = 800; static const int16_t WARNING_MODAL_Y = 38; static const uint16_t WARNING_MODAL_ANIMATION_DURATION = 12;But I don't see anything moving; why is that?
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.