Problem configuring double framebuffer and 24bpp on STM32F769I-DISCO
- February 20, 2023
- 9 replies
- 3482 views
Good day,
I am currently trying to change the configuration of the STM32F769-DISCO Rev. A from single to double framebuffer. Unfortunately I am not able to get an output without artifacts for animated objects. With static screens there are no really visible problems even if there is some flickering. Especially problematic are objects which are moved with a MoveAnimator or which are distorted with the TextureMapper.
I created my configuration with the Touchgfx-Designer by selecting the STM32F769DISCO. I am using the default DSI display for this board.
If I use a color depth of 16bit with the double framebuffer the configuration works without errors.
Also the configuration with a color depth of 24Bit and Singlebuffer works without problems. But as soon as I try to use 24Bit + Doublebuffer errors occur.
According to support.touchgfx.com/4.18/docs/basic-concepts/framebuffer the size of the framebuffer is 800 * 480 * 24/8 = 1152000.0 which means a start address 1 of 0xC0000000 and start address 2 0xc0119400. To be on the safe side I took 0xC0200000 to have definitely enough space for the buffer.
For the conversion of the project to 24Bpp I made the following changes.
- LTDC Display Type from RGB565 to RGB888
- Layer Settings -> Pixel Format from RGB565 to RGB888
- Software Packs -> TouchGFX -> Frambuffer pixel format to RGB888
- main.c line 628 OTM8009A_Init(OTM8009A_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
Inside TouchGFXHAL.cpp I made the following changes to get a working result. (Attached below as screenshot).
For the configuration of the double buffer for a DSI display I followed the following post from the forum: community.st.com/s/question/0D53W00001fROnsSAG/enabling-double-framebuffer-on-dsi-displays.
As addresses I used the ones calculated above.
I would be very grateful for any suggestions for improvement and solutions, since I currently have no idea what the problem could be.
If i minimal example project would help you figure out my problem i can upload it later.
