elecrow lgfx support

This commit is contained in:
mverch67
2025-05-01 00:34:54 +02:00
parent 33aa6890f7
commit 5eae5d39f3
3 changed files with 22 additions and 24 deletions
+14 -9
View File
@@ -2,11 +2,13 @@
#define LGFX_USE_V1
#include <LovyanGFX.hpp>
#include <TCA9534.h>
#include <lgfx/v1/platforms/esp32s3/Bus_RGB.hpp>
#include <lgfx/v1/platforms/esp32s3/Panel_RGB.hpp>
#include <TCA9534.h>
TCA9534 ioex;
#ifndef FREQ_WRITE
#define FREQ_WRITE 14000000
#endif
class LGFX_ELECROW70 : public lgfx::LGFX_Device
{
@@ -28,11 +30,11 @@ class LGFX_ELECROW70 : public lgfx::LGFX_Device
ioex.config(2, TCA9534::Config::OUT);
ioex.config(3, TCA9534::Config::OUT);
ioex.config(4, TCA9534::Config::OUT);
ioex.output(1, TCA9534::Level::H);
ioex.output(3, TCA9534::Level::L);
ioex.output(4, TCA9534::Level::H);
pinMode(1, OUTPUT);
digitalWrite(1, LOW);
ioex.output(2, TCA9534::Level::L);
@@ -61,7 +63,7 @@ class LGFX_ELECROW70 : public lgfx::LGFX_Device
{
auto cfg = _panel_instance.config_detail();
cfg.use_psram = 0;
cfg.use_psram = 1;
_panel_instance.config_detail(cfg);
}
@@ -89,7 +91,7 @@ class LGFX_ELECROW70 : public lgfx::LGFX_Device
cfg.pin_vsync = GPIO_NUM_41;
cfg.pin_hsync = GPIO_NUM_40;
cfg.pin_pclk = GPIO_NUM_39;
cfg.freq_write = 13000000;
cfg.freq_write = FREQ_WRITE;
cfg.hsync_polarity = 0;
cfg.hsync_front_porch = 8;
@@ -102,9 +104,9 @@ class LGFX_ELECROW70 : public lgfx::LGFX_Device
cfg.vsync_back_porch = 8;
cfg.pclk_idle_high = 1;
//cfg.pclk_active_neg = 0;
//cfg.pclk_idle_high = 0;
//cfg.de_idle_high = 1;
// cfg.pclk_active_neg = 0;
// cfg.pclk_idle_high = 0;
// cfg.de_idle_high = 1;
_bus_instance.config(cfg);
}
@@ -132,4 +134,7 @@ class LGFX_ELECROW70 : public lgfx::LGFX_Device
setPanel(&_panel_instance);
}
private:
TCA9534 ioex;
};
@@ -29,6 +29,7 @@ class DisplayDriverConfig
BPICOMPUTER_S3,
TWATCH_S3,
UNPHONE_V9,
ELECROW_ADV,
HELTEC_TRACKER,
WT32_SC01_PLUS,
ESP2432S028RV1,
@@ -10,9 +10,6 @@
#if defined(EINK_DRIVER) || defined(ARCH_PORTDUINO)
// TODO #include "graphics/driver/EINKDriver.h"
#endif
#if defined(USE_FRAMEBUFFER)
#include "graphics/driver/FBDriver.h"
#endif
#if defined(USE_X11)
#include "graphics/driver/X11Driver.h"
#endif
@@ -45,6 +42,9 @@
#ifdef UNPHONE
#include "graphics/LGFX/LGFX_UNPHONE.h"
#endif
#ifdef ELECROW_PANEL
#include "graphics/LGFX/LGFX_ELECROW70.h"
#endif
#ifdef ESP32_2432S022
#include "graphics/LGFX/LGFX_ESP2432S022.h"
#endif
@@ -69,9 +69,6 @@ DisplayDriverFactory::DisplayDriverFactory() {}
DisplayDriver *DisplayDriverFactory::create(uint16_t width, uint16_t height)
{
#if defined(USE_FRAMEBUFFER)
return &FBDriver::create(width, height);
#endif
#if defined(USE_X11)
return &X11Driver::create(width, height);
#elif defined(LGFX_DRIVER)
@@ -100,11 +97,6 @@ DisplayDriver *DisplayDriverFactory::create(const DisplayDriverConfig &cfg)
// TODO return new EINKDriver<EINKConfig>(cfg);
}
#endif
#if defined(USE_FRAMEBUFFER)
if (cfg._device == DisplayDriverConfig::device_t::FB) {
return &FBDriver::create(cfg.width(), cfg.height());
}
#endif
#if defined(USE_X11)
if (cfg._device == DisplayDriverConfig::device_t::X11) {
return &X11Driver::create(cfg.width(), cfg.height());
@@ -147,6 +139,10 @@ DisplayDriver *DisplayDriverFactory::create(const DisplayDriverConfig &cfg)
case DisplayDriverConfig::device_t::UNPHONE_V9:
return new LGFXDriver<LGFX_UNPHONE_V9>(cfg.width(), cfg.height());
break;
#elif defined(ELECROW_PANEL)
case DisplayDriverConfig::device_t::ELECROW_ADV:
return new LGFXDriver<LGFX_ELECROW70>(cfg.width(), cfg.height());
break;
#elif defined(HELTEC_TRACKER)
case DisplayDriverConfig::device_t::HELTEC_TRACKER:
// return new LGFXDriver<LGFX_HELTEC_TRACKER>(cfg.width(), cfg.height());
@@ -164,10 +160,6 @@ DisplayDriver *DisplayDriverFactory::create(const DisplayDriverConfig &cfg)
return new LGFXDriver<LGFX_ESP2432S028RV2>(cfg.width(), cfg.height());
break;
#endif
#elif defined(USE_FRAMEBUFFER)
case DisplayDriverConfig::device_t::FB:
return &FBDriver::create(cfg.width(), cfg.height());
break;
#elif defined(USE_X11)
case DisplayDriverConfig::device_t::X11:
return &X11Driver::create(cfg.width(), cfg.height());