From ba7f23bb9b446758f39a2fbd11d5a997aab79b19 Mon Sep 17 00:00:00 2001 From: notmasteryet <146979+notmasteryet@users.noreply.github.com> Date: Wed, 2 Jul 2025 17:37:42 -0500 Subject: [PATCH] Add more config options for ST7789 TFT display ... in support of CYD --- src/graphics/TFTDisplay.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/graphics/TFTDisplay.cpp b/src/graphics/TFTDisplay.cpp index 92b2c3d02..47777b193 100644 --- a/src/graphics/TFTDisplay.cpp +++ b/src/graphics/TFTDisplay.cpp @@ -428,6 +428,8 @@ class LGFX : public lgfx::LGFX_Device #if HAS_TOUCHSCREEN #if defined(T_WATCH_S3) || defined(ELECROW) lgfx::Touch_FT5x06 _touch_instance; +#elif defined(TOUCH_CS) + lgfx::Touch_XPT2046 _touch_instance; #else lgfx::Touch_GT911 _touch_instance; #endif @@ -491,8 +493,17 @@ class LGFX : public lgfx::LGFX_Device #endif cfg.dummy_read_bits = 1; // Number of bits for dummy read before non-pixel data read cfg.readable = true; // Set to true if data can be read +#ifndef TFT_INVERSION_OFF cfg.invert = true; // Set to true if the light/darkness of the panel is reversed +#else + cfg.invert = false; +#endif + +#if !defined(TFT_RGB_ORDER) || (TFT_RGB_ORDER == TFT_BGR) cfg.rgb_order = false; // Set to true if the panel's red and blue are swapped +#else + cfg.rgb_order = true; +#endif cfg.dlen_16bit = false; // Set to true for panels that transmit data length in 16-bit units with 16-bit parallel or SPI cfg.bus_shared = true; // If the bus is shared with the SD card, set to true (bus control with drawJpgFile etc.) @@ -519,6 +530,7 @@ class LGFX : public lgfx::LGFX_Device #endif #if HAS_TOUCHSCREEN +#if !defined(TOUCH_CS) // Configure settings for touch screen control. { auto cfg = _touch_instance.config(); @@ -551,6 +563,30 @@ class LGFX : public lgfx::LGFX_Device _touch_instance.config(cfg); _panel_instance.setTouch(&_touch_instance); } +#else // if defined(TOUCH_CS) + { + // Configure settings for touch control. + auto touch_cfg = _touch_instance.config(); + + touch_cfg.x_min = TFT_TOUCH_X_MIN; + touch_cfg.x_max = TFT_TOUCH_X_MAX; + touch_cfg.y_min = TFT_TOUCH_Y_MIN; + touch_cfg.y_max = TFT_TOUCH_Y_MAX; + touch_cfg.pin_int = -1; + touch_cfg.bus_shared = true; + touch_cfg.offset_rotation = TFT_TOUCH_OFFSET_ROTATION; + // SPI configuration + touch_cfg.spi_host = ST7789_SPI_HOST; + touch_cfg.freq = SPI_TOUCH_FREQUENCY; + touch_cfg.pin_sclk = ST7789_SCK; + touch_cfg.pin_mosi = ST7789_SDA; + touch_cfg.pin_miso = ST7789_MISO; + touch_cfg.pin_cs = TOUCH_CS; + + _touch_instance.config(touch_cfg); + _panel_instance.setTouch(&_touch_instance); + } +#endif #endif setPanel(&_panel_instance); // Sets the panel to use.