Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
HiI am currently working a lot with TouchGFX 4.22.1 Desinger to develop an interface for the development board STM32f4-discovery. Here I create the project in the program TouchGFX and then edit the code in the programming interface STM32CUBE IDE 1.13.2. But the projects are always created with the project name STM32F46I-DISCO-REV-AU1 and I remove the old project from the workspace at each project change to insert the new project (which unfortunately has the same name). Is it possible to change or customize the project name in the STM32CUBE IDE interface? Thanks for the help
Hi,I want to handling a pulses on the digital inputs of the MCU within a max time 1µs. I am using STM32F469i which can even I/O Handling with 90MHz. So, theorticaly it is possible to handling the change within 1µs but the problem actually with the TouchGFX because it takes the big as you know! Even we cannot use any delay because it would have any effects on the program.I thinked on, that i can freezing the TouchGFX while the handling or the measuring is going on and after that i could restart the TouchGFX again. What do you think about that?Which procedure should i take to implement it?I would be appreciate if anyone have another idea :)Regards,Mahdi
Hi, I'm using the STM32F429 Discovery Kit and i want to run the LTDC in 8 BPP (L8) mode in TouchGFX.I find that i can use DMA2D to transform into RGB565,but how can i use L8 format in TouchGFX.and i can't set DMA2D in TouchGFX.so how can i do it ??Thank you.Best Regards
Hello,I have a project using a NUCLEO-U5A5ZJ-Q dev with a MIP sharp display connected via SPI. I created the project with STM32CubeIDE. I added the SPI interface (transmit only), the RTOS, ThreadX and X-CUBE-TOUCHGFX. I don't have a touchscreen and don't need DMA transfers. I made a driver for the display, and it writes correctly to the screen. I also used the TouchGFX designer to make a basic screen with one line of text. My problem is that when I generate the code and run it, it is not doing anything. The place where it should be calling to populate the main screen is never called. I used another project that I built and works with the STM32U5A9J-DK which has a touchscreen. This project calls it from gotoscreenScreenNoTransitionImpl(), while my NUCLEO project never does. Does somebody has any idea why the function is not being called? Also do I need to disable touchscreen or DMA in the code or in the .ioc?
Hi, I have a fix menu of three buttons which are fixed for all my screens, when I use the simulator in TouchGFX I can just click on top of each button, but in the real hardware I only have one button to scroll right or left throw all the digital buttons available and another hardware button to select. How can I made the preselection of each digital button with the hardware buttons, in others words to see the state of selected button but not made the action before the button selection is pressed?
Hi, i am making a project with the ST NUCLEO F401Re using a TFT display of MCUFRIEND (not so good display), and the implementation is running with touchGFX 4.22.0.The display works with data serial using 8 pins of data and 4 to control (just for context).I have been making the entire UI and it works fine, but the problem is each time i need to swap from one screen to other, the refresh delays quite much in update all the screen (you can see the screen updating from top to buttom maybe like half second or less).I am not sure but i think the problem might be my display. For other side i noticed that if i am in one screen, and change widgets like buttoms, slider and so one the response is good and one cant notice the refresh.Because i have the same background in all the screens (i attached the images of some of them) i was wondering if it is posible to not update the bockground but the widgets and texts only . If someone have any idea or suggestion it will be very appriciate.&nb
What do those statements mean? - "The L8 formats cannot be used as framebuffer formats in TouchGFX. This is because it is not practical blend to two images in the framebuffer."https://support.touchgfx.com/docs/basic-concepts/color-formatsObviously, it is absolutely practical on STM controllers with their LTDC and DMA2D peripherals. The fact it is "impractical" on TouchGFX side, - does it mean there is no full support for HW accelerators from ST micros by TouchGFX? For instance, previously promoted by ST graphics library StemWin did with ease.What it seems not practical - is to add unnecessary external RAM to the system when the requirements for graphics are not too demanding (as for majority of embedded devices).Is there any plan from TOuchGFX to start supporting 8 bpp palette-based formats in frame buffers?
Hi!I'm having a problem building my project on my MacBook in Cube IDE. I developed the code on windows using Cube IDE and Touchgfx environment. I used to be able to build it on my Mac, but it suddenly does not build. The error I get:/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.macos64_1.1.1.202309131626/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: cannot find -l:libtouchgfx-float-abi-hard.a: No such file or directorycollect2: error: ld returned 1 exit statusI tried to install the touchgfx generator extension, it didn't help. I also reinstalled my Cube IDE, what didn't help either. I checked the file path "/arm-none-eabi/bin" and there is indeed an "ld" file, without extension. I tried to peek what inside but its gibberish. I guess it is not UTF8 coded. I have "libtouchgfx-float-abi-hard.a" under "MCU/Middlewares/ST/touchgfx/lib/core/cortex_m7/gcc/libtouchgfx-float-abi-har
Hi,I'm to SPI in stm32,I want to interface LCD with SPI RGB i need your support to provide SPI intialzaton code for LCD WF40ESWAA6DNN0 480*480 resolution.Thanks
Hello all,I have a NUCLEO board (NUCLEO-F756ZG), so with STM32F756ZG.I used the DCMI interface to grab an image (external synchro , PXCL / HSYNC / VSYNC + D0....D13) from an imager component, working fine.With STM32CubeIDE, i see that data's are grabbed through DCMI register.In addition, with "HAL_DCMI_Start_DMA(&hdcmi, DCMI_MODE_SNAPSHOT (uint32_t)FRAME_BUFFER, Im_size);" and "#define FRAME_BUFFER 0x200004ac", i saw in RAM memory that there is some value written.Consistent value because when imager signal video is low satured ; value are close to '0', when imager video signal is high satured ; value are close to '1', and when imager signal in dynamic value are 'o' and '1' :)After this configuration, i want to SEE THE RAW IMAGE to be sure that grabbed image is correct !In "AN5020 -Introduction to digital camera interface (DCMI) for STM32 MCUs" from ST, some example with LCD Display ...In website or ST Forum community, some example with LCD ...But i have no more hardware and no LCD
STM32L4+Support for 640x400 60Hz LCD with 24-bit video.Display bandwidth requirement is approximately 60 MBytes/sec average, 81MBps max.I was planning on HyperRAM because I wrote and FPGA interface to one and understand it.The STM32L4S and L4R datasheet specs a much slower clock frequency for HyperRAM than HyperFlash with HyperRAM having a prescaler not included for the other. Does anyone understand why this is? Is there a better bandwidth option? xSPI, PSRAM?I am hoping for 1.8V operation, small device packages.
platform: STM32L4R9ZIDisplay: 320 * 360 (driver: RM69090)I have setuped action(change screen) when entered startup screen, But it does not work. No matter what action I setup , It does not work. What should I do to debug? Thanks very much.
Hi all,I am using STM32H7B3I-DK board with touchgfx and freeRTOS enabled for display.I require large buffer size approximate to 774Kbytes or 0.74MB for data processing . Internal RAM indicates fully used.Hence I have enabled SDRAM for storing and processing data. SDRAM works fine, but display freezes after few seconds of execution , then after using reset button on board again display starts and freezes after few minutes.The duration of working is not consistent but the duration does not exceed 3 minutes.IF SDRAM is disabled , everything touchgfx ,display all works fine , but memory is highly required . There are two concepts which I have analyzed and have doubts on it1) if SDRAM is enabled , may be task execution time is more comparatively , how to increase the task delay if so ? 2) I have read the touchgfx documentation from their website which says touchgfx uses internal RAM for storage , hence have question that if touchgfx used SDRAM aslo?Pl
Good Day,The project I'm working on has some guidelines that I'd prefer to follow if possible. One such standard involves moving code critical to the TouchGFX around, subsequently breaking the build. Two things that I'd really like to do are: 1. Move the .ioc folder out of the root to a different subdirectory and 2. Not have the Middlewares folde regenerate every time I build using the designer, as I've moved that as well. If it's not possible I will just have to move the .ioc file back and write a script that deletes the middleware folder after each build.Thanks,Jack
How to get rid of Image Vertical Offset as shown in the image below tried different Vertical front porch & back porch, different DSI and LTDC Clk, Getting different Offset. What’s the reason, it’s because of Vertical timing or other sources?
The speed of screen transition is too fast, I want to slow it. How should I do?
Hello,I just bought a STM32F746G-DISCO from Mouser (Mouser #:511-STM32F746G-DISCO).When it arrived, the LCD and touchscreen were working well. However, after I downloaded the demo project (STM32F746G-DISCO Control LED from GUI v3.0.6) in the TouchGfx 4.22.1, there was nothing displayed. And I tried to import the project into STM32CubeIDE 1.13.2 to build it. The external loader was 'N25Q128A_STM32F746G-DISCO.stldr'. But there was not any luck.The board is the blue one. The label on the front is 'STM32F746G-DISCO DK32F746G$CU2', and the label on the back is 'MB1191-F746-C01 / C222103562'.May I know how to generate a WORKING project with TouchGfx? Thanks.
Good Afternoon all, It could be possible to make a thermostat touch sensitive using touchgfx? Like that ones with temperature value in the center and a "slider circle around". Thanks in advance.
Hi,Lets say I have 10 screens and I want to display an image when an event is received on the current active screen.This is my current implementation.In model.hprivate:bool displayimage;public:void setdisplayimage(bool value){displayimage = value;}bool getdisplayimage(){return displayimage;}In model.cppvoid Model::tick() const{on receiving event setdisplayimage(true);static_cast<FrontendApplication*>(touchgfx::Application::getInstance())->handleTickEvent();}screen1 presenter classbool Screen1Presenter::GetStatus() const{bool getValue = model->getdisplayimage();return getValue;}screen1 view classvoid Screen1View::setupScreen(){Screen1Base::setupScreen();displaywidget();}void Screen1View::handleTickEvent(){displaywidget();}void Screen1View::displaywidget(){bool status = Screen1ViewBase::presenter->GetStatus();if(status == 0x00){widget.setVisible(true);widget.invalidate();}else{widget.setVisible(false);widget.invalidate();}}My question is - Does it cause a overhead in
How to display image/widget in the current active screen upon receiving an event from backend? Hi, Let's say we have 10 screens and we need to make a image/widget visible when an event is received from backend.Can it be done this way? In model.cpp whenever the event is receieved static_cast<FrontendApplication*>(touchgfx::Application::getInstance())->handleTickEvent(); and in Screen1View.cppvoid Screen1View::setupScreen(){ Screen1ViewBase::setupScreen(); displayIcon();} void Screen1View::displayIcon(){uint8_t status = Screen1ViewBase::presenter->GetStatus(); //Read the status received along with the eventif(status == 0x00){IconImage.setVisible(true);IconImage.invalidate();}} void Screen1View::handleTickEvent(){displayIcon();} My question is - Does it create overhead in handleTickEvent of each screen to repeatedly read the status from model?
When I downloaded the demo hex file for the STM32F769I DISCO onto the device, I saw a static image of the ST logo that never changed to anything else. I am using the correct External Loader. I tried in STM32CubeProgrammer and STM32 ST-Link Utility with the same result. I also used the Verify option to make sure the data downloaded correctly and it said that it did.I then imported the TouchGFX Example into STM32Cube IDE; built it; and ran it on the device. This runs but the graphics are very noisy with lines running through them (see attached image). The code runs normally from what I can tell; I accidentally started a game and can control the scrambled rectangle that I think is the player. There is nothing wrong with the screen itself as the ST logo from earlier looked great and while the game was running, the text in the top right "MCU load: x%" looked normal; but the graphics, including menu/game text, is a vague representation of what is intended.This seems to be the same set of iss
I am using touchgfx 4.20.0 and have a project running well in portrait on a 2.4" tft screen (RGB565).My issue iswhen i rotate the project to be landscape some features become very laggy. for example i have a rotary dial and turning it up and down moves a scrollWheel in a container to scroll throught data. When i stop turning it it contiues for maybe half a second, like its struggling dealing with commands in a buffer.Just to clarify this is exactly the same project running in portrait and i don't see these issues.I would be greatful if someone would be able to point me to an area where the screen updates could be becoming qued or backlogged ?This is running on the M7 core of an STM32H757 MCU, using rtos with a 20ms tick timer for the appTick. although i lowered the tick to 10ms and it made not difference. Updating TouchGFX would be a big project as its so tied up with cubeMX and i don't want to introduce new problems. any pointers would be greatcheers
The following functions get blocked during application:void Model::tick() ;void handleTickEvent() ;OSWrappers::waitForVSync() ;However, OSWrappers::signalVSync() works fine. The issue happens occasionally, most of the time, the TouchGFX GUI application is working fine. What is the root-cause and how to debug / fix this issue?ThanksJianchun
Hello,I have a Riverdi screen with an embedded stm32H7. When I am trying to flash with the st-link the code to the screen I am getting this error. I need to mention that I didn't got this error before and the Makefile is auto generated. Could anyone help me to solve this problem? make[3]: *** No rule to make target 'CM7/TouchGFX/build/Riverdi_70STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o', needed by 'CM7/TouchGFX/build/bin/target.elf'. Stop.Thank you in advance
We have a design with a menu implementation that uses texts in multiple places with potentially different typographies (the translated text is used for menu entries, headings or keyboard edit screens). Example: We have a parameter "Modbus Address" which has a menu entry with "Typography 1". When entering the menu, the keyboard pops up with the title "Modbus Address" with "Typography 1 bold". The issue is that the TouchGFX generator only generates the glyphs for the selected typography of the text resource but not for other typographies the text can be potentially used with. Now with the use of wildcard ranges this is easy for latin and other character sets with a relatively small number of character. But with chinese or similar languages, I would need to include >20k chars in the wildcard ranges in order to have all characters at hand which bloats the image to 10x the actual required size.Is there a possibility to solve the issue other than having a translation text multiple ti
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.