cancel
Showing results for 
Search instead for 
Did you mean: 

can i run 800x480 RGB888 display on internal ram, my controller is STM32H743II

Asing.4
Associate II

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.

6 REPLIES 6
Peter BENSCH
ST Employee

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

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
Asing.4
Associate II

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)

Peter BENSCH
ST Employee

Correct, so either use external RAM or reduce the color resolution even further or e.g. the STM32H7A3.

Regards

/Peter

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
MM..1
Chief II

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

Asing.4
Associate II

how we can i define in code for adding D1+D2 RAM

please guide me

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