2021-12-17 03:52 AM
I am using STM32H743II { Flash(2MB), DTCMRAM(128KB), RAMD1 (512KB), RAMD2 (288KB), RAMD3 (64KB), ITCMRAM (64KB) } microcontroller. By this controller with internal RAM can i run 800x480 RGB888 display or i need External RAM. if i Need Ext. RAM then what will be the exact calculation for choosing external RAM.
2021-12-17 04:09 AM
RGB888 requires 24bit, i.e. three bytes per pixel.
Your resolution of 800x480 therefore requires 800x480x3 = 1152000 bytes = 1125KB per frame buffer.
You can solve the problem with external RAM, but then the entire frame buffer must be external, so you need 1125KB - per frame buffer.
However, you could reduce the need for RAM if you use RGB565 instead of RGB888, for example, because per pixel you only need 16 bits, i.e. 2 bytes. You will then have a smaller color resolution, but this is hardly noticeable or not at all with smaller displays.
Regards
/Peter
2021-12-17 04:40 AM
if i am using RGB565 with 800x480 then frame buffer size is 800x480x2=768000bytes=768KB then i need external RAM which size is more then 768KB (1024KB)
2021-12-17 05:01 AM
Correct, so either use external RAM or reduce the color resolution even further or e.g. the STM32H7A3.
Regards
/Peter
2021-12-17 05:59 AM
768000bytes=768KB is fail true is = 750kB then maybe can run with internal D1+D2 RAM
And next choice and i recommend start with internal L8 framebuffer with CLUT hw table converter to RGB888
2021-12-19 08:55 PM
how we can i define in code for adding D1+D2 RAM
please guide me
2021-12-20 08:33 AM
You have two choices in config touchgfx framebuffer , by allocation and by address.
Here second is better simply enter start addr D1. When i good rememmber addressing continues to D2.
Next condition is dont use this memory on other places , in normal linker setup is ok.
By allocation need create sections in linker script and use in declaration for framebuffer array... more complicated but you see usage of memory