ESPHome 2026.5.1
Loading...
Searching...
No Matches
ili9xxx_init.h
Go to the documentation of this file.
1#pragma once
3
4#include <cinttypes>
5
6namespace esphome::ili9xxx {
7
8// clang-format off
9static constexpr uint8_t PROGMEM INITCMD_M5STACK[] = {
10 0xEF, 3, 0x03, 0x80, 0x02,
11 0xCF, 3, 0x00, 0xC1, 0x30,
12 0xED, 4, 0x64, 0x03, 0x12, 0x81,
13 0xE8, 3, 0x85, 0x00, 0x78,
14 0xCB, 5, 0x39, 0x2C, 0x00, 0x34, 0x02,
15 0xF7, 1, 0x20,
16 0xEA, 2, 0x00, 0x00,
17 ILI9XXX_PWCTR1 , 1, 0x23, // Power control VRH[5:0]
18 ILI9XXX_PWCTR2 , 1, 0x10, // Power control SAP[2:0];BT[3:0]
19 ILI9XXX_VMCTR1 , 2, 0x3e, 0x28, // VCM control
20 ILI9XXX_VMCTR2 , 1, 0x86, // VCM control2
21 ILI9XXX_MADCTL , 1, MADCTL_BGR, // Memory Access Control
22 ILI9XXX_VSCRSADD, 1, 0x00, // Vertical scroll zero
23 ILI9XXX_PIXFMT , 1, 0x55,
24 ILI9XXX_FRMCTR1 , 2, 0x00, 0x13,
25 ILI9XXX_DFUNCTR , 3, 0x08, 0x82, 0x27, // Display Function Control
26 0xF2, 1, 0x00, // 3Gamma Function Disable
27 ILI9XXX_GAMMASET , 1, 0x01, // Gamma curve selected
28 ILI9XXX_GMCTRP1 , 15, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, // Set Gamma
29 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03,
30 0x0E, 0x09, 0x00,
31 ILI9XXX_GMCTRN1 , 15, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, // Set Gamma
32 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C,
33 0x31, 0x36, 0x0F,
34 ILI9XXX_SLPOUT , 0x80, // Exit Sleep
35 ILI9XXX_DISPON , 0x80, // Display on
36 0x00 // End of list
37};
38
39static constexpr uint8_t PROGMEM INITCMD_M5CORE[] = {
40 ILI9XXX_SETEXTC, 3, 0xFF,0x93,0x42, // Turn on the external command
41 ILI9XXX_PWCTR1 , 2, 0x12, 0x12,
42 ILI9XXX_PWCTR2 , 1, 0x03,
43 ILI9XXX_VMCTR1 , 1, 0xF2,
44 ILI9XXX_IFMODE , 1, 0xE0,
45 0xF6 , 3, 0x01, 0x00, 0x00,
46 ILI9XXX_GMCTRP1,15, 0x00,0x0C,0x11,0x04,0x11,0x08,0x37,0x89,0x4C,0x06,0x0C,0x0A,0x2E,0x34,0x0F,
47 ILI9XXX_GMCTRN1,15, 0x00,0x0B,0x11,0x05,0x13,0x09,0x33,0x67,0x48,0x07,0x0E,0x0B,0x2E,0x33,0x0F,
48 ILI9XXX_DFUNCTR, 4, 0x08,0x82,0x1D,0x04,
49 ILI9XXX_IDMOFF , 0,
50 ILI9XXX_DISPON , 0x80, // Display on
51 ILI9XXX_SLPOUT , 0x80, // Exit Sleep
52
53 0x00 // End of list
54};
55
56
57
58static constexpr uint8_t PROGMEM INITCMD_ILI9341[] = {
59 0xEF, 3, 0x03, 0x80, 0x02,
60 0xCF, 3, 0x00, 0xC1, 0x30,
61 0xED, 4, 0x64, 0x03, 0x12, 0x81,
62 0xE8, 3, 0x85, 0x00, 0x78,
63 0xCB, 5, 0x39, 0x2C, 0x00, 0x34, 0x02,
64 0xF7, 1, 0x20,
65 0xEA, 2, 0x00, 0x00,
66 ILI9XXX_PWCTR1 , 1, 0x23, // Power control VRH[5:0]
67 ILI9XXX_PWCTR2 , 1, 0x10, // Power control SAP[2:0];BT[3:0]
68 ILI9XXX_VMCTR1 , 2, 0x3e, 0x28, // VCM control
69 ILI9XXX_VMCTR2 , 1, 0x86, // VCM control2
70 ILI9XXX_MADCTL , 1, 0x48, // Memory Access Control
71 ILI9XXX_VSCRSADD, 1, 0x00, // Vertical scroll zero
72 ILI9XXX_PIXFMT , 1, 0x55,
73 ILI9XXX_FRMCTR1 , 2, 0x00, 0x18,
74 ILI9XXX_DFUNCTR , 3, 0x08, 0x82, 0x27, // Display Function Control
75 0xF2, 1, 0x00, // 3Gamma Function Disable
76 ILI9XXX_GAMMASET , 1, 0x01, // Gamma curve selected
77 ILI9XXX_GMCTRP1 , 15, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, // Set Gamma
78 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03,
79 0x0E, 0x09, 0x00,
80 ILI9XXX_GMCTRN1 , 15, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, // Set Gamma
81 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C,
82 0x31, 0x36, 0x0F,
83 ILI9XXX_SLPOUT , 0x80, // Exit Sleep
84 ILI9XXX_DISPON , 0x80, // Display on
85 0x00 // End of list
86};
87
88static constexpr uint8_t PROGMEM INITCMD_ILI9481[] = {
89 ILI9XXX_SLPOUT , 0x80, // Exit sleep mode
90 ILI9XXX_PWSET , 3, 0x07, 0x41, 0x1D,
91 ILI9XXX_VMCTR , 3, 0x00, 0x1C, 0x1F,
92 ILI9XXX_PWSETN , 2, 0x01, 0x11,
93 ILI9XXX_PWCTR1 , 5, 0x10, 0x3B, 0x00, 0x02, 0x11,
94 ILI9XXX_VMCTR1 , 1, 0x03,
95 ILI9XXX_IFCTR , 1, 0x83,
96 ILI9XXX_GMCTR ,12, 0x00, 0x26, 0x21, 0x00, 0x00, 0x1F, 0x65, 0x23, 0x77, 0x00, 0x0F, 0x00,
97 ILI9XXX_IFMODE , 1, 0x00, // CommandAccessProtect
98 ILI9XXX_PTLAR , 4, 0, 0, 1, 0xDF,
99 0xE4 , 1, 0xA0,
100 ILI9XXX_MADCTL , 1, MADCTL_MV | MADCTL_BGR, // Memory Access Control
101 ILI9XXX_CSCON , 1, 0x01,
102 ILI9XXX_PIXFMT, 1, 0x55, // 16 bit mode
103 ILI9XXX_DISPON, 0x80, // Set display on
104 0x00 // end
105};
106
107static constexpr uint8_t PROGMEM INITCMD_ILI9481_18[] = {
108 ILI9XXX_SLPOUT , 0x80, // Exit sleep mode
109 ILI9XXX_PWSET , 3, 0x07, 0x41, 0x1D,
110 ILI9XXX_VMCTR , 3, 0x00, 0x1C, 0x1F,
111 ILI9XXX_PWSETN , 2, 0x01, 0x11,
112 ILI9XXX_PWCTR1 , 5, 0x10, 0x3B, 0x00, 0x02, 0x11,
113 ILI9XXX_VMCTR1 , 1, 0x03,
114 ILI9XXX_IFCTR , 1, 0x83,
115 ILI9XXX_GMCTR ,12, 0x00, 0x26, 0x21, 0x00, 0x00, 0x1F, 0x65, 0x23, 0x77, 0x00, 0x0F, 0x00,
116 ILI9XXX_IFMODE , 1, 0x00, // CommandAccessProtect
117 ILI9XXX_PTLAR , 4, 0, 0, 1, 0xDF,
118 0xE4 , 1, 0xA0,
119 ILI9XXX_MADCTL , 1, MADCTL_MX| MADCTL_BGR, // Memory Access Control
120 ILI9XXX_CSCON , 1, 0x01,
121 ILI9XXX_PIXFMT, 1, 0x66, // 18 bit mode
122 ILI9XXX_DISPON, 0x80, // Set display on
123 0x00 // end
124};
125
126static constexpr uint8_t PROGMEM INITCMD_ILI9486[] = {
127 ILI9XXX_SLPOUT, 0x80,
128 ILI9XXX_PIXFMT, 1, 0x55,
129 ILI9XXX_PWCTR3, 1, 0x44,
130 ILI9XXX_VMCTR1, 4, 0x00, 0x00, 0x00, 0x00,
131 ILI9XXX_GMCTRP1, 15, 0x0f,0x1f,0x1c,0x0c,0x0f,0x08,0x48,0x98,0x37,0x0a,0x13,0x04,0x11,0x0d,0x00,
132 ILI9XXX_GMCTRN1, 15, 0x0f,0x32,0x2e,0x0b,0x0d,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,
133 ILI9XXX_INVOFF, 0x80,
134 ILI9XXX_MADCTL, 1, 0x48,
135 ILI9XXX_DISPON, 0x80,
136
137 // ILI9XXX_MADCTL, 1, MADCTL_BGR | MADCTL_MV, //hardware rotation
138 0x00 // End of list
139};
140
141
142static const uint8_t INITCMD_ILI9488[] = {
143 ILI9XXX_GMCTRP1,15, 0x0f, 0x24, 0x1c, 0x0a, 0x0f, 0x08, 0x43, 0x88, 0x32, 0x0f, 0x10, 0x06, 0x0f, 0x07, 0x00,
144 ILI9XXX_GMCTRN1,15, 0x0F, 0x38, 0x30, 0x09, 0x0f, 0x0f, 0x4e, 0x77, 0x3c, 0x07, 0x10, 0x05, 0x23, 0x1b, 0x00,
145
146 ILI9XXX_PWCTR1, 2, 0x17, 0x15, // VRH1 VRH2
147 ILI9XXX_PWCTR2, 1, 0x41, // VGH, VGL
148 ILI9XXX_VMCTR1, 3, 0x00, 0x12, 0x80, // nVM VCM_REG VCM_REG_EN
149
150 ILI9XXX_IFMODE, 1, 0x00,
151 ILI9XXX_FRMCTR1, 1, 0xA0, // Frame rate = 60Hz
152 ILI9XXX_INVCTR, 1, 0x02, // Display Inversion Control = 2dot
153
154 0xE9, 1, 0x00, // Set Image Functio. Disable 24 bit data
155
156 ILI9XXX_ADJCTL3, 4, 0xA9, 0x51, 0x2C, 0x82, // Adjust Control 3
157 ILI9XXX_PIXFMT, 1, 0x66, //ILI9488 only supports 18-bit pixel format in 4/3 wire SPI mode
158 ILI9XXX_SLPOUT, 0x80, // Exit sleep mode
159 ILI9XXX_DISPON, 0x80, // Set display on
160 0x00 // end
161};
162
163static const uint8_t INITCMD_WAVESHARE_RES_3_5[] = {
164 ILI9XXX_PWCTR3, 1, 0x33,
165 ILI9XXX_VMCTR1, 3, 0x00, 0x1e, 0x80,
166 ILI9XXX_FRMCTR1, 1, 0xA0,
167 ILI9XXX_GMCTRP1, 15, 0x0, 0x13, 0x18, 0x04, 0x0F, 0x06, 0x3a, 0x56, 0x4d, 0x03, 0x0a, 0x06, 0x30, 0x3e, 0x0f,
168 ILI9XXX_GMCTRN1, 15, 0x0, 0x13, 0x18, 0x01, 0x11, 0x06, 0x38, 0x34, 0x4d, 0x06, 0x0d, 0x0b, 0x31, 0x37, 0x0f,
169 ILI9XXX_PIXFMT, 1, 0x55,
170 ILI9XXX_SLPOUT, 0x80, // slpout, delay
171 ILI9XXX_DISPON, 0,
172 0x00 // End of list
173};
174
175static constexpr uint8_t PROGMEM INITCMD_ILI9488_A[] = {
176 ILI9XXX_GMCTRP1,15, 0x00, 0x03, 0x09, 0x08, 0x16, 0x0A, 0x3F, 0x78, 0x4C, 0x09, 0x0A, 0x08, 0x16, 0x1A, 0x0F,
177 ILI9XXX_GMCTRN1,15, 0x00, 0x16, 0x19, 0x03, 0x0F, 0x05, 0x32, 0x45, 0x46, 0x04, 0x0E, 0x0D, 0x35, 0x37, 0x0F,
178
179 ILI9XXX_PWCTR1, 2, 0x17, 0x15, // VRH1 VRH2
180 ILI9XXX_PWCTR2, 1, 0x41, // VGH, VGL
181 ILI9XXX_VMCTR1, 3, 0x00, 0x12, 0x80, // nVM VCM_REG VCM_REG_EN
182
183 ILI9XXX_IFMODE, 1, 0x00,
184 ILI9XXX_FRMCTR1, 1, 0xA0, // Frame rate = 60Hz
185 ILI9XXX_INVCTR, 1, 0x02, // Display Inversion Control = 2dot
186
187 ILI9XXX_DFUNCTR, 2, 0x02, 0x02, // Nomal scan
188
189 0xE9, 1, 0x00, // Set Image Functio. Disable 24 bit data
190
191 ILI9XXX_ADJCTL3, 4, 0xA9, 0x51, 0x2C, 0x82, // Adjust Control 3
192
193 ILI9XXX_MADCTL, 1, 0x28,
194 //ILI9XXX_PIXFMT, 1, 0x55, // Interface Pixel Format = 16bit
195 ILI9XXX_PIXFMT, 1, 0x66, //ILI9488 only supports 18-bit pixel format in 4/3 wire SPI mode
196
197
198
199 // 5 frames
200 //ILI9XXX_ETMOD, 1, 0xC6, //
201
202
203 ILI9XXX_SLPOUT, 0x80, // Exit sleep mode
204 ILI9XXX_DISPON, 0x80, // Set display on
205 0x00 // end
206};
207
208static constexpr uint8_t PROGMEM INITCMD_ST7796[] = {
209 // This ST7796S initilization routine was copied from https://github.com/prenticedavid/Adafruit_ST7796S_kbv/blob/master/Adafruit_ST7796S_kbv.cpp
210 ILI9XXX_SWRESET, 0x80, // Soft reset, then delay 150 ms
211 ILI9XXX_CSCON, 1, 0xC3, // ?? Unlock Manufacturer
212 ILI9XXX_CSCON, 1, 0x96,
213 ILI9XXX_VMCTR1, 1, 0x1C, //VCOM Control 1 [1C]
214 ILI9XXX_MADCTL, 1, 0x48, //Memory Access [00]
215 ILI9XXX_PIXFMT, 1, 0x55, //565
216 ILI9XXX_IFMODE, 1, 0x80, //Interface [00]
217 ILI9XXX_INVCTR, 1, 0x01, //Inversion Control [01]
218 ILI9XXX_DFUNCTR, 3, 0x80, 0x02, 0x3B, // Display Function Control [80 02 3B] .kbv SS=1, NL=480
219 ILI9XXX_ETMOD, 1, 0xC6, //Entry Mode [06]
220
221 ILI9XXX_CSCON, 1, 0x69, //?? lock manufacturer commands
222 ILI9XXX_CSCON, 1, 0x3C, //
223 ILI9XXX_SLPOUT, 0x80, // Exit Sleep, then delay 150 ms
224 ILI9XXX_DISPON, 0x80, // Main screen turn on, delay 150 ms
225 0x00 // End of list
226};
227
228static constexpr uint8_t PROGMEM INITCMD_S3BOX[] = {
229 0xEF, 3, 0x03, 0x80, 0x02,
230 0xCF, 3, 0x00, 0xC1, 0x30,
231 0xED, 4, 0x64, 0x03, 0x12, 0x81,
232 0xE8, 3, 0x85, 0x00, 0x78,
233 0xCB, 5, 0x39, 0x2C, 0x00, 0x34, 0x02,
234 0xF7, 1, 0x20,
235 0xEA, 2, 0x00, 0x00,
236 ILI9XXX_PWCTR1 , 1, 0x23, // Power control VRH[5:0]
237 ILI9XXX_PWCTR2 , 1, 0x10, // Power control SAP[2:0];BT[3:0]
238 ILI9XXX_VMCTR1 , 2, 0x3e, 0x28, // VCM control
239 ILI9XXX_VMCTR2 , 1, 0x86, // VCM control2
240 ILI9XXX_MADCTL , 1, 0xC8, // Memory Access Control
241 ILI9XXX_VSCRSADD, 1, 0x00, // Vertical scroll zero
242 ILI9XXX_PIXFMT , 1, 0x55,
243 ILI9XXX_FRMCTR1 , 2, 0x00, 0x18,
244 ILI9XXX_DFUNCTR , 3, 0x08, 0x82, 0x27, // Display Function Control
245 0xF2, 1, 0x00, // 3Gamma Function Disable
246 ILI9XXX_GAMMASET , 1, 0x01, // Gamma curve selected
247 ILI9XXX_GMCTRP1 , 15, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, // Set Gamma
248 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03,
249 0x0E, 0x09, 0x00,
250 ILI9XXX_GMCTRN1 , 15, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, // Set Gamma
251 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C,
252 0x31, 0x36, 0x0F,
253 ILI9XXX_SLPOUT , 0x80, // Exit Sleep
254 ILI9XXX_DISPON , 0x80, // Display on
255 0x00 // End of list
256};
257
258static constexpr uint8_t PROGMEM INITCMD_S3BOXLITE[] = {
259 0xEF, 3, 0x03, 0x80, 0x02,
260 0xCF, 3, 0x00, 0xC1, 0x30,
261 0xED, 4, 0x64, 0x03, 0x12, 0x81,
262 0xE8, 3, 0x85, 0x00, 0x78,
263 0xCB, 5, 0x39, 0x2C, 0x00, 0x34, 0x02,
264 0xF7, 1, 0x20,
265 0xEA, 2, 0x00, 0x00,
266 ILI9XXX_PWCTR1 , 1, 0x23, // Power control VRH[5:0]
267 ILI9XXX_PWCTR2 , 1, 0x10, // Power control SAP[2:0];BT[3:0]
268 ILI9XXX_VMCTR1 , 2, 0x3e, 0x28, // VCM control
269 ILI9XXX_VMCTR2 , 1, 0x86, // VCM control2
270 ILI9XXX_MADCTL , 1, 0x40, // Memory Access Control
271 ILI9XXX_VSCRSADD, 1, 0x00, // Vertical scroll zero
272 ILI9XXX_PIXFMT , 1, 0x55,
273 ILI9XXX_FRMCTR1 , 2, 0x00, 0x18,
274 ILI9XXX_DFUNCTR , 3, 0x08, 0x82, 0x27, // Display Function Control
275 0xF2, 1, 0x00, // 3Gamma Function Disable
276 ILI9XXX_GAMMASET , 1, 0x01, // Gamma curve selected
277 ILI9XXX_GMCTRP1 , 14, 0xF0, 0x09, 0x0B, 0x06, 0x04, 0x15, // Set Gamma
278 0x2F, 0x54, 0x42, 0x3C, 0x17, 0x14,
279 0x18, 0x1B,
280 ILI9XXX_GMCTRN1 , 14, 0xE0, 0x09, 0x0B, 0x06, 0x04, 0x03, // Set Gamma
281 0x2B, 0x43, 0x42, 0x3B, 0x16, 0x14,
282 0x17, 0x1B,
283 ILI9XXX_SLPOUT , 0x80, // Exit Sleep
284 ILI9XXX_DISPON , 0x80, // Display on
285 0x00 // End of list
286};
287
288static constexpr uint8_t PROGMEM INITCMD_ST7789V[] = {
289 ILI9XXX_SLPOUT , 0x80, // Exit Sleep
290 ILI9XXX_DISPON , 0x80, // Display on
291 ILI9XXX_MADCTL , 1, 0x08, // Memory Access Control, BGR
292 ILI9XXX_DFUNCTR, 2, 0x0A, 0x82,
293 ILI9XXX_PIXFMT , 1, 0x55,
294 ILI9XXX_FRMCTR2, 5, 0x0C, 0x0C, 0x00, 0x33, 0x33,
295 ILI9XXX_ETMOD, 1, 0x35, 0xBB, 1, 0x28,
296 ILI9XXX_PWCTR1 , 1, 0x0C, // Power control VRH[5:0]
297 ILI9XXX_PWCTR3 , 2, 0x01, 0xFF,
298 ILI9XXX_PWCTR4 , 1, 0x10,
299 ILI9XXX_PWCTR5 , 1, 0x20,
300 ILI9XXX_IFCTR , 1, 0x0F,
301 ILI9XXX_PWSET, 2, 0xA4, 0xA1,
302 ILI9XXX_GMCTRP1 , 14,
303 0xd0, 0x00, 0x02, 0x07, 0x0a,
304 0x28, 0x32, 0x44, 0x42, 0x06, 0x0e,
305 0x12, 0x14, 0x17,
306 ILI9XXX_GMCTRN1 , 14,
307 0xd0, 0x00, 0x02, 0x07, 0x0a,
308 0x28, 0x31, 0x54, 0x47,
309 0x0e, 0x1c, 0x17, 0x1b,
310 0x1e,
311 ILI9XXX_DISPON , 0x80, // Display on
312 0x00 // End of list
313};
314
315static constexpr uint8_t PROGMEM INITCMD_GC9A01A[] = {
316 0xEF, 0,
317 0xEB, 1, 0x14, // ?
318 0xFE, 0,
319 0xEF, 0,
320 0xEB, 1, 0x14, // ?
321 0x84, 1, 0x40, // ?
322 0x85, 1, 0xFF, // ?
323 0x86, 1, 0xFF, // ?
324 0x87, 1, 0xFF, // ?
325 0x88, 1, 0x0A, // ?
326 0x89, 1, 0x21, // ?
327 0x8A, 1, 0x00, // ?
328 0x8B, 1, 0x80, // ?
329 0x8C, 1, 0x01, // ?
330 0x8D, 1, 0x01, // ?
331 0x8E, 1, 0xFF, // ?
332 0x8F, 1, 0xFF, // ?
333 0xB6, 2, 0x00, 0x00, // ?
334 0x90, 4, 0x08, 0x08, 0x08, 0x08, // ?
335 ILI9XXX_PIXFMT , 1, 0x05,
336 ILI9XXX_MADCTL , 1, MADCTL_MX| MADCTL_BGR, // Memory Access Control
337 0xBD, 1, 0x06, // ?
338 0xBC, 1, 0x00, // ?
339 0xFF, 3, 0x60, 0x01, 0x04, // ?
340 0xC3, 1, 0x13,
341 0xC4, 1, 0x13,
342 0xF9, 1, 0x22,
343 0xBE, 1, 0x11, // ?
344 0xE1, 2, 0x10, 0x0E, // ?
345 0xDF, 3, 0x21, 0x0c, 0x02, // ?
346 0xF0, 6, 0x45, 0x09, 0x08, 0x08, 0x26, 0x2A,
347 0xF1, 6, 0x43, 0x70, 0x72, 0x36, 0x37, 0x6F,
348 0xF2, 6, 0x45, 0x09, 0x08, 0x08, 0x26, 0x2A,
349 0xF3, 6, 0x43, 0x70, 0x72, 0x36, 0x37, 0x6F,
350 0xED, 2, 0x1B, 0x0B, // ?
351 0xAE, 1, 0x77, // ?
352 0xCD, 1, 0x63, // ?
353 0xE8, 1, 0x34,
354 0x62, 12, 0x18, 0x0D, 0x71, 0xED, 0x70, 0x70, // ?
355 0x18, 0x0F, 0x71, 0xEF, 0x70, 0x70,
356 0x63, 12, 0x18, 0x11, 0x71, 0xF1, 0x70, 0x70, // ?
357 0x18, 0x13, 0x71, 0xF3, 0x70, 0x70,
358 0x64, 7, 0x28, 0x29, 0xF1, 0x01, 0xF1, 0x00, 0x07, // ?
359 0x66, 10, 0x3C, 0x00, 0xCD, 0x67, 0x45, 0x45, 0x10, 0x00, 0x00, 0x00, // ?
360 0x67, 10, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x54, 0x10, 0x32, 0x98, // ?
361 0x74, 7, 0x10, 0x85, 0x80, 0x00, 0x00, 0x4E, 0x00, // ?
362 0x98, 2, 0x3e, 0x07, // ?
363 0x35, 0,
364 ILI9XXX_SLPOUT , 0x80, // Exit Sleep
365 ILI9XXX_DISPON , 0x80, // Display on
366 0x00 // End of list
367};
368
369static constexpr uint8_t PROGMEM INITCMD_GC9D01N[] = {
370 // Enable Inter_command
371 0xFE, 0, // Inter Register Enable 1 (FEh)
372 0xEF, 0, // Inter Register Enable 2 (EFh)
373 // Inter_command is now enabled
374 0x80, 1, 0xFF,
375 0x81, 1, 0xFF,
376 0x82, 1, 0xFF,
377 0x83, 1, 0xFF,
378 0x84, 1, 0xFF,
379 0x85, 1, 0xFF,
380 0x86, 1, 0xFF,
381 0x87, 1, 0xFF,
382 0x88, 1, 0xFF,
383 0x89, 1, 0xFF,
384 0x8A, 1, 0xFF,
385 0x8B, 1, 0xFF,
386 0x8C, 1, 0xFF,
387 0x8D, 1, 0xFF,
388 0x8E, 1, 0xFF,
389 0x8F, 1, 0xFF,
390 0x3A, 1, 0x05, // COLMOD: Pixel Format Set (3Ah) MCU interface, 16 bits / pixel
391 0xEC, 1, 0x01, // Inversion (ECh) DINV=1+2H1V column for Dual Gate (BFh=0)
392 // According to datasheet Inversion (ECh) value 0x01 isn't valid, but Lilygo uses it everywhere
393 0x74, 7, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
394 0x98, 1, 0x3e,
395 0x99, 1, 0x3e,
396 0xB5, 2, 0x0D, 0x0D, // Blanking Porch Control (B5h) VFP=14 VBP=14 HBP=Off
397 0x60, 4, 0x38, 0x0F, 0x79, 0x67,
398 0x61, 4, 0x38, 0x11, 0x79, 0x67,
399 0x64, 6, 0x38, 0x17, 0x71, 0x5F, 0x79, 0x67,
400 0x65, 6, 0x38, 0x13, 0x71, 0x5B, 0x79, 0x67,
401 0x6A, 2, 0x00, 0x00,
402 0x6C, 7, 0x22, 0x02, 0x22, 0x02, 0x22, 0x22, 0x50,
403 0x6E, 32, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x0F, 0x0F,
404 0x0D, 0x0D, 0x0B, 0x0B, 0x09, 0x09, 0x00, 0x00,
405 0x00, 0x00, 0x0A, 0x0A, 0x0C, 0x0C, 0x0E, 0x0E,
406 0x10, 0x10, 0x00, 0x00, 0x02, 0x02, 0x04, 0x04,
407 0xBF, 1, 0x01, // Dual-Single gate select (BFh) 01h = dual gate mode
408 0xF9, 1, 0x40,
409 0x9B, 5, 0x3B, 0x93, 0x33, 0x7F, 0x00,
410 0x7E, 1, 0x30,
411 0x70, 6, 0x0D, 0x02, 0x08, 0x0D, 0x02, 0x08,
412 0x71, 3, 0x0D, 0x02, 0x08,
413 0x91, 2, 0x0E, 0x09,
414 // Set VREG1A, VREG1B, VREG2A, VREG2B voltage
415 // According to datasheet set either 0xC3/0xC4 or 0xC9 only, but Lilygo sets both of them
416 0xC3, 5, 0x19, 0xC4, 0x19, 0xC9, 0x3C,
417 0xF0, 6, 0x53, 0x15, 0x0A, 0x04, 0x00, 0x3E, // SET_GAMMA1 (F0h)
418 0xF1, 6, 0x56, 0xA8, 0x7F, 0x33, 0x34, 0x5F, // SET_GAMMA2 (F1h)
419 0xF2, 6, 0x53, 0x15, 0x0A, 0x04, 0x00, 0x3A, // SET_GAMMA3 (F2h)
420 0xF3, 6, 0x52, 0xA4, 0x7F, 0x33, 0x34, 0xDF, // SET_GAMMA4 (F3h)
421 ILI9XXX_SLPOUT, 0, // Sleep Out Mode (11h)
422 ILI9XXX_DELAY(10),
423 ILI9XXX_DISPON, 0, // Display ON (29h)
424 ILI9XXX_DELAY(20),
425 0x00 // End of list
426};
427
428static constexpr uint8_t PROGMEM INITCMD_ST7735[] = {
429 ILI9XXX_SWRESET, 0, // Soft reset, then delay 10ms
430 ILI9XXX_DELAY(10),
431 ILI9XXX_SLPOUT , 0, // Exit Sleep, delay
432 ILI9XXX_DELAY(10),
433 ILI9XXX_PIXFMT , 1, 0x05,
434 ILI9XXX_FRMCTR1, 3, // 4: Frame rate control, 3 args + delay:
435 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D)
436 ILI9XXX_FRMCTR2, 3, // 4: Framerate ctrl - idle mode, 3 args:
437 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D)
438 ILI9XXX_FRMCTR3, 6, // 5: Framerate - partial mode, 6 args:
439 0x01, 0x2C, 0x2D, // Dot inversion mode
440 0x01, 0x2C, 0x2D, // Line inversion mode
441
442 ILI9XXX_INVCTR, 1, // 7: Display inversion control, 1 arg:
443 0x7, // Line inversion
444 ILI9XXX_PWCTR1, 3, // 7: Power control, 3 args, no delay:
445 0xA2,
446 0x02, // -4.6V
447 0x84, // AUTO mode
448 ILI9XXX_PWCTR2, 1, // 8: Power control, 1 arg, no delay:
449 0xC5, // VGH25=2.4C VGSEL=-10 VGH=3 * AVDD
450 ILI9XXX_PWCTR3, 2, // 9: Power control, 2 args, no delay:
451 0x0A, // Opamp current small
452 0x00, // Boost frequency
453 ILI9XXX_PWCTR4, 2, // 10: Power control, 2 args, no delay:
454 0x8A, // BCLK/2,
455 0x2A, // opamp current small & medium low
456 ILI9XXX_PWCTR5, 2, // 11: Power control, 2 args, no delay:
457 0x8A, 0xEE,
458
459 ILI9XXX_VMCTR1, 1, // 11: Power control, 2 args + delay:
460 0x0E,
461 ILI9XXX_GMCTRP1, 16, // 13: Gamma Adjustments (pos. polarity), 16 args + delay:
462 0x02, 0x1c, 0x07, 0x12, // (Not entirely necessary, but provides
463 0x37, 0x32, 0x29, 0x2d, // accurate colors)
464 0x29, 0x25, 0x2B, 0x39,
465 0x00, 0x01, 0x03, 0x10,
466 ILI9XXX_GMCTRN1, 16, // 14: Gamma Adjustments (neg. polarity), 16 args + delay:
467 0x03, 0x1d, 0x07, 0x06, // (Not entirely necessary, but provides
468 0x2E, 0x2C, 0x29, 0x2D, // accurate colors)
469 0x2E, 0x2E, 0x37, 0x3F,
470 0x00, 0x00, 0x02, 0x10,
471 ILI9XXX_MADCTL , 1, 0x00, // Memory Access Control, BGR
472 ILI9XXX_NORON , 0,
473 ILI9XXX_DELAY(10),
474 ILI9XXX_DISPON , 0, // Display on
475 ILI9XXX_DELAY(10),
476 00, // endo of list
477};
478
479// clang-format on
480} // namespace esphome::ili9xxx
const uint8_t MADCTL_MV
Definition mipi_dsi.h:34
const uint8_t MADCTL_MX
Definition mipi_dsi.h:32
const uint8_t MADCTL_BGR
Definition mipi_dsi.h:31
const uint8_t ESPHOME_WEBSERVER_INDEX_HTML[] PROGMEM
Definition web_server.h:28