mirror of
https://github.com/Bodmer/TFT_eSPI.git
synced 2025-07-31 11:17:32 +02:00
34
TFT_Drivers/GC9A01_Defines.h
Normal file
34
TFT_Drivers/GC9A01_Defines.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// 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 320
|
||||||
|
#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_INVOFF 0x20
|
||||||
|
#define TFT_INVON 0x21
|
232
TFT_Drivers/GC9A01_Init.h
Normal file
232
TFT_Drivers/GC9A01_Init.h
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
|
||||||
|
// This is the command sequence that initialises the GC9A01 driver
|
||||||
|
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
28
TFT_Drivers/GC9A01_Rotation.h
Normal file
28
TFT_Drivers/GC9A01_Rotation.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
// 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_BGR);
|
||||||
|
_width = _init_width;
|
||||||
|
_height = _init_height;
|
||||||
|
break;
|
||||||
|
case 1: // Landscape (Portrait + 90)
|
||||||
|
writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_BGR);
|
||||||
|
_width = _init_height;
|
||||||
|
_height = _init_width;
|
||||||
|
break;
|
||||||
|
case 2: // Inverter portrait
|
||||||
|
writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_BGR);
|
||||||
|
_width = _init_width;
|
||||||
|
_height = _init_height;
|
||||||
|
break;
|
||||||
|
case 3: // Inverted landscape
|
||||||
|
writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_BGR);
|
||||||
|
_width = _init_height;
|
||||||
|
_height = _init_width;
|
||||||
|
break;
|
||||||
|
}
|
@ -625,6 +625,9 @@ void TFT_eSPI::init(uint8_t tc)
|
|||||||
#elif defined (SSD1963_DRIVER)
|
#elif defined (SSD1963_DRIVER)
|
||||||
#include "TFT_Drivers/SSD1963_Init.h"
|
#include "TFT_Drivers/SSD1963_Init.h"
|
||||||
|
|
||||||
|
#elif defined (GC9A01_DRIVER)
|
||||||
|
#include "TFT_Drivers/GC9A01_Init.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef TFT_INVERSION_ON
|
#ifdef TFT_INVERSION_ON
|
||||||
@ -704,6 +707,9 @@ void TFT_eSPI::setRotation(uint8_t m)
|
|||||||
#elif defined (SSD1963_DRIVER)
|
#elif defined (SSD1963_DRIVER)
|
||||||
#include "TFT_Drivers/SSD1963_Rotation.h"
|
#include "TFT_Drivers/SSD1963_Rotation.h"
|
||||||
|
|
||||||
|
#elif defined (GC9A01_DRIVER)
|
||||||
|
#include "TFT_Drivers/GC9A01_Rotation.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
delayMicroseconds(10);
|
delayMicroseconds(10);
|
||||||
|
@ -168,6 +168,9 @@
|
|||||||
#elif defined (SSD1963_800BD_DRIVER)
|
#elif defined (SSD1963_800BD_DRIVER)
|
||||||
#include "TFT_Drivers/SSD1963_Defines.h"
|
#include "TFT_Drivers/SSD1963_Defines.h"
|
||||||
#define TFT_DRIVER 0x1963
|
#define TFT_DRIVER 0x1963
|
||||||
|
#elif defined (GC9A01_DRIVER)
|
||||||
|
#include "TFT_Drivers/GC9A01_Defines.h"
|
||||||
|
#define TFT_DRIVER 0x9A01
|
||||||
// <<<<<<<<<<<<<<<<<<<<<<<< ADD NEW DRIVER HERE
|
// <<<<<<<<<<<<<<<<<<<<<<<< ADD NEW DRIVER HERE
|
||||||
// XYZZY_init.h and XYZZY_rotation.h must also be added in TFT_eSPI.cpp
|
// XYZZY_init.h and XYZZY_rotation.h must also be added in TFT_eSPI.cpp
|
||||||
#elif defined (XYZZY_DRIVER)
|
#elif defined (XYZZY_DRIVER)
|
||||||
|
26
User_Setups/Setup46_GC9A01_ESP32.h
Normal file
26
User_Setups/Setup46_GC9A01_ESP32.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#define GC9A01_DRIVER
|
||||||
|
|
||||||
|
#define TFT_MISO 19
|
||||||
|
#define TFT_MOSI 23
|
||||||
|
#define TFT_SCLK 18
|
||||||
|
#define TFT_CS 15 // Chip select control pin
|
||||||
|
#define TFT_DC 2 // Data Command control pin
|
||||||
|
#define TFT_RST 4 // Reset pin (could connect to RST pin)
|
||||||
|
//#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
|
||||||
|
|
||||||
|
#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_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
|
||||||
|
#define SMOOTH_FONT
|
||||||
|
|
||||||
|
#define SPI_FREQUENCY 40000000
|
||||||
|
|
||||||
|
#define SPI_READ_FREQUENCY 20000000
|
||||||
|
|
||||||
|
#define SPI_TOUCH_FREQUENCY 2500000
|
||||||
|
|
||||||
|
// #define SUPPORT_TRANSACTIONS
|
Reference in New Issue
Block a user