Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Im unsure how TouchGFX know if the current touch event is a "click" or a "long press" or a swipe - if it only gets the current position?https://support.touchgfx.com/docs/api/classes/classtouchgfx_1_1_touch_controller#function-sampletouchDo I need another functionality to accomplish long touches and swipe/drag&drop events?
Hi,virtual void setFrameBufferStartAddresses(void* frameBuffer, void* doubleBuffer, void* animationStorage)1, Parameters frameBuffer and doubleBuffer can generated by CubeMX, animationStorage parameters can also be generated by CubeMX ? 2, I don't use the animationStorage parameter and the animation of the Icon will play normally, when will the animationStorage buffer be used ?3, How to determine the size of parameter animationStorage, does it have to be equal to the frame cache size ?
If text is autosized, undoing will cause problems. My 4.17 Designer just froze because of it. Based on 4.18 changelog, it also does not seem to have this fixed.Sorry - something unexpected has happened which caused an error to occur in the Designer. For more information, see the log file located at: C:\Users\tuman\AppData\Roaming\TouchGFX-4.17.0\TouchGFXDesigner.log Please consider reporting this bug and steps to reproduce it at the TouchGFX Help Center so it can be fixed in a future version. You can find the Help Center here: http://support.touchgfx.com Error: Width and Height must be non-negative.Replicate:Autosize text that was not autosizedTry to undo autosizeUndo does not work properly, and in some cases will jam Designer
I have interfaced an Arduino 2.4" 320x240 LCD display with an ILI9341 controller to an STM32L476 MCU. To do this I stitched together the ST initialization code derived from MX plus some LCD initialization code from LCDwiki plus a font library from Texas Inst. I replaced the SPI driver in the TI part of the code with a native ST driver and it all works well. BUT it is slow. It takes 1.6 sec to write the entire 60,000 pixels because the message is going out one byte at a time with a 12 usec latency between each byte. (two bytes/pixel) The HAL driver HAL_SPI_Transmit(&SpiHandle, (uint8_t*)aTxBuffer, 50, 5000) works well, with no latency, when transmitting a string but the TI font interpreter generates only one byte at a time so.. where do I go from here? I suppose I could create a 120 kbyte buffer in RAM and call the above HAL function but I think that's kind of brute force. Any suggestions would be gratefully appreciated.
In the designer I selected STM32L496G-DISCO. But no success.I know it will only support software decoding, but still I will try it for my application. (small display and low fps).
Thank you for helping.I want to move to a certain screen when the timer times out.What kind of implementation should I do?Thank you.
I have a TouchGFX project (using V4.17) running on IAR Workbench (V8.42.4), which consists of some on-screen images defined by the GUI in the *screenbase files and some dynamic ones defined and controlled by user code. If I comment out the user-defined images everything runs as expected; if put them in I get the box below come up multiple times. If I just click on ignore the program runs as expected displaying all the images.Please can anybody tell me what is causing the box to appear and how can I stop it.
Hi,I use flash memory ( at25sf128) in my project and I can read data from flash correctly, I checked it . Also I checked the configuration of quad in out fast read command. However, The images do not have correct view on LCD. Have you ever had this problem before?my code of memorymap mode is here ; QSPI_CommandTypeDef s_command; QSPI_MemoryMappedTypeDef s_mem_mapped_cfg; /* Configure the command for the read instruction */ s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE; s_command.Instruction = QUAD_INOUT_FAST_READ_CMD; s_command.AddressMode = QSPI_ADDRESS_4_LINES; s_command.AddressSize = QSPI_ADDRESS_24_BITS; s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_4_LINES; s_command.DataMode = QSPI_DATA_4_LINES; s_command.DummyCycles = 6;//N25Q128A_DUMMY_CYCLES_READ_QUAD; s_command.Ddr
I want to draw a graph, and what I expect is that the data points on the left are dense and the data points on the right are sparse. But I only found AbstractDataGraphWithY, a class that ignores x, is there any similar class that does not ignore x can be used.Thank you very much.
Hi @Martin KJELDSEN I just updated to 4.14.0. Now I get the linker as I got them in this thread (the problem was the short enums/wchar settings) https://community.st.com/s/question/0D50X0000AlgbG2SQI/arm6-compiler-supportI can see that the armclang lib that comes with 4.14.0 is smaller than the version you provided in the thread.Any thoughts?Cheers /jimmii
Our R&D is developing LCD GUI product using QSPI memory and faced some noise issue.When certain image from QSPI memory is displaying, some noise lines is shown in certain area on the LCD. Please refer to the attached video.Any advise will be appreciated. Development conditions are below.- CPU: STM32F469BIT- QSPI memory: MT25QL256ABA (256MB)- Used original source: N25Q512A of STM32469I-EVAL board- Revised part of source------------------------------------------------------------- /* Initialize the QSpi NOR */ BSP_QSPI_Init(); BSP_QSPI_EnableMemoryMappedMode(); . . . . . uint8_t BSP_QSPI_Init(void) { QSPIHandle.Instance = QUADSPI; /* Call the DeInit function to reset the driver */ if (HAL_QSPI_DeInit(&QSPIHandle) != HAL_OK) { return QSPI_ERROR; } &
I have a swipe container with multiple pages. On each page there are a few buttons (children of their respective pages). Swiping in empty areas within the container swipes the container left and right, as intended. However, if I swipe left and right on top of the buttons, the button is pressed in and no container swiping occurs.I understand that click events are passed to the topmost visible element. However, is there a way to detect if a drag has occurred/is occurring and if so, pass that event to the swipe container instead of the button?Thanks!N.B.:The same issue occurs with scrolling containers.This issue occurs with any ClickListener, not just buttons.The desired behavior is modeled after most smartphone menus where a drag after a press will cancel the button click and scroll the window instead.
In example projects created from within TouchGFX Designer and imported into a STM32CubeIDE workspace, the user gui folder only contains .cpp files. The example project itself (represented by the presence .project and .cproject files) is located in the STM32CubeIDE folder rather than the TouchGFX folder. And the gui folder, shown below, is an empty folder located in STMCubeIDE/Application/User, which is “populated�? by adding file links to the .project file pointing to the gui's .cpp files when code is generated in TouchGFX designer.Access to associated .hpp files is possible by double clicking on their names in the editor, but they are excluded from Eclipse global searches since they do not explicitly appear in folders of the Eclipse project. For example, a new ScreenIDs.hpp file was created and added TouchGFX/gui/src/common folder. As is the case with existing .hpp files, placement in this location enables the file to be accessed by .cpp files in the project without compila
Hello everyone!Faced an interesting problem. When generating the TouchGFX code, strange artifacts began to appear on the display screen. At first I decided that the problems were in the display driver. But then I looked through the memory and made sure that the problem was in the generated buffer. Then, running the simulator in TouchGFX, I found that the problem is displayed there as wellI attach a screenshot of the designer and simulator What could be the problem?
I have a GUI project with a screen size of 1024*600. There are multiple page switching in the 800*400 area in the middle of the interface. Can a custom container containing multiple small pages be placed on the main page?
Hi I want to learn how to reset graph widget, I mean not only reset X Values but reset all parameters of widget. I see a post which is "reset Graph X values" but it doest enough for me. I change graph X-Y ranges, X-Y intervals and data points everytime when I draw graph.when I try to draw a new graph some things get mixed up. But If I switch screen and come back, it works correctly (for first time)So I want to reset graph widget to its default values like creation of screenThanksErdem
What could be the reason and how do I come around this problem?
I want In swipe Container pages rolling.example (page 1 -> page 2 -> page 3 -> page 1 -> page 2 -> page 3)all right direction swipeCan I know how??
According to the documentation, widgets are only redrawn once in the 'render' phase:https://support.touchgfx.com/docs/basic-concepts/rendering#renderHowever, when I call `invalidate` on a widget from a function that is not the `tick`, it is immediately redrawn, as can be seen in the following stack trace: I would say this is not according to what the documentation mentions. It can be a major inefficiency in the framework, as multiple calls to invalidate now also call `flushFrameBuffer` multiple times, which in turn updates the screen at an irregular frequency. Furthermore, it poses a major problem to our GUI, as it now accesses the external resources at an irregular interval. Note that this only happens when we call `invalidate` from outside the `tick`.Is it possible to correctly implement this in the TouchGFX framework, such that a call to `invalidate` from outside the `tick` does not immediately result in `draw`, but instead is deferred to the `render` phase as documented?
Hello, I am doing these steps: I made a new projectadded a button with a random image and a text labelcompiled and executed opened the project in stm32cubeide added into the project some libraries that I am using to read sensors compiled and executed on the target with stm32cubeideRemoved the button compiled and executed with stm32cubeide [ERROR: make: *** No rule to make target '../Application/User/generated/image_Dark_Slider_Vertical_Medium_Slider3_Vertical_fill.cpp', needed by 'Application/User/generated/image_Dark_Slider_Vertical_Medium_Slider3_Vertical_fill.o'. Stop.]but if I compile with touchgfx to the target, it works without errors. Touchgfx 4.17.0 stm32cubeide Version: 1.6.1How I can dig into the problem? I also tried to regenerate the code and update the ioc file. Thanks
Hi, The same size images, one uses format L8_RGB565 with background colour and the other uses format L8_ARGB88888 transparent background. Two images for screen transition and the L8_ARGB8888 is smoother than L8_RGB565. Screen2 used L8_ARGB8888 image and add a black box but it's smoother than screen1 used only L8_RGB565 image. How the image render when encounter transparent pixels in the image, the same width and height between two images. Is it faster to render the same image with a transparent background ?
Hi guys,I'm trying to make a Text Area work like a button by adding a ClickListener Mixin to it. I tried to follow this guide but for some reason, every time I click the label, it doesn't do anything (I added a print and it doesnt print).HPP#ifndef SCREEN2VIEW_HPP #define SCREEN2VIEW_HPP #include <gui_generated/screen2_screen/Screen2ViewBase.hpp> #include <gui/screen2_screen/Screen2Presenter.hpp> class Screen2View : public Screen2ViewBase { public: Screen2View(); virtual ~Screen2View() {} virtual void setupScreen(); virtual void tearDownScreen(); protected: private: touchgfx::ClickListener< touchgfx::TextArea > backLbl; Callback<Screen2View, const TextArea&, const ClickEvent&> LblClickedCallback; void lblClickHandler(const touchgfx::TextArea& l, const touchgfx::ClickEvent& e); }; #endif // SCREEN2VIEW_HPPCPP:#include <gui/screen2_screen/Screen2View.hpp> Screen2View::Screen2View() : LblClickedCallb
When the button on the LCD is pressed, the relevant screen is displayed and data (6000 bytes) must be saved. When the button is pressed, the screen is displayed without any problem, but a DMA error occurred in the process of writing data to the memory using SPI DMA.DMA is applied to the display driver, and it is also applied to writing in memory (SPI).SPI DMA works fine if I disable the DMA used for display (disable DMA2_Stream0).Is there something wrong with the DMA settings?[SPI_DMA error is occurred when both DMAs are enabled][error flag]DMA2_HISR: FEIF4 (FIFO Error Interrupt Flag) setSPI5_SR: OVR (Overrun Error Flag) set[DMA Configurations][display driver using DMA2_Stream0]static void tft_flush_cb(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_p) { // lv_disp_flush_ready(drv); // return; SCB_CleanInvalidateDCache(); /*Truncate the area to the screen*/ int32_t act_x1 = area->x1 < 0 ? 0 : area->x1; int32_t act_y1 = area->y1 < 0 ? 0 : area-&
I have a STM32F446VCT6 MCU running TouchGFX project communicating SPI to a LCD. The images are located in the external QSPI which is in memory mapped mode.Basically I have a few simple screens. Everything is running fine, except that after some random amount of seconds/minutes the MCU core freezes. No hard fault or other things is called. The power consumption drops.I was trying to catch something under debugging, but I cannot stop/pause the debugging. The MCU core is not responsive. Only asserting Reset pin helps. I have disabled the communication - this does not help. So it must be something in TouchGFX itself that triggers this freeze.Any ideas how to diagnose this issue?
Hi there,as stated in the subject, I can't get the Hebrew pointing/dotting rendered properly inside the strings. It seems that these characters (U+05B0 to U+05C4) are printed as standalone characters and some kind of kerning info is not considered by the TouchGFX.I attach the images to make the point clear. The following is the Hebrew word rendered properly (on the PC)whereas the next image is the same word rendered by TouchGFXI'm using the Designer v4.16.1 and the Font is the Arial Unicode MS.Is there a way to get the proper string rendering or this is a limitation of the TouchGFX? Thank you. RegardsMario Benzoni
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.