CrowPanel Advance 7" (ESP32‑S3 V1.2) — micro‑jitter / blurry image on RGB panel
Hello. I need help with unstable output on CrowPanel Advance 7" (ESP32‑S3, board V1.2). The screen works, but the image “jitters” and looks slightly blurred. This is not brightness flicker — it’s a tiny 1–2 px micro‑shift, especially visible on high‑contrast edges. Sometimes there are rare artifacts where small fragments appear in another part of the screen.
Important: the issue appears both in my project and in the official Elecrow example.
Environment:
Board: CrowPanel Advance 7", ESP32‑S3 V1.2
IDE:VS Code + PlatformIO
Platform: espressif32@6.12.0 (Arduino‑ESP32 3.x)
Libraries are local in lib/ (no online downloads)
Project & libraries:
Project uses these libraries:
GyverDB, GyverHTTP, GSON, StringUtils, StreamIO, Settings, AutoOTA, FOR_MACRO, GTL
(they are not related to display output, but listed for completeness)
**Display: **LovyanGFX 1.2.0 (from official package)
RGB bus (Bus_RGB, Panel_RGB), 800×480, PSRAM frame buffer
Official Elecrow example:
Path: 4.3_5.0platfromIO (official package)
There’s no text in the example (lamp + ON/OFF buttons).
The jitter is still visible on the edges, so it’s not our rendering code.
What i tried:
pclk_active_neg 0/1 — slightly better, but issue remains
pclk_idle_high 0/1 — no clear improvement
hsync_back_porch 8 → 16 — no significant change
PCLK 12–18 MHz — too low gets worse; ~14 MHz slightly better but still jitter
Power:
Tried multiple sources (5V/2A, USB‑C) — behavior unchanged
Questions:
Are there official recommended PCLK/porch/polarity values for V1.2?
Is there any extra setting (anti‑tearing, double buffering, DMA, etc.) in the official projects that we might be missing?
Could this be related to PSRAM mode/speed (OPI/QIO, 120 MHz vs 80 MHz) on V1.2?
Thanks for any concrete guidance.
Comments
I found the cause of the problem.
It turned out to be incorrect RGB timings and the initialization order on my side.
For stable operation of the CrowPanel Advance 7" V1.2, the following is required:
PCLK frequency of about 21 MHz (lower values caused unstable data sampling)
pclk_idle_high = 1 and correct signal polarities
A strict power-up initialization sequence via I2C/GPIO before calling gfx.init()
Calling setRotation() immediately after initDMA
With the correct timings and initialization order, the jitter and blurry edges completely disappear — both in my project and in the official example.
Sorry for the confusion, the topic can be closed or deleted.