All displays ESP32S3 HMI 5", HMI 7", HMI adv. 4.3" / 5" /7" flicker
I own 2x 5" (non adv.), 1x 7" (non adv.), as well as one each of 4.3", 5", 7" advance ESP32S3 HMI Display Modules. Following strictly your examples and suggestions (also from this forum) these boards have all one problem in common (which stops me to use them in production). THEY FLICKER when something "happens" on the screen i.e. progresss bar, button pressed. I can reduce the frequency down to minimize flicker (down to the point solid areas go into unrest), but NEVER get a rock solid display. I initialize all my displays with such a .h file (Here adv. 4.3"/5") which is already optimized:
pragma once
define HARDWARE_USES_EXPANDER_FOR_BL 1
define LGFX_USE_V1
include <LovyanGFX.hpp>
include <driver/i2c.h>
// SD card pins aligned with official Elecrow documentation
define SD_CARD_CS 0
define SD_CARD_MOSI 6
define SD_CARD_MISO 4
define SD_CARD_CLK 5
include <lgfx/v1/platforms/esp32s3/Panel_RGB.hpp>
include <lgfx/v1/platforms/esp32s3/Bus_RGB.hpp>
class LGFX_Driver : public lgfx::LGFX_Device {
lgfx::Bus_RGB _bus_instance;
lgfx::Panel_RGB _panel_instance;
lgfx::Touch_GT911 _touch_instance;
public:
LGFX_Driver(void) {
{
auto cfg = _bus_instance.config();
cfg.panel = &_panel_instance;
cfg.pin_d0 = GPIO_NUM_21; cfg.pin_d1 = GPIO_NUM_47;
cfg.pin_d2 = GPIO_NUM_48; cfg.pin_d3 = GPIO_NUM_45;
cfg.pin_d4 = GPIO_NUM_38; cfg.pin_d5 = GPIO_NUM_9;
cfg.pin_d6 = GPIO_NUM_10; cfg.pin_d7 = GPIO_NUM_11;
cfg.pin_d8 = GPIO_NUM_12; cfg.pin_d9 = GPIO_NUM_13;
cfg.pin_d10 = GPIO_NUM_14; cfg.pin_d11 = GPIO_NUM_7;
cfg.pin_d12 = GPIO_NUM_17; cfg.pin_d13 = GPIO_NUM_18;
cfg.pin_d14 = GPIO_NUM_3; cfg.pin_d15 = GPIO_NUM_46;
cfg.pin_henable = GPIO_NUM_42; cfg.pin_vsync = GPIO_NUM_41;
cfg.pin_hsync = GPIO_NUM_40; cfg.pin_pclk = GPIO_NUM_39;
cfg.freq_write = 13990000;
cfg.hsync_polarity = 0; cfg.hsync_front_porch = 8;
cfg.hsync_pulse_width = 4; cfg.hsync_back_porch = 8;
cfg.vsync_polarity = 0; cfg.vsync_front_porch = 8;
cfg.vsync_pulse_width = 4; cfg.vsync_back_porch = 8;
cfg.pclk_idle_high = 1;
_bus_instance.config(cfg);
}
{
auto cfg = _panel_instance.config();
cfg.panel_width = 800; cfg.panel_height = 480;
_panel_instance.config(cfg);
_panel_instance.setBus(&_bus_instance);
}
// --- ADD THIS ENTIRE BLOCK ---
// This is the critical missing setting. It tells LovyanGFX to use
// the external PSRAM for the large display frame buffer.
{
auto cfg = _panel_instance.config_detail();
cfg.use_psram = 1;
_panel_instance.config_detail(cfg);
}
// --- END OF ADDED BLOCK ---
{
auto cfg = _touch_instance.config();
cfg.x_min = 0; cfg.x_max = 800; cfg.y_min = 0; cfg.y_max = 480;
cfg.pin_sda = GPIO_NUM_15;
cfg.pin_scl = GPIO_NUM_16;
cfg.pin_rst = -1;
cfg.pin_int = -1;
cfg.i2c_addr = 0x5D;
cfg.i2c_port = I2C_NUM_0;
cfg.freq = 400000;
_touch_instance.config(cfg);
_panel_instance.setTouch(&_touch_instance);
}
setPanel(&_panel_instance);
}
};
static LGFX_Driver lcd;
Note: I am not using LVGL, LGFX is efficient for my product.
Please don't tell me as answer try lesson so and so. Been through it now for weeks. IMHO you have a general problem with the sync of all your HMI 800x480 RGB ESP32S3 boards, advanced or not. What I expect, is a solution which works to make the display rock solid. The current situation will not give my customers a satisfactory product to buy.
best,
Andreas
Comments
Dear Andreas,
Hope you are doing well. Thank you for the support to us.
Our technical support team is currently looking into the issue in your message. Please be patient, and we will get back to you as soon as possible.
Sorry for the inconvenience caused.
Thanks!
Warm regards,
Dear Andreas,
Thank you for the support to us .
Sorry for the inconvenience caused to you.
a. Regarding the advance series screens:
1. May I ask if you are using the example programs we provided? All of our programs have been tested and are problem-free.
2. May I confirm Did you replace the ESP32S3_120M file? If not, please follow this tutorial(as in the image below ) to replace it .
In addition, please first install the 3.0.2 version of esp32 by Espressif Systems. Then replace the ESP32S3_120M file.


(from: https://www.elecrow.com/pub/wiki/HMI_Display_course.html#version-12_1 )
If this file is not replaced, high-frequency refresh will not be supported and the screen will flicker.
3. If there are still any issues, please send us your complete program, configuration, and a video containing the specific manifestations of the problem/fault. We will try to initially locate the issue.
b. For the basic series screens (non-advance ESP32S3 HMI screens):

1. May I ask if you are using the example programs we provided? All of our programs have been tested and are problem-free.
2. If you are using our example programs for the basic series screens, please use the esp32 board version 2.0.14.
3. If there are still any issues, please send us your complete program, configuration, and a video containing the specific manifestations of the problem/fault. We will try to initially locate the issue.
We are sorry for the inconvenience caused. Actually, the reason wht we asked you to try our sample program is to determine whether it was a hardware issue or a problem with the program. We hope you can understand.
Thanks!
Best regards,
doing this i went from a working flickering display to a black screen on my 7" Advance :-( Not ideal
doing this i went from a working flickering display to a black screen on my 7" Advance, not happy