Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I'm trying to run up a display with an ILI9806E controller but although I get encouraging flickers I only seem to get a single frame and then the display fades out.I've tried turning on the pattern generator with HAL_DSI_PatternGeneratorStart(), same symptoms with a nice clear pattern that fades out.This all points to my controller initialise being OK but no automatic refresh from either LTDC pushing SDRAM contents at the DSI or the DSI internals refreshing from the pattern generator.I've set up the timing according to the Ilitek spec (as far as I can see) and tried randomly varying values by +/- 300% in case I've missed by a small amount!Does anyone have any clues?
Thank you for helping.environment:STM32CubeIDE Ver1.5.0TouchGFX Ver4.15.0Board: CustomMCU: STM32F769BIOutputs RGB parallel signals from the MCU.I want to output a 65MHz LCD_CLK, but the LCD_CLK signal is not output.Why?The transmitter is 25MHz and SystemClock_Config () looks like this:void SystemClock_Config (void){ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; / ** Configure the main internal regulator output voltage * / __HAL_RCC_PWR_CLK_ENABLE (); __HAL_PWR_VOLTAGESCALING_CONFIG (PWR_REGULATOR_VOLTAGE_SCALE3); / ** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. * / RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS; RCC_OscInitStruct.LSEState = RCC_LSE_BYPASS; RCC_OscInitStruct.PLL.PLL
..
Hi all,We are looking for a tool/software supplier for custom HMI. While still early into my research, it is my understanding that the only way to take advantage of TouchGFX an external loader is required to host assets, as most MCU's limited memory will be insufficient storage/space-wise. Therefore, I'd like to ask if there are any functional STM32CubeIDE templates of External Loaders for given memory packages anywhere to be found? This would effectively need to be configurable for custom board designs using the STM32CubeIDE manufacturer's HAL drivers and standard pinouts (for obvious reasons), and not be forced to be proprietary of eval boards. (*I did asked our STM parts supplier and he claimed having no idea and referred to the community, hence my question)I've already noticed some MOOC ST's video series on the subject however I've been advised to avoid as those do not work and requires days (if not weeks) of looping trial and errors, thus potentially leading to some rather signifi
OK, it is probably a stupid question, but I'm no able to find a solution...I need to call a function when a button is pressed, and a function when it is released.I can handle pressed/released status by:void Screen1View::handleClickEvent(const ClickEvent& event) { if((event.getType() == ClickEvent::PRESSED)) { Instruction1(); HAL_Delay(50); } if((event.getType() == ClickEvent::RELEASED)) { Instruction2(); HAL_Delay(50); } }but this is called every time I touch/release the screen and not the single button.If I use flexButtonCallbackHandler(),void Screen1ViewBase::flexButtonCallbackHandler(const touchgfx::AbstractButtonContainer& src) { if (&src == &Down_Button) { //Interaction1 //When Down_Button clicked call virtual function //Call function1 Instruction1(); HAL_Delay(50); } }I can determine the button pressed, but I haven't a call when the button is released.Any solution?Thanks and best regards to all the community!
Hello , Im currently exploring Touch gfx capabilities on low cost hardware (STM32G071 + SPI LCD shield) , and i comme across a bug .steps to reproduce :Start a fresh new project on Touch GFX using online demo , choose STM32G071 demoLoad a few additional image to project (a series of 40 png issued from a splitted .gif file total size : 150kbConnect board generate code and flash target Results : some images of GUI gets missed up ( black lines ) like : navigation arrow , touch gfx logo and some texts disappear .I suppose this is due to low ram available , can you please explain ow touchgfx is allocating cache for bitmaps in demo project? since the board has a NOR non mapped flash chip for assets storage does it mean that all assets are being cached on startup ? if yes why touchgfx still call for SPI data reader each time i switch screen ?Sorry for long post but i'm quit confused : / , many thanks in advance Ps : please find attached te additional images i'm usingPs2: The additional
Hello!I successfully created a user interface on an STM32F469I-DISCO which looks rather neat.However, with only a few icons it uses, the memory is already about 80% full. That's why I tried to use the embedded SDRAM to store the data required for the layout. I added the SDRAM to the linker file using the following :SDRAM (xrw) : ORIGIN = 0xC0000000, LENGTH = 16MThe embedded SDRAM is supposed to be 128Mbit but I test with only 16Mbit.However, when I place the ExtFlashSection for TouchGFX inside the SDRAM withExtFlashSection : { *(ExtFlashSection ExtFlashSection.*) *(.gnu.linkonce.r.*) . = ALIGN(0x4); } >SDRAM BmpCacheSection (NOLOAD) : { *(BmpCacheSection) } >SDRAM TouchGFX_Framebuffer (NOLOAD) : { *(TouchGFX_Framebuffer) } >SDRAM TouchGFX_Framebuffer1 (NOLOAD) : { *(TouchGFX_Framebuffer1) } >SDRAM TouchGFX_Framebuffer2 (NOLOAD) : { *(TouchGFX_Framebuffer2) } >SDRAMthe display shows crap.I attached two pictures, one which shows how the screen is suppos
Hi,In CubeMx, Project Manager tab -> Advanced Settings, the "Do Not Generate Function Call" for MX_TouchGFX_Init is not working.After selecting it and generating the code, the MX_TouchGFX_Init() is still present in the main.c and going back to the Advanced Settings, the previously selected check box got deselected.This is a problem because when using the QuadSpi with TouchGFx, it needs to be mapped before TouchGFX initialization.The mapping cannot be made in the MX_QUADSPI_Init because there is no USER CODE section at the end of this function (Hey ST, what about having a user code section at the end of EVERY HAL init function???).Settings:MCU: STM32H743CubeMx: 6.1.1CubeIDE: 1.5.1Firmware Package: FW_H7 1.8.0
We are going to test it by changing the LCD on the stm32f469i_Discoveryboard.The 5-inch LCD has a resolution of 855×480, and the Control IC is an ILI9806E The control method is to use the MIPI interface, but I couldn't find the driver information for the ILI9806E. If anyone has worked on it, can you share the information?
void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect) { EINK_SetDisplayWindow( rect.x, rect.y, rect.width, rect.height ); this->copyFrameBufferBlockToLCD(rect); }I'm trying to drive an E-INK display via SPI. Have overridden the flushFrameBuffer method, but unfortunately, it never is called. The Main Loop of TouchGFX is blocked.E-Ink doesn't need to be refreshed at 60Hz. So... I'm lost on how to drive the loop.This is the only mention in the documentation:"Selecting a custom display interface also requires developers to implement a custom TouchGFX Application Tick driver that signals OSWrappers::signalVSync() to unblock the TouchGFX Engine Main loop. Usually, displays used along with MCUs that have no TFT Controllers can provide a Tearing Effect signal that is connected to the MCU."No details are listed. How fast. From timer ok?
Hello everyone!I'm a fairly new STM32 user (and developer in general) and my main goal is to be able to design applications using TouchGFX, configure the periphericals and such and generate the code if needed with CubeMX and modify it in CubeIde.I'm currently using a STM32F429I-DISCO board and I've come across with several issues involving the compilation of the TouchGFX part of the project and thus, I'm unable to flash the target and interact with the screen.Since I'm just getting started, I would prefer to not use a RTOS for the time being if I can, even if it reduces the application's efficiency, but when I have configured the CubeMX that way, I camre across some errors. I will explain my procedure in case the problem is there. First, I have created a .ioc, configured it with a disabled FREERTOS and an activated Graphic Device (TouchGFX Designer) and generated the code. Then I modified the application in TouchGFX, have generated the code, imported it and programmed it in CubeIde and
We use TouchGfx with a STM32f769 on a custom board. There are many ui widgets like textarea, boxes and buttons. At first the display had a flicker problem. That was solved with just invalidating widgets that should update.Now the problem is that if a single widget updated with .invaldate(), an other widget - which was previously invalidated - is suddenly flickering.I found that this occurs with double buffering activated.Any ideas that could help?Thanks in advance.
Hello, STI have some problem for display drawing.I encounted error on simulator when compiling TouchGFX so, I excluded simulator to compile.(after exclusing simulator, I could compile)(using TouchGFX library : cortex_m7/gcc/libtouchgfx-float-abi-hard.a)I run application using TouchGfx desiginer like following on our board. the image displayed is broken.1) here's what I expected.2)here's what is displayedHere's the tft lcd display setting we're currently using.And I set LTDC setting on CubeIDE for this setting like following.When I play png image(using by lcd-image-converter) directly on frame buffer, the image is displayed correctly except "color is black & white"Could you please check which setting/or compiler option? / library should I chage to fix this?Thank you.
Hi,I have implemented a hardware button that changed the screen displayed.It works fine when using the hardware.I also want it to work with the simulator using the computer keyboard.I think it is what the "Choose button key" in TouchGFX is for (correct me if I am wrong).In the .touchgfx file I added the following:"PhysicalButtons": [ { "Key": 0, "Name": "PwrSwitch" } ],Then in screen interaction:When running the simulator, I was hoping that by clicking on the computer keyboard "0" key, the interaction would be triggered. I tried both "0" key on the keyboard but nothing happens.Please let me know if I am missing something.Franck.Config:MCU: STM32H743CubeMx: 6.1.1CubeIDE: 1.5.1Firmware Package: FW_H7 1.8.0
I may be a bit slow but:When I run my project in TouchGFX in a different folder as a standalone program, I can Generate Code, Run Simulator and Run Target. Everything works as expected and I can exercise the GUI on the '469i-Disco board. When I copy the TouchGFX into a STM32CubeIDEworkspace and add the TouchGFX folder to the IDE project, I can no longer Run Target in TouchGFX although Run Simulator works just fine. The error message is:Run Target Generate Wrote config/gcc/app.mk Done Generate Assets make -f simulator/gcc/Makefile assets -j8 Reading ./application.config Done Post Generate touchgfx update_project --project-file=simulator/msvs/Application.vcxproj  
Hello I am working On 7.8 Inch display With STM32L496ZG Nucleo board,The RAM Size of Board is 320KB , When I Declare the BMP Image Buffer In Program then RAM Overflow Issue , My Image Buffer Size is more then 600000. Anyone help me to solve the issue ?
Dear community members,I wanted to use keyboard API but yet haven't found any "how to" for using this API. I know that there is an example in designer, but the codes are really advanced. Even the API documents are not going to make it easy to use (at least for me).Any help would be appreciated, at least any clue that ease the start of using this API.
Dear Sirs,I found an error in function GraphLabelsBase::formatLabel in cpp file GraphLabels.cpp (version 4.15) When decimal is 1 and remainder is xx.96, after rounding of remainder 9 will increase to 10 and gives a colon (:) instead of a 0.Hope you can fix this error in future releases.Thanks in advance.
Thank you for helping.environment:Board: STM32F746G-DISCOTouchGFX Ver 4.15.0The setting code output by TouchGFX is as follows.It does not match the value on the LCD data sheet.Please tell me how to calculate.Thank you.static void MX_LTDC_Init (void){ / * USER CODE BEGIN LTDC_Init 0 * / / * USER CODE END LTDC_Init 0 * / LTDC_LayerCfgTypeDef pLayerCfg = {0}; / * USER CODE BEGIN LTDC_Init 1 * / / * USER CODE END LTDC_Init 1 * / hltdc.Instance = LTDC; hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; hltdc.Init.HorizontalSync = 40; hltdc.Init.VerticalSync = 9; hltdc.Init.AccumulatedHBP = 53; hltdc.Init.AccumulatedVBP = 11; hltdc.Init.AccumulatedActiveW = 533; hltdc.Init.AccumulatedActiveH = 283; hltdc.Init.TotalWidth = 565; hltdc.Init.TotalHeigh = 285; hltdc.Init.Backcolo
Hi,I flashed J-link on the discovery board using ST LinkReflash utility, for continuous recording on segger system view softwareNow, the problem is,After flashing when I am going to start continuous recording, I am facing an error that unable to open to com port connection.Actually, I want to connect it via USB, and It should be open through a USB connectionHow to fix this problem
Hello,i'm running touchgf in my 720x720 18bit display. I need to decrease the fps because of the heavy rendering time. I know that to decrease the refresh rate i need to change the LTDC clock frequency. Now it is working with 25MHz (which should be approximately 50Hz). I know also that i need to change the porch timings when i decrease the TFT frequency.Actually they are:HSW = 20HBP = 20Active Width = 720HFP = 10VSH = 10VBP = 10Active Height= 720VFP = 10My question is how much i need to decrease each value to get 25Hz frame rate? I kown that i have to change the TFT clock to 13MHz, but what about porch timings?
How do I search / filter for MCUs with LTDC support?
I'm setting up my LCD in SPI mode on my STM32F429 Discovery board. So the framebuffer is set as partial (ManyBlockAllocator).So my question is whether I can define this framebuffer in the SDRAM to save up some space.Thanks in advance
I met a strange "problem" with TGFX. Let's say, on one screen, it contains a few buttons and a container. the container is on top of the screen and invisible when the screen is initialized. The problem is when I set the container visible, I found buttons under the container are touchable, even though I cannot see them (the container covers the whole screen). Is this normal? what should I do if I want only the "visible" widgets being "activated". Thanks in advance.
https://touchgfx.zendesk.com/hc/en-us/articles/115002741432-Create-custom-Application-Templatehttps://packages.touchgfx.com/BaseAT/BaseAT.zip
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.