Skip to content

RGB LCD Ghosting/Burn-in After Backlight Timeout - ST7262 Controller (Waveshare ESP32-S3-Touch-LCD-5B) #258

@ReacherS3

Description

@ReacherS3

RGB LCD Screen Ghosting/Burn-in Issue

Hardware Configuration

  • Board: Waveshare ESP32-S3-Touch-LCD-5B
  • MCU: ESP32-S3
  • LCD: 1024x600 RGB LCD with ST7262 timing controller
  • Interface: 16-bit RGB565, 21MHz pixel clock
  • Backlight: Switch-type via CH422G IO expander (pin 2)
  • ESP-IDF: v5.4.3
  • Library: ESP_Panel_Library (ESP Display Panel)

Problem Description

When implementing a backlight timeout feature (turn off backlight after 30 seconds of inactivity), the LCD exhibits significant ghosting/burn-in effects. After the backlight turns off and remains off for 5+ minutes, a faint "ghost" image of the last displayed content persists on the screen even after the backlight turns back on.

Attempts to Resolve

1. Display Control Commands

Attempted: Using lcd->setDisplayOnOff(false) to send DISPOFF command
Result: Error - "function not supported"
Reason: ST7262 is an RGB timing controller, not a command-based LCD controller. It has no command interface.

2. Software Black Overlay

Attempted: Created full-screen black LVGL object before turning off backlight

black_overlay = lv_obj_create(lv_scr_act());
lv_obj_set_style_bg_color(black_overlay, lv_color_black(), 0);
lv_refr_now(NULL);
vTaskDelay(pdMS_TO_TICKS(100));
backlight->off();

Result: Ghosting still occurs after 5+ minutes
Reason: RGB LCD continuously receives data from ESP32 RGB peripheral regardless of content

3. Hardware LCD Reset

Attempted: Pulling LCD_RST low via CH422G IO expander (pin 3) before turning off backlight

expander->digitalWrite(LCD_RST_EXPANDER_PIN, 0);  // Pull reset low
vTaskDelay(pdMS_TO_TICKS(5000));
backlight->off();

Result: No effect - ghosting persists
Reason: LCD_RST may not actually cut power to the panel, or reset doesn't affect the liquid crystal state

4. Enhanced Rendering with Delays

Attempted: Multiple render cycles with delays

lv_obj_move_to_foreground(black_overlay);
lv_refr_now(NULL);
vTaskDelay(pdMS_TO_TICKS(150));

Result: No improvement

Technical Analysis

RGB LCD Architecture

  • ST7262: RGB timing controller that passes through RGB data from ESP32
  • No frame buffer: Unlike SPI LCDs, RGB LCDs have no internal GRAM
  • Continuous refresh: ESP32 RGB peripheral continuously sends pixel data
  • No power management: ST7262 has no built-in display enable/disable capability

Board Configuration

// From BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5_B.h
#define BOARD_LCD_RGB_IO_DISP                   (-1)  // No display enable pin available
#define BOARD_IO_EXPANDER_OUTPUT_IO_0_PINS      {2, 3, 1}  // Backlight, LCD_RST, Touch_RST

Root Cause

The ghosting appears to be an inherent physical characteristic of the LCD panel's liquid crystals. Some lower-cost RGB TFT panels have slower liquid crystal response times and retain a faint image even when:

  1. Displaying solid black
  2. Backlight is off
  3. No power signal changes occur

Questions for Espressif

  1. RGB Peripheral Control: Is there an API to pause/stop the ESP32-S3 RGB peripheral (stop PCLK, disable DE signal) while keeping the LCD initialized?

  2. Panel Blanking: Does ESP-IDF provide any low-level functions to "blank" an RGB panel without destroying the driver instance?

  3. Hardware Recommendations: For RGB LCDs that need power management, what is the recommended hardware approach? Should we:

    • Add external circuitry to cut VDD to the LCD panel?
    • Use a different LCD type (MIPI DSI, SPI) for applications requiring display off?
    • Accept this as normal behavior for RGB LCD panels?
  4. Best Practices: What is Espressif's recommended approach for implementing screen timeout on RGB LCD panels to minimize ghosting/burn-in?

Current Workaround

Currently using simple backlight on/off with acceptance that some ghosting may occur as a hardware limitation of the LCD panel.

Request

Looking for guidance on whether:

  • This is expected behavior for RGB LCD panels
  • There are undocumented APIs or techniques to mitigate this
  • Hardware modifications are necessary
  • Different display technology should be used for this use case

Any insights would be greatly appreciated!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions