88#include " Arduino_RGBPanel_mod.h"
99#include " Arduino_RGB_Display_mod.h"
1010#include " Arduino_PCA9535SWSPI.h"
11-
11+ #if defined(ST7701_TRGB_28)
12+ /* sequence from the T-RGB 2.8 SDK */
13+ const uint8_t st7701_type9_init_operations_trgb28[297 ] = {
14+ BEGIN_WRITE,
15+
16+ WRITE_COMMAND_8, 0xFF ,
17+ WRITE_BYTES, 5 , 0x77 , 0x01 , 0x00 , 0x00 , 0x13 ,
18+
19+ WRITE_C8_D8, 0xEF , 0x08 ,
20+
21+ WRITE_COMMAND_8, 0xFF ,
22+ WRITE_BYTES, 5 , 0x77 , 0x01 , 0x00 , 0x00 , 0x10 ,
23+
24+ WRITE_C8_D16, 0xC0 , 0x3B , 0x00 ,
25+ WRITE_C8_D16, 0xC1 , 0x10 , 0x0C ,
26+ WRITE_C8_D16, 0xC2 , 0x07 , 0x0A ,
27+ WRITE_C8_D8, 0xC7 , 0x00 ,
28+ WRITE_C8_D8, 0xC7 , 0x10 ,
29+ WRITE_C8_D8, 0xCD , 0x08 ,
30+
31+ WRITE_COMMAND_8, 0xB0 , // Positive Voltage Gamma Control
32+ WRITE_BYTES, 16 ,
33+ 0x05 , 0x12 , 0x98 , 0x0e , 0x0F ,
34+ 0x07 , 0x07 , 0x09 , 0x09 , 0x23 ,
35+ 0x05 , 0x52 , 0x0F , 0x67 , 0x2C ,
36+ 0x11 ,
37+
38+
39+
40+ WRITE_COMMAND_8, 0xB1 , // Negative Voltage Gamma Control
41+ WRITE_BYTES, 16 ,
42+ 0x0B , 0x11 , 0x97 , 0x0C , 0x12 ,
43+ 0x06 , 0x06 , 0x08 , 0x08 , 0x22 ,
44+ 0x03 , 0x51 , 0x11 , 0x66 , 0x2B ,
45+ 0x0F ,
46+
47+ WRITE_COMMAND_8, 0xFF ,
48+ WRITE_BYTES, 5 , 0x77 , 0x01 , 0x00 , 0x00 , 0x11 ,
49+
50+ WRITE_C8_D8, 0xB0 , 0x5D ,
51+ WRITE_C8_D8, 0xB1 , 0x2D ,
52+ WRITE_C8_D8, 0xB2 , 0x81 ,
53+ WRITE_C8_D8, 0xB3 , 0x80 ,
54+ WRITE_C8_D8, 0xB5 , 0x4E ,
55+ WRITE_C8_D8, 0xB7 , 0x85 ,
56+ WRITE_C8_D8, 0xB8 , 0x20 ,
57+ WRITE_C8_D8, 0xC1 , 0x78 ,
58+ WRITE_C8_D8, 0xC2 , 0x78 ,
59+
60+ WRITE_C8_D8, 0xD0 , 0x88 ,
61+
62+ WRITE_COMMAND_8, 0xE0 ,
63+ WRITE_BYTES, 4 ,
64+ 0x00 , 0x00 , 0x02 ,
65+
66+ WRITE_COMMAND_8, 0xE1 ,
67+ WRITE_BYTES, 16 ,
68+ 0x06 , 0x30 , 0x08 , 0x30 , 0x05 ,
69+ 0x30 , 0x07 , 0x30 , 0x00 , 0x33 ,
70+ 0x33 ,
71+
72+ WRITE_COMMAND_8, 0xE2 ,
73+ WRITE_BYTES, 16 ,
74+ 0x11 , 0x11 , 0x33 , 0x33 , 0xf4 ,
75+ 0x00 , 0x00 , 0x00 , 0xf4 , 0x00 ,
76+ 0x00 , 0x00 ,
77+
78+ WRITE_COMMAND_8, 0xE3 ,
79+ WRITE_BYTES, 4 , 0x00 , 0x00 , 0x11 , 0x11 ,
80+
81+ WRITE_C8_D16, 0xE4 , 0x44 , 0x44 ,
82+
83+ WRITE_COMMAND_8, 0xE5 ,
84+ WRITE_BYTES, 16 ,
85+ 0x0d , 0xf5 , 0x30 , 0xf0 , 0x0f ,
86+ 0xf7 , 0x30 , 0xf0 , 0x09 , 0xf1 ,
87+ 0x30 , 0xf0 , 0x0b , 0xf3 , 0x30 , 0xf0 ,
88+
89+ WRITE_COMMAND_8, 0xE6 ,
90+ WRITE_BYTES, 4 , 0x00 , 0x00 , 0x11 , 0x11 ,
91+
92+ WRITE_C8_D16, 0xE7 , 0x44 , 0x44 ,
93+
94+ WRITE_COMMAND_8, 0xE8 ,
95+ WRITE_BYTES, 16 ,
96+ 0x0c , 0xf4 , 0x30 , 0xf0 ,
97+ 0x0e , 0xf6 , 0x30 , 0xf0 ,
98+ 0x08 , 0xf0 , 0x30 , 0xf0 ,
99+ 0x0a , 0xf2 , 0x30 , 0xf0 ,
100+
101+ WRITE_C8_D8, 0xe9 , 0x36 ,
102+
103+ WRITE_COMMAND_8, 0xEB ,
104+ WRITE_BYTES, 7 ,
105+ 0x00 , 0x01 , 0xe4 , 0xe4 ,
106+ 0x44 , 0x88 , 0x40 ,
107+
108+ WRITE_COMMAND_8, 0xED ,
109+ WRITE_BYTES, 16 ,
110+ 0xff , 0x10 , 0xaf , 0x76 ,
111+ 0x54 , 0x2b , 0xcf , 0xff ,
112+ 0xff , 0xfc , 0xb2 , 0x45 ,
113+ 0x67 , 0xfa , 0x01 , 0xff ,
114+
115+ WRITE_COMMAND_8, 0xEF ,
116+ WRITE_BYTES, 6 ,
117+ 0x08 , 0x08 , 0x08 , 0x45 ,
118+ 0x3f , 0x54 ,
119+
120+ WRITE_COMMAND_8, 0xFF ,
121+ WRITE_BYTES, 5 , 0x77 , 0x01 , 0x00 , 0x00 , 0x00 ,
122+
123+ WRITE_COMMAND_8, 0x11 , // Sleep Out
124+ END_WRITE,
125+
126+ DELAY, 150 ,
127+
128+ BEGIN_WRITE,
129+ WRITE_C8_D8, 0x3A , 0x66 ,
130+ WRITE_C8_D8, 0x36 , 0x08 ,
131+ WRITE_C8_D8, 0x35 , 0x00 ,
132+ WRITE_COMMAND_8, 0x29 , // Display On
133+ END_WRITE,
134+ DELAY, 20
135+ };
136+ #endif
12137namespace dev {
13138
14139void tftPinInfo (const __FlashStringHelper* pinfunction, int8_t pin)
@@ -106,6 +231,25 @@ void ArduinoGfx::init(int w, int h)
106231 st7701_4848S040_init_operations, sizeof (st7701_4848S040_init_operations));
107232 tft->begin (GFX_NOT_DEFINED); // Used for RFB displays
108233
234+
235+ #elif (TFT_WIDTH == 480) && (TFT_HEIGHT == 480) && defined(ST7701_DRIVER) && defined(ST7701_TRGB_28)
236+ /* SPI to the TFT is done over an I2C port expander */
237+ Arduino_DataBus *bus = new Arduino_XL9535SWSPI (8 /* SDA */ , 48 /* SCL */ , 2 /* XL PWD */ , 3 /* XL CS */ , 5 /* XL SCK */ , 4 /* XL MOSI */ );
238+
239+ Arduino_ESP32RGBPanel *rgbpanel = new Arduino_ESP32RGBPanel (
240+ 45 /* DE */ , 41 /* VSYNC */ , 47 /* HSYNC */ , 42 /* PCLK */ ,
241+ 21 /* R0 */ , 18 /* R1 */ , 17 /* R2 */ , 16 /* R3 */ , 15 /* R4 */ ,
242+ 14 /* G0 */ , 13 /* G1 */ , 12 /* G2 */ , 11 /* G3 */ , 10 /* G4 */ , 9 /* G5 */ ,
243+ 7 /* B0 */ , 6 /* B1 */ , 5 /* B2 */ , 3 /* B3 */ , 2 /* B4 */ ,
244+ 1 /* hsync_polarity */ , 50 /* hsync_front_porch */ , 1 /* hsync_pulse_width */ , 30 /* hsync_back_porch */ ,
245+ 1 /* vsync_polarity */ , 20 /* vsync_front_porch */ , 1 /* vsync_pulse_width */ , 30 /* vsync_back_porch */ ,
246+ 1 /* pclk_active_neg */ );
247+
248+ tft = new Arduino_RGB_Display (
249+ 480 /* width */ , 480 /* height */ , rgbpanel, 0 /* rotation */ , true /* auto_flush */ ,
250+ bus, GFX_NOT_DEFINED /* RST */ , st7701_type9_init_operations_trgb28, sizeof (st7701_type9_init_operations_trgb28));
251+ tft->begin (GFX_NOT_DEFINED); // Used for RFB displays
252+
109253#elif (TFT_WIDTH == 480) && (TFT_HEIGHT == 480) && defined(ST7701_DRIVER)
110254 /* More data bus class: https://github.com/moononournation/Arduino_GFX/wiki/Data-Bus-Class */
111255 Arduino_DataBus* bus = new Arduino_SWSPI (TFT_DC, TFT_CS, TFT_SCLK, TFT_MOSI, TFT_MISO);
@@ -494,4 +638,4 @@ uint32_t ArduinoGfx::get_tft_driver()
494638} // namespace dev
495639
496640dev::ArduinoGfx haspTft;
497- #endif
641+ #endif
0 commit comments