Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
TouchGFX is used for stm32f469i_Discovery.I want to test External RAM because I can't express the picture well on the LCD screen.I want to write 0xAF from 0xC0000000 to 0xCFFFFFFFF, and test if I read 0xAF when I read the same bungee, and I need advice on how to set up the program.
The stm32f469 board is connected to the LCD of the MIPI interface.I made ScreenA, ScreenB using TouchGFX.(4.16.1)It operated ScreenA -> ScreenB -> ScreenA -> ScreenB every second.In the same program, sampleA put five images and sampleB put one picture.Tests showed that the SampleA did not display LCD over time, and that the SampleB continued to display LCD over time.The question is that the LCD was displayed with only different number of picture files in the same program, but I don't know why the LCD of sampleA with 5 pictures is not displayed.Is there anything I should be careful about displaying in TouchGFX?
We are working on the project using TouchGFX on the stm32f469 board.If you repeatedly display the screen made with TouchGFX as you proceed, the screen disappears. That doesn't mean the equipment stops. In debug terms, the timer is operating normally.There is a problem above, so I am going to approach it in a different way.The TouchGFX displays the Screen on the LCD while reading it every time in Flash. I want to know how to use the picture on RAM, not on Flash.When the system starts up, it copies the image data stored in Flash to RAM, and if it needs to be displayed, reads the data from RAM to display the screen, and if you know a document or method that can be used as a reference, can you advise me?
I worked with stm32f469i_Discovery.I worked with TouchGFX. LCD was working on 800*480, with icons and pictures.The LCD specification used has been changed. We need to use 480*800 longitudinal LCD.The previous work is 800*480, but I want to know that TouchGFX or stm32f469 supports the ability to turn the screen 90 degrees.The following is what I looked for. TextArea() : Widget(), typedText(TYPED_TEXT_INVALID), color(0), linespace(0), alpha(255), indentation(0), rotation(TEXT_ROTATE_0), wideTextAction(WIDE_TEXT_NONE) { }TextRotation rotation; ///< The text rotation to use in steps of 90 degrees.I checked the rotation in the Text section, but I couldn't find the image rotation. If anyone knows, ask me for advice.
TouchGFX is currently developing a program. The stm32f46i_Discovery board is connected to an LCD using the ILI9806E Control IC.At power on, the screen is displayed normally, and over time, the picture on the screen is displayed downward. I heard that this can happen if there is noise in LCD cable.I'm looking for a function that draws a screen on TouchGFX, but I can't find it, so I'm leaving a message.I would appreciate it if you could give me some advice on why the display on the screen is not working and how to solve it.
Hi,I have a opening screen and when the video is over, I want that to slide next screen. However, when it is over, first frame appears. When I realized it, I tried to learn what is the last frame, but I couldn't. So, How do I obtain the last frame?
Dear All,The display we are using is RGB332, natively this is not supported by Touch GFX.Is it possible to develop custom color format or we need to trick it by using ARGB2222 and convert pixels.Thanks for your help.Regards
Why the model class is so deeply inside the framework and cannot easily been inherited?Are there any suggestion?It is impossible to use a factory pattern in such way.Best regards
Is there a way to force state for "Button with Label" so that it can behave like "toggle" switch?Thanks
I'm working with a system built around the STM32F767 which has 512kB of internal RAM, and 2MB internal Flash. There is no external RAM or Flash, so the entire application has to live within those resources. We are using RBG565 format with a 480x272 LTDC, and a single framebuffer of 255kB. Since both all the code and all the graphic images must fit into the 2M Flash, we must be quite careful to ensure that we remain within these limits. In general, a full-screen image will require app. 255kB of Flash. We're using TouchGFX Designer 4.17.0, STM32CubeIDE 1.7.0, and TouchGFX Generator 4.17.0.In the STM32CubeMX editor, a single buffer scheme is selected:In the resulting generated code, the frame buffer is declared in TouchGFXGeneratedHAL.cpp:namespace { // Use the section "TouchGFX_Framebuffer" in the linker to specify the placement of the buffer LOCATION_PRAGMA("TouchGFX_Framebuffer") uint32_t frameBuf[(480 * 272 * 2 + 3) / 4] LOCATION_ATTRIBUTE("TouchGFX_Framebuffer"); static uint16_t
I have two projects which are based on TouchGFX. Now I thought I could copy some text, rectangles, lines and button elements from one project to the other one by simply copy and paste within the Designer. But unfortunately this is not working. Does anybody know if there is a way to do this? BR GS
I enabled a UART peripheral in my touchgfx project. When I ran the project in STM32CubeIDE, it gave an error saying the HAL_UART_Init function was undefined. When I checked${ProjectDir}\Drivers\STM32H7xx_HAL_Driver\SrcThere were no HAL library files, so I pasted them in the folder: This allowed STM32CubeIDE to compile and run the program. However, when I try to "Run Target" in TouchGFX, it gives the following error: Compiling Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c Compiling Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c Compiling Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc_ex.c Compiling Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c Compiling Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c Compiling Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma2d.c Compiling Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c Compiling Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c Compiling Drivers/STM32H7xx_HAL_Driver/Src/stm32h
TouchGFX Designer's "Button with Label" does not appear to allow wild card strings for button label. However, "Flex Button" supports text with wildcard strings that also allows setting initial value from resources (as normal wildcard text box does).Is there a way to have "Button with Label" to include widlcard strings with initial value from resources?"Flex Button" allows text with proper wildcard string supported, but "Flex Button" does not allow text rotation as "Button with Label" does. It seems that "Flex Button" is designed to be very flexible for including text, icon and background for a button but it does not seem include all of the properties as just text only button has (i.e. "Button with Label"). Is there a way to get around this (text rotation with "Flex Button")?One more, the "Button with Label" also doe not support setting initial state (pressed) as "Flex Button" does.Thanks
Hello,it seems to me, that cubemx uses a too small framebuffer for the display on the STM32F769 DISCOVERY board. The Display has 800 by 480 pixel but the real size used by the DMA is for 832 by 480. I guess that has to do with the HSYNC, horizontal front and back porch. The problem is, that when you have your framebuffer together with other data in the same memory the dma possibly overwrites parts of other data because of a too small defined framebuffer.If I manually change the settings in the TouchGFXGeneratedHAL.cppLOCATION_PRAGMA("TouchGFX_Framebuffer")uint32_t frameBuf[(832 * 480 * 2 + 3) / 4]LOCATION_ATTRIBUTE("TouchGFX_Framebuffer");it will be overwritten next time you save cubemx settings. If you change it in the cubemx TouchGFX Generator, the framebuffer will be right, but the TouchGFX functions add another 32 pixel to the 832 pixel.Are there any settings I have missed to solve this problem?Best Regards,Kai
Hello everyone,I am trying to make an LM020L work in Proteus. I am using Eclipse to code.I am trying to follow the datasheet for the initialization of the LCD and set the cursor at the beginning. This is where I found info: https://web.alfredstate.edu/faculty/weimandn/lcd/lcd_initialization/lcd_initialization_index.htmlI want to use 4-bit mode.Here is my current code:void resetlcd(void){ GPIOB->BSRR &= ~(GPIO_BSRR_BS9); //RS GPIOB->BSRR &= ~(GPIO_BSRR_BS10); //RW GPIOB->BSRR &= ~(GPIO_BSRR_BS11); //E GPIOB->BSRR &= ~(GPIO_BSRR_BS12); //D4 GPIOB->BSRR &= ~(GPIO_BSRR_BS13); //D5 GPIOB->BSRR &= ~(GPIO_BSRR_BS14); //D6 GPIOB->BSRR &= ~(GPIO_BSRR_BS15); //D7 GPIOB->BSRR |= (GPIO_BSRR_BR9); GPIOB->BSRR |= (GPIO_BSRR_BR10); GPIOB->BSRR |= (GPIO_BSRR_BR11); GPIOB->BSRR |= (GPIO_BSRR_BR12); GPIOB->BSRR |= (GPIO_BSRR_BR13); GPIOB->BSRR |= (GPIO_BSRR_BR14); GPIOB->BSRR |= (GPIO_BSRR_BR15); }
How do I get a bare bones project running?
Hello,I hope someone can help me. After days over days reading docs, other questions and so on i am still confused how all the LTDC and DSI stuff works.OK, so what i have is a STM32F469 Disovery board which already has a display on it.I create a project in touchgfx with just a blue screen and 4 white boxes in the corners.Opened in the IDE i can upload it and it works. No wonder, it is all original.Now i changed the display using the same FPC connector. I am using a small pcb for changing the wires to match the spec of the new display.It is also 2 lane DSI.As program "template" i still use one of the 469-discoI removed all the otm8009a stuff, and used the power-on sequence of the new display with the HX8363 instead of the OTM8009aHAL_DSI_ShortWrite(&hdsi, 0x00, DSI_DCS_SHORT_PKT_WRITE_P1, 0x11, 0x00); HAL_Delay(201); uint8_t enExtCmd[5] = {0xFF, 0x83, 0x63}; HAL_DSI_LongWrite(&hdsi, 0x00, DSI_DCS_LONG_PKT_WRITE, 4, 0xB9, enExtCmd); uint8_t setLaneNumer[15] ={0x80, 0x00, 0x10, 0x
HelloI have implemented a screenshot function that copies the first framebuffer and transfers it to the PC via a UART.Everything works fine, but some pixels have incorrect colors in the screenshot.Especially the colorbending in for creen does not look correct. You can see single pixel lines in the green color palette as well as in the gray tones on the screenshots.The colors on the display, on the other hand, look correct.Is it possible that the anti-aliasing or something else is causing the color changes?The raw values are attached as a csv file.To create the RGB888 colors, I simply move the colors from the original RGB565 to the correct location. The wrong pixels are also visible in the raw data.I have checked the data in the framebuffer. You can see the errors there as well.The data is transferred correctly.Does anyone have an idea where the wrong colors are coming from?Used System:TouchGFX 4.16.0STM32F7Display 480x272 RGB585
Hi guys ! How to make delay in TouchGFX ?I have button and i made interaction for it:Trigger - Hardware button is clickedAction - Change screen.But before changing screen i need delay in few seconds. How to make it ?thanks
In Custom Widget example in documentation, there is a mistake in draw method.The example suggest to use touchgfx::HAL::DISPLAY_WIDTH to calculate position in framebuffer. framebuffer[absolute.x + x + (absolute.y + y) * touchgfx::HAL::DISPLAY_WIDTH] = data->at(x / scale, y / scale) ? 0x0000 : 0xffff;This is not correct, because the framebuffer is not always allocated for entire line of display, but only invalidated section, so to get position of another line the Y coordinate must be multiplied by FRAME_BUFFER_WIDTH instead:framebuffer[absolute.x + x + (absolute.y + y) * touchgfx::HAL::FRAME_BUFFER_WIDTH] = data->at(x / scale, y / scale) ? 0x0000 : 0xffff;I believe, the same issue appears in the linked source examples.Petr
Hi, I have two containers on my screen. Two of them is visible. However I want to know which one is appearing on the screen. Is there a function about it or a way?
TouchGFX 4.16.1Thank you for helping.There are 10 views.Pressing the button for only one view will bring you to this function.For other views, press and release the button to get to this function.I want this function to come when I press and release the button in all views.Is this a bug?Please tell me what to do.Thank you.
..
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.