Skip to main content
QuiQuipu
Associate II
August 5, 2024
Question

LTDC and Partial FrameBuffer Strategy

  • August 5, 2024
  • 1 reply
  • 2051 views

I have a STM32H7B3 Discovery Kit.

To free up RAM for my application I tried to configure the PartialFramebaffer.

Compilation fails with the following error message:

undefined reference to `touchgfxDisplayDriverTransmitActive'

The question is: is it possible in this scenario to use the PartialFramebaffer strategy ?

 

1 reply

ST Employee
August 6, 2024

Hello @QuiQuipu,

If you are considering to use Partial Framebuffer, then you have to apply some changes to your STM32CubeMX project, and add manual code to handle the framebuffer transitions. 
The reason for the error you are receiving is that the function is not defined in your TouchGFXHAL.cpp file.

Please follow this documentation to enable Partial Framebuffer.

I hope this helps you. Don't hesitate to ask more questions! 

QuiQuipu
QuiQuipuAuthor
Associate II
August 6, 2024

Hello @Mohammad MORADI ESFAHANIASL,

is it possible to have a demo (maybe for the STM32H7B3 Discovery Kit) to better understand the implementation?
I have already used the Partial Framebuffer in the past, but on a display with an SPI controller that has its own internal memory.
I don't know how to implement it with the LTDC, even reading the documentation.

Thanks

ST Employee
August 7, 2024

My sincere apologies for making a mistake. I totally forgot that the Partial Framebuffer requires GRAM to work, and in my mind, I thought it is possible to just send a section of the framebuffer to LTDC which is far from reality. That is the reason why you were not able to do it. Again, I'm really sorry for my mistake.

If you're using the Board Setup available for STM32H7B3I DK in the TouchGFX Designer, you can decrease the Pixel Format from RGB888 to RGB565, and use single framebuffer.

You can see the difference between running the Smart Home Demo on RGB888 with double framebuffers and RGB565 with single framebuffer below:

RGB888 + Double FramebufferRGB888 + Double Framebuffer

RGB565 + Single FramebufferRGB565 + Single Framebuffer

For an extreme case, you can even set RGBA2222 (8bpp) which results in the following memory usage, however, the quality of the graphics might not be acceptable

RGBA2222 + Single FramebufferRGBA2222 + Single Framebuffer