Waveshare ESP32-S3-Touch-LCD-2.1 (480×480 round display)
ST7701S driver, 16-bit RGB parallel interface, framebuffer in PSRAM
CST820 capacitive touch (I2C), QMI8658 IMU on same board
Arduino ESP32 2.0.x / IDF 4.4
Problem: The display continuously shows a horizontal "scrolling" or "ghosting" artifact — ghost images of the scene content appear shifted left and right and cycle through as if the screen is panning. It looks like a screen transition animation (slide left/right) firing on a loop, but it happens even when no screen transitions are triggered in code.
What we've ruled out:
What we suspect: The artifact looks exactly like what happens when LVGL's full_refresh=1 with a single PSRAM framebuffer causes a 460KB memcpy that overlaps with the RGB DMA scan. We've tried:
Vsync semaphore (wait before draw, wait after draw)
Full-screen LVGL draw buffer to reduce flush count to 1 per frame
relax_on_idle=1 on the RGB panel config
Change-only UI updates (only call lv_label_set_text when sensor data changes)
None have fully resolved it. The display is usable but the constant subtle horizontal shimmer is visible, especially on the background image which has fine detail.
Question: Has anyone successfully eliminated tearing/ghosting on the ST7701S RGB panel with IDF 4.4 (no bounce buffer support)? Is there a way to properly double-buffer or page-flip with this panel + LVGL 8 on this IDF version, short of upgrading to IDF 5.x which adds bounce buffers?
Video of what I am seeing is above... don't click unmute, there was a separate issue with the buzzer I have resolved (or at least I think it is separate...)
What is my project?
Trying to make an interior/exterior sensor display for my L300 delica. There is an older 60mm gauge that used to show this that broke so trying to learn about hardware a bit... very new!