cancel
Showing results for 
Search instead for 
Did you mean: 

How to get the LTDC working with TouchGFX : Internal RAM buffer

ABricout
Associate III

Hello,

I am trying to develop an application on a STM32F469 using touch GFX and a frame buffer in internal RAM. The Pixel format I use is ARGB2222.

The frame buffer is being written by touch GFX in a good way: in debug mode I can see that the values in the buffer changes accordingly to the application I developed, however the LTDC seems not to be working (at least the screen is black).

In a project without OS and Touch GFX I am able to use the LTDC to print an image to my screen from the RAM memory so I guess that the parameters I use for the screen and the LTDC are correct.

I do not use the DMA2D as I does not support my pixel format, but I tried with it and RGB565 and it did not change anything to my problem.

I followed this article to set the LTDC and buffer in internal RAM : https://support.touchgfx.com/docs/development/board-bring-up/how-to/03-display-internal And then I passed the address of my frame buffer to touch GFX.

I followed this to configure the LTDC concurrently with TouchGFX : https://support.touchgfx.com/docs/development/touchgfx-hal-development/scenarios/scenarios-ltdc-parallel-rgb

I am a bit out of ideas and options here, do you see what could be the origin of the problem?

Thank you by advance

Augustin

8 REPLIES 8
MM..1
Chief III

You dont write how LCD you use. How big framebuffers... But primary how you change config for touch GFX.

TouchGFX supported format is L8-XXX2222 ...

ABricout
Associate III

I am using the LCD_TFT STP480480_R021B2, with a framebuffer size of 480x480.

This is the configuration of my TouchGFX :

0693W00000AMGRWQA5.png0693W00000AMGTNQA5.pngHere is ABGR2222, but it's barely the same.

Thank you by advance

Augustin

Hi,

Is the start address set at 0x00000000 intentional ? That seems really odd to me :grinning_face_with_sweat:

/Romain

When you plan use internal buffer better choice is select Location By Allocation instead By Address.

Otherwise you need reserve memory in linker script.

ABricout
Associate III

Hello,

As I work by address, and I define the framebuffer myself in the code, I cannot set the address in cube MX because it is the linker that decide it I believe. So I set it by hand to the LTDC and Touchgfx

I have also tried by allocation but there isn’t an evident way to indicate to the LTDC the start address of the framebuffer as the LTDC is initialised before touchgfx in order for it to work.

Thank you for your answers

STM32F429I-Discovery & BSP: problem with LCD and transparency

here example image with internal RAM by allocation, ofcourse you can use by address but here you need know how you do this.

FLuba.1
Senior

This thread and the mentionned links to touchGFX website helped me a lot. Thanks a lot. All my questions are now answered.

Great to hear :thumbs_up: It is sometimes difficult to answer everyone's questions due to lack of time or knowledge from us as well sometimes :grinning_face_with_sweat: But the forum is there for this, so that everyone can share their issues and anyone can answer, and then give solutions for every future users as well.