Skip to main content
Asing.4
Associate II
December 17, 2021
Question

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

  • December 17, 2021
  • 6 replies
  • 1565 views

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.

This topic has been closed for replies.

6 replies

Peter BENSCH
ST Technical Moderator
December 17, 2021

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
Asing.4Author
Associate II
December 17, 2021

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 Technical Moderator
December 17, 2021

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
Super User
December 17, 2021

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
Asing.4Author
Associate II
December 20, 2021

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

please guide me

MM..1
Super User
December 20, 2021

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