Hi all,
I’m currently working with two Waveshare 7" displays using LVGL and ESP32:
- LCD7-ESP32N8R8 – 800×480, ST7262 controller
- LCD7B-N16R8 – 1024×600, controller unclear (ST7262 or ST7701)
The first display works fine. I had some strange behavior (screen shift after hours or days), but enabling double buffering, directmode and pin it to core 1, resolved it.
Now I’m using the B-version (LCD7B-N16R8) and ran into several issues.
Controller Confusion
The product page references the ST7262 datasheet, but the FAQ mentions ST7701. I’ve heard both are similar and use the RGB interface, but it’s unclear which one is actually used. Has anyone confirmed this? (https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-7B)
Pixel Clock and Display Shift
With direct_mode = 1, double buffering, and bounce buffer, I get a perfect image and smooth animation below 17 MHz pixel clock, but there is slightly flickering of the display to see.
However, going above 17 MHz causes a leftward shift of the image, with the removed portion wrapping to the right.
Waveshare’s sample code uses 30 MHz, so I tried matching that. After extensive tweaking (porch, sync width, offset_x, flush callback), nothing helped—until I increased the physical width in the driver to (1024 + 30). That fixed the alignment, and the display now works at 30 MHz.
I also tried their examples, but the same behavior occurs. The only thing I haven’t tried yet is using the Espressif IDE instead of PlatformIO.
Arc Animation Glitch
I use LVGL’s arc widget as a second counter in a clock:
- Animate in NORMAL mode to fill the circle
- Switch to REVERSE mode to subtract
- Then switch back to NORMAL
This works well, except when switching back to NORMAL: LVGL seems to trigger a full refresh, causing a misalignment (~1 frame) before returning to normal.
Questions
- Can I disable or suppress the full refresh when switching arc modes?
- Has anyone else seen this behavior with arc animations?
- Any insights on the controller type or how to confirm it?
- Is there a better way to handle the pixel clock issue without faking the resolution?
Thanks in advance for any help or ideas!