1

I'm using the device STM32F746. I know it has a hardware 2D Graphics accelerator. I know how to do animation using double buffering. But according to this https://www.touchgfx.com/news/high-quality-graphics-using-only-internal-memory/

They are claiming that they use only one framebuffer for animation.

How is that possible and what techniques that are used using that STM32F746 ?

andre_lamothe
  • 2,171
  • 2
  • 41
  • 74
  • They describe it right in the linked article. Starting with words *The architecture of the TouchGFX framework allows you...* – Eugene Sh. Jul 12 '19 at 19:13
  • ```TouchGFX controls this with an incremental algorithm that updates the framebuffer simultaneously with the TFT controller outputting pixels, but always only updating the pixels that the TFT controller has already transferred.``` What kind of incremental algorithm is it ? – andre_lamothe Jul 12 '19 at 19:19
  • `void update_rectangle(int x1, int y1, int x2, int y2) { int x, y; for(y = y1; y <= y2; y++) { while(y >= (uint16_t)(LTDC->CPSR)) wait_a_bit(); for(x = x1; x <= x2; x++) update_pixel(x, y); } }` – followed Monica to Codidact Jul 13 '19 at 07:52
  • I was wrong in the answer. Please withdraw the accepted mark. – AterLux Jul 16 '19 at 10:34

1 Answers1

0

It is the double buffering. One buffer is stored in the MCU memory, where the next frame is prepared and composed. Another buffer is in LCD driver memory, to where data being transferred from the MCU when it is ready, and displayed on the LCD with the required refresh rate. That's why that library requires so much of MCU memory.

Despite the answer was accepted it is wrong.

In fact those controllers have their own LCD-driving circuit, thus, do not require external driver. They use part of internal memory as the screen buffer and constantly refresh the image on the LCD.

In the library, that only part of memory is used. The write operatation are synchronized with LCD refresh, so they avoid flickering.

So, the only one buffer is used: the same buffer contains the output image and used to compose the next frame.

AterLux
  • 4,566
  • 2
  • 10
  • 13