<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>7&amp;quot; — ELECROW - FORUM</title>
        <link>https://forum.elecrow.com/index.php?p=/</link>
        <pubDate>Sat, 11 Apr 2026 01:45:44 +0000</pubDate>
        <language>en</language>
            <description>7" — ELECROW - FORUM</description>
    <atom:link href="https://forum.elecrow.com/index.php?p=/discussions/tagged/7/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>All displays ESP32S3 HMI 5&quot;, HMI 7&quot;, HMI adv. 4.3&quot; / 5&quot; /7&quot; flicker</title>
        <link>https://forum.elecrow.com/index.php?p=/discussion/26212/all-displays-esp32s3-hmi-5-hmi-7-hmi-adv-4-3-5-7-flicker</link>
        <pubDate>Fri, 15 Aug 2025 11:36:30 +0000</pubDate>
        <category>Elecrow HMI Display</category>
        <dc:creator>DO1AWD</dc:creator>
        <guid isPermaLink="false">26212@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>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:</p>

<h1>pragma once</h1>

<h1>define HARDWARE_USES_EXPANDER_FOR_BL 1</h1>

<h1>define LGFX_USE_V1</h1>

<h1>include &lt;LovyanGFX.hpp&gt;</h1>

<h1>include &lt;driver/i2c.h&gt;</h1>

<p>// SD card pins aligned with official Elecrow documentation</p>

<h1>define SD_CARD_CS    0</h1>

<h1>define SD_CARD_MOSI  6</h1>

<h1>define SD_CARD_MISO  4</h1>

<h1>define SD_CARD_CLK   5</h1>

<h1>include &lt;lgfx/v1/platforms/esp32s3/Panel_RGB.hpp&gt;</h1>

<h1>include &lt;lgfx/v1/platforms/esp32s3/Bus_RGB.hpp&gt;</h1>

<p>class LGFX_Driver : public lgfx::LGFX_Device {<br />
    lgfx::Bus_RGB     _bus_instance;<br />
    lgfx::Panel_RGB   _panel_instance;<br />
    lgfx::Touch_GT911 _touch_instance;</p>

<p>public:<br />
    LGFX_Driver(void) {<br />
        {<br />
            auto cfg = _bus_instance.config();<br />
            cfg.panel = &amp;_panel_instance;<br />
            cfg.pin_d0  = GPIO_NUM_21; cfg.pin_d1  = GPIO_NUM_47;<br />
            cfg.pin_d2  = GPIO_NUM_48; cfg.pin_d3  = GPIO_NUM_45;<br />
            cfg.pin_d4  = GPIO_NUM_38; cfg.pin_d5  = GPIO_NUM_9;<br />
            cfg.pin_d6  = GPIO_NUM_10; cfg.pin_d7  = GPIO_NUM_11;<br />
            cfg.pin_d8  = GPIO_NUM_12; cfg.pin_d9  = GPIO_NUM_13;<br />
            cfg.pin_d10 = GPIO_NUM_14; cfg.pin_d11 = GPIO_NUM_7;<br />
            cfg.pin_d12 = GPIO_NUM_17; cfg.pin_d13 = GPIO_NUM_18;<br />
            cfg.pin_d14 = GPIO_NUM_3;  cfg.pin_d15 = GPIO_NUM_46;<br />
            cfg.pin_henable = GPIO_NUM_42; cfg.pin_vsync   = GPIO_NUM_41;<br />
            cfg.pin_hsync   = GPIO_NUM_40; cfg.pin_pclk    = GPIO_NUM_39;<br />
            cfg.freq_write  = 13990000;<br />
            cfg.hsync_polarity    = 0; cfg.hsync_front_porch = 8;<br />
            cfg.hsync_pulse_width = 4; cfg.hsync_back_porch  = 8;<br />
            cfg.vsync_polarity    = 0; cfg.vsync_front_porch = 8;<br />
            cfg.vsync_pulse_width = 4; cfg.vsync_back_porch  = 8;<br />
            cfg.pclk_idle_high    = 1;<br />
            _bus_instance.config(cfg);<br />
        }<br />
        {<br />
            auto cfg = _panel_instance.config();<br />
            cfg.panel_width  = 800; cfg.panel_height = 480;<br />
            _panel_instance.config(cfg);<br />
            _panel_instance.setBus(&amp;_bus_instance);<br />
        }</p>

<pre><code>    // --- 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(&amp;_touch_instance);
    }
    setPanel(&amp;_panel_instance);
}
</code></pre>

<p>};</p>

<p>static LGFX_Driver lcd;</p>

<p>Note: I am not using LVGL, LGFX is efficient for my product.</p>

<p>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.</p>

<p>best,<br />
Andreas</p>
]]>
        </description>
    </item>
   </channel>
</rss>
