From 9b0af612920a6684e4015b1663eb8eba13274351 Mon Sep 17 00:00:00 2001 From: lewisxhe Date: Thu, 15 Aug 2024 10:43:08 +0800 Subject: [PATCH] Screen initialization copy --- extras/GC9A01_Defines.h | 35 +++ extras/GC9A01_Init.h | 339 +++++++++++++++++++++++++++ extras/GC9A01_Rotation.h | 56 +++++ extras/Setup211_LilyGo_T_QT_Pro_S3.h | 45 ++++ 4 files changed, 475 insertions(+) create mode 100644 extras/GC9A01_Defines.h create mode 100644 extras/GC9A01_Init.h create mode 100644 extras/GC9A01_Rotation.h create mode 100644 extras/Setup211_LilyGo_T_QT_Pro_S3.h diff --git a/extras/GC9A01_Defines.h b/extras/GC9A01_Defines.h new file mode 100644 index 0000000..f234195 --- /dev/null +++ b/extras/GC9A01_Defines.h @@ -0,0 +1,35 @@ +// Change the width and height if required (defined in portrait mode) +// or use the constructor to over-ride defaults +#ifndef TFT_WIDTH + #define TFT_WIDTH 240 +#endif +#ifndef TFT_HEIGHT + #define TFT_HEIGHT 240 +#endif + +// Delay between some initialisation commands +#define TFT_INIT_DELAY 0x80 + +// Generic commands used by TFT_eSPI.cpp +#define TFT_NOP 0x00 +#define TFT_SWRST 0x01 + +#define TFT_CASET 0x2A +#define TFT_PASET 0x2B +#define TFT_RAMWR 0x2C + +#define TFT_RAMRD 0x2E +#define TFT_IDXRD 0x00 //0xDD // ILI9341 only, indexed control register read + +#define TFT_MADCTL 0x36 +#define TFT_MAD_MY 0x80 +#define TFT_MAD_MX 0x40 +#define TFT_MAD_MV 0x20 +#define TFT_MAD_ML 0x10 +#define TFT_MAD_BGR 0x08 +#define TFT_MAD_MH 0x04 +#define TFT_MAD_RGB 0x00 +#define TFT_MAD_COLOR_ORDER TFT_MAD_RGB + +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 diff --git a/extras/GC9A01_Init.h b/extras/GC9A01_Init.h new file mode 100644 index 0000000..a607d1e --- /dev/null +++ b/extras/GC9A01_Init.h @@ -0,0 +1,339 @@ + +// This is the command sequence that initialises the GC9A01 driver + +{ + writecommand(0xFE); + writecommand(0xEF); + + writecommand(0xB0); + writedata(0xC0); + + writecommand(0xB1); + writedata(0x80); + + writecommand(0xB2); + writedata(0x27); + + writecommand(0xB3); + writedata(0x13); + + writecommand(0xB6); + writedata(0x19); + + writecommand(0xB7); + writedata(0x05); + + writecommand(0xAC); + writedata(0xC8); + + writecommand(0xAB); + writedata(0x0f); + + writecommand(0x3A); + writedata(0x05); + + writecommand(0xB4); + writedata(0x04); + + writecommand(0xA8); + writedata(0x08); + + writecommand(0xB8); + writedata(0x08); + + writecommand(0xEA); + writedata(0x02); + + writecommand(0xE8); + writedata(0x2A); + + writecommand(0xE9); + writedata(0x47); + + writecommand(0xE7); + writedata(0x5F); + + writecommand(0xC6); + writedata(0x21); + + writecommand(0xC7); + writedata(0x15); + + writecommand(0xF0); + writedata(0x1D); + writedata(0x38); + writedata(0x09); + writedata(0x4D); + writedata(0x92); + writedata(0x2F); + writedata(0x35); + writedata(0x52); + writedata(0x1E); + writedata(0x0C); + writedata(0x04); + writedata(0x12); + writedata(0x14); + writedata(0x1F); + + writecommand(0xF1); + writedata(0x16); + writedata(0x40); + writedata(0x1C); + writedata(0x54); + writedata(0xA9); + writedata(0x2D); + writedata(0x2E); + writedata(0x56); + writedata(0x10); + writedata(0x0D); + writedata(0x0C); + writedata(0x1A); + writedata(0x14); + writedata(0x1E); + + writecommand(0xF4); + writedata(0x00); + writedata(0x00); + writedata(0xFF); + + writecommand(0xBA); + writedata(0xFF); + writedata(0xFF); + + writecommand(0x20); + + writecommand(0x11); + delay(120); + writecommand(0x29); + + + #if 0 + writecommand(0xEF); + writecommand(0xEB); + writedata(0x14); + + writecommand(0xFE); + writecommand(0xEF); + + writecommand(0xEB); + writedata(0x14); + + writecommand(0x84); + writedata(0x40); + + writecommand(0x85); + writedata(0xFF); + + writecommand(0x86); + writedata(0xFF); + + writecommand(0x87); + writedata(0xFF); + + writecommand(0x88); + writedata(0x0A); + + writecommand(0x89); + writedata(0x21); + + writecommand(0x8A); + writedata(0x00); + + writecommand(0x8B); + writedata(0x80); + + writecommand(0x8C); + writedata(0x01); + + writecommand(0x8D); + writedata(0x01); + + writecommand(0x8E); + writedata(0xFF); + + writecommand(0x8F); + writedata(0xFF); + + writecommand(0xB6); + writedata(0x00); + writedata(0x20); + + writecommand(0x3A); + writedata(0x05); + + writecommand(0x90); + writedata(0x08); + writedata(0x08); + writedata(0x08); + writedata(0x08); + + writecommand(0xBD); + writedata(0x06); + + writecommand(0xBC); + writedata(0x00); + + writecommand(0xFF); + writedata(0x60); + writedata(0x01); + writedata(0x04); + + writecommand(0xC3); + writedata(0x13); + writecommand(0xC4); + writedata(0x13); + + writecommand(0xC9); + writedata(0x22); + + writecommand(0xBE); + writedata(0x11); + + writecommand(0xE1); + writedata(0x10); + writedata(0x0E); + + writecommand(0xDF); + writedata(0x21); + writedata(0x0c); + writedata(0x02); + + writecommand(0xF0); + writedata(0x45); + writedata(0x09); + writedata(0x08); + writedata(0x08); + writedata(0x26); + writedata(0x2A); + + writecommand(0xF1); + writedata(0x43); + writedata(0x70); + writedata(0x72); + writedata(0x36); + writedata(0x37); + writedata(0x6F); + + writecommand(0xF2); + writedata(0x45); + writedata(0x09); + writedata(0x08); + writedata(0x08); + writedata(0x26); + writedata(0x2A); + + writecommand(0xF3); + writedata(0x43); + writedata(0x70); + writedata(0x72); + writedata(0x36); + writedata(0x37); + writedata(0x6F); + + writecommand(0xED); + writedata(0x1B); + writedata(0x0B); + + writecommand(0xAE); + writedata(0x77); + + writecommand(0xCD); + writedata(0x63); + + writecommand(0x70); + writedata(0x07); + writedata(0x07); + writedata(0x04); + writedata(0x0E); + writedata(0x0F); + writedata(0x09); + writedata(0x07); + writedata(0x08); + writedata(0x03); + + writecommand(0xE8); + writedata(0x34); + + writecommand(0x62); + writedata(0x18); + writedata(0x0D); + writedata(0x71); + writedata(0xED); + writedata(0x70); + writedata(0x70); + writedata(0x18); + writedata(0x0F); + writedata(0x71); + writedata(0xEF); + writedata(0x70); + writedata(0x70); + + writecommand(0x63); + writedata(0x18); + writedata(0x11); + writedata(0x71); + writedata(0xF1); + writedata(0x70); + writedata(0x70); + writedata(0x18); + writedata(0x13); + writedata(0x71); + writedata(0xF3); + writedata(0x70); + writedata(0x70); + + writecommand(0x64); + writedata(0x28); + writedata(0x29); + writedata(0xF1); + writedata(0x01); + writedata(0xF1); + writedata(0x00); + writedata(0x07); + + writecommand(0x66); + writedata(0x3C); + writedata(0x00); + writedata(0xCD); + writedata(0x67); + writedata(0x45); + writedata(0x45); + writedata(0x10); + writedata(0x00); + writedata(0x00); + writedata(0x00); + + writecommand(0x67); + writedata(0x00); + writedata(0x3C); + writedata(0x00); + writedata(0x00); + writedata(0x00); + writedata(0x01); + writedata(0x54); + writedata(0x10); + writedata(0x32); + writedata(0x98); + + writecommand(0x74); + writedata(0x10); + writedata(0x85); + writedata(0x80); + writedata(0x00); + writedata(0x00); + writedata(0x4E); + writedata(0x00); + + writecommand(0x98); + writedata(0x3e); + writedata(0x07); + + writecommand(0x35); + writecommand(0x21); + + writecommand(0x11); + delay(120); + writecommand(0x29); + delay(20); + #endif +} diff --git a/extras/GC9A01_Rotation.h b/extras/GC9A01_Rotation.h new file mode 100644 index 0000000..47bb259 --- /dev/null +++ b/extras/GC9A01_Rotation.h @@ -0,0 +1,56 @@ + +// This is the command sequence that rotates the GC9A01 driver coordinate frame + + rotation = m % 4; + + writecommand(TFT_MADCTL); + switch (rotation) { + case 0: // Portrait + writedata(TFT_MAD_COLOR_ORDER); + _width = _init_width; + _height = _init_height; +#ifdef CGRAM_OFFSET + if (_init_width == 128) + { + colstart = 2; + rowstart = 1; + } +#endif + break; + case 1: // Landscape (Portrait + 90) + writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_COLOR_ORDER); + _width = _init_height; + _height = _init_width; +#ifdef CGRAM_OFFSET + if (_init_width == 128) + { + colstart = 1; + rowstart = 2; + } +#endif + break; + case 2: // Inverter portrait + writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_COLOR_ORDER); + _width = _init_width; + _height = _init_height; +#ifdef CGRAM_OFFSET + if (_init_width == 128) + { + colstart = 2; + rowstart = 1; + } +#endif + break; + case 3: // Inverted landscape + writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_COLOR_ORDER); + _width = _init_height; + _height = _init_width; +#ifdef CGRAM_OFFSET + if (_init_width == 128) + { + colstart = 1; + rowstart = 2; + } +#endif + break; + } diff --git a/extras/Setup211_LilyGo_T_QT_Pro_S3.h b/extras/Setup211_LilyGo_T_QT_Pro_S3.h new file mode 100644 index 0000000..fa75357 --- /dev/null +++ b/extras/Setup211_LilyGo_T_QT_Pro_S3.h @@ -0,0 +1,45 @@ +// GC9A01 128 x 128 display with no chip select line +#define USER_SETUP_ID 211 + +#define GC9A01_DRIVER // Configure all registers + +#define TFT_WIDTH 128 +#define TFT_HEIGHT 128 + +// #define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue +//#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +// #define TFT_INVERSION_ON +//#define TFT_INVERSION_OFF +#define TFT_BACKLIGHT_ON 0 +// #define CGRAM_OFFSET + + +#define TFT_BL 10 // LED back-light +#define TFT_MISO -1 // Not connected +#define TFT_MOSI 2 +#define TFT_SCLK 3 +#define TFT_CS 5 +#define TFT_DC 6 +#define TFT_RST 1 // Connect reset to ensure display initialises + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + + +// #define SPI_FREQUENCY 27000000 +#define SPI_FREQUENCY 40000000 + +#define SPI_READ_FREQUENCY 20000000 + +#define SPI_TOUCH_FREQUENCY 2500000 + +// #define SUPPORT_TRANSACTIONS \ No newline at end of file