Driving high resolution TFT LCD Display


Hi guys. I need to drive TFT LCD displays with 1920x1080 or more resolution with parallel RGB interface with STM32. However, the screen will load too late because the frame buffer is too high. As you know, FPGA can drive the display very fast regardless of resolution. I thought of a method. There will be an SDRAM on the FPGA side. The FPGA will communicate with the STM32 over the SPI protocol. STM32 will send RGB data produced by LVGL to FPGA via SPI. The FPGA will write the incoming data on SDRAM and will send the RGB data it reads from SDRAM to the TFT LCD continuously. Since the STM32 will only send the color data in the changing region, the high resolution LCD will display the image serially. Do you think this method makes sense? Will it run faster than a 1920x1080 LCD directly connected to the STM32? Or what would be your suggestion for such a project? How can I quickly drive an LCD with 1920x1080 or more resolution with STM32 using LVGL interface?

What MCU/Processor/Board and compiler are you using?

Any FPGA board

What do you want to achieve?

I want to show the image sent by stm32 on TFT LCD by using FPGA.

What have you tried so far?

I can drive the TFT LCD connected to the FPGA with RGB data without STM32.

Hi @94onur94 , I think if you want to “quickly drive an LCD”, the faster way is to use FMC (SDRAM) interface for communication between STM32 and FPGA. SPI speed will be very limited then (max 45Mhz). FPGA may offload FMC bus, so bandwidth through FMC may be increased… So FPGA may act as SDRAM for STM32 ( and you may use up to 32 bits for data transfers)… Everything is depending on what you want to achieve and what resources you have (time, costs, etc…)

It looks like you want to create a video card. Aren’t there already chips that do that? Why is an FPGA preferable?

Yes, I’m looking for a method where I can drive high resolution LCDs quickly. I had experience in driving LCD with FPGA. So I thought of doing it with FPGA. Can you name which chips do this job?