ESP32-S3 + ILI9488: prevent image drawing line-by-line

Hi, I’m using an ESP32-S3 with a 320×480 ILI9488 display and the TFT_eSPI library.
When I draw an image (JPG) to the display, it appears from top to bottom, one line at a time.
I’d like the image to appear instantly, as if the whole frame is updated at once.

I’ve seen other users online who managed to display images instantly, but when I try their code it doesn’t work for me.
I suspect this might be related to my hardware setup.

Is there a way to make TFT_eSPI draw an image all at once, or at least reduce the visible top-to-bottom refresh effect?
Any tips would be appreciated.

This is typical for display controller (ILI9488) which do not have a built-in frame buffer large enough for full-screen offscreen rendering and then a command that would dump the frame buffer in one go to the screen.

The library probably draws images line by line because it sends pixel data over SPI sequentially, so the top-to-bottom effect is visible.

➜ There might be special tricks like using the largest possible SPI transactions, make sure the library is using DMA for SPI transfers, increase the SPI_FREQUENCY to the maximum your ESP32-S3 + display can handle (may be up to 120 MHz will work). Have you explored what the library config offers ? (I've never used that type of screen)

Thanks for the tips! I think it’s probably a limitation of the ILI9488. I had #define SPI_FREQUENCY 27000000 and the line-by-line effect happens. I also tried 40000000 with no improvement, and 240000000 just causes display artifacts. So I don’t think I can push it further like with the ILI9341 :confused:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.