cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H7 LTDC with high pixel clock 51.2Mhz

CedricB
Associate II

I have a 7" RGB LCD 1024x600 32bits framebuffer, the pixel clock is 51.2MHz for 60fps recommended in the datasheet.

I tried to interface this LCD with an STM32H743i-EVAL2 board, which is working fine, until I began to try using 2 layers of 32bits (for smooth scrolling with transparency)

But it doesn't work, it seems that the pixel clock required for this LCD is too high for the STM32H743 FMC Clock (200mhz) when using 2 layers of 32bits.

I tried another board STM32H7B3i-EVAL with a greater FMC Clock speed (280mhz), but it's worse.

Despite the greater FMC clock speed on the H7B3 my benchmark shows slower sdram access time than the STM32H743i-EVAL2.

For SDRAM/FMC I'm using the configuration given in the STM32 BSP examples.

The other solution would be to use a slower pixel clock, but this induce flickering on the LCD.

I tried to look into the LTDC application note about maximal supported pixel clock for each STM32H7 controller but there are no info for 2 layers used, only 1 layer + DMA2D.

The maximum pixel clock for LTDC+DMA2D 32bits with a 32bits SDRAM is 50MHz, so I guess there is no way to use my current LCD with 2 layers on STM32.

or I would have to do the blending between 2 layers using the CPU and it will be at a slower framerate.

any thought ?

1 REPLY 1
MM..1
Chief II

Hello, use two transparent layer is not for smooth scroll...

And use two 32bit framebuffers is too little outoff...

One your buffer size is 2,35MB seems more as one page SDRAM if pages is 2M.

Place second layer in same SDRAM is complication and need start on next page start...

In teoretical calc for one layer LTDC need read from memory 51,2Mpixels per sec = 51,2M 32bit words.

For two layer x2 then your SDRAM need work on 104M words...

More layers in LTDC is for one static background image from flash and over it dynamic SDRAM layer.

Try change your ideas.

For smooth animation you need engine not layers. Try use TouchGFX with double buffer (no layers)