Skip to content

Commit 97755b8

Browse files
committed
fix(examples): fix LCD using 'configVendorCommands' before 'init'
1 parent 2aa264d commit 97755b8

File tree

6 files changed

+133
-110
lines changed

6 files changed

+133
-110
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* fix(examples): fix `LVGL_PORT_ROTATION_DEGREE` issue by @lboue (#76)
88
* fix(examples): fix issue with I2C.ino EXAMPLE_TOUCH_ADDRESS missing as variable by @lboue (#84)
99
* fix(examples): fix WiFiClock wrong name `ScreenPassord` by @lboue (#82)
10+
* fix(examples): fix LCD using 'configVendorCommands' before 'init'
1011
* fix(gt911): allow to set the GT911 touch device address by @lboue (#86)
1112

1213
## v0.1.5 - 2024-07-09

examples/LCD/3wireSPI_RGB/3wireSPI_RGB.ino

Lines changed: 57 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,21 @@
5151
* - GC9503
5252
* - ST7701
5353
*/
54-
#define EXAMPLE_LCD_NAME ST7701
55-
#define EXAMPLE_LCD_WIDTH (480)
56-
#define EXAMPLE_LCD_HEIGHT (480)
57-
#define EXAMPLE_LCD_COLOR_BITS (18)
58-
#define EXAMPLE_LCD_RGB_DATA_WIDTH (16)
59-
#define EXAMPLE_LCD_RGB_TIMING_FREQ_HZ (16 * 1000 * 1000)
60-
#define EXAMPLE_LCD_RGB_TIMING_HPW (10)
61-
#define EXAMPLE_LCD_RGB_TIMING_HBP (10)
62-
#define EXAMPLE_LCD_RGB_TIMING_HFP (20)
63-
#define EXAMPLE_LCD_RGB_TIMING_VPW (10)
64-
#define EXAMPLE_LCD_RGB_TIMING_VBP (10)
65-
#define EXAMPLE_LCD_RGB_TIMING_VFP (10)
54+
#define EXAMPLE_LCD_NAME ST7701
55+
#define EXAMPLE_LCD_WIDTH (480)
56+
#define EXAMPLE_LCD_HEIGHT (480)
57+
// | 8-bit RGB888 | 16-bit RGB565 |
58+
#define EXAMPLE_LCD_COLOR_BITS (18) // | 24 | 16/18/24 |
59+
#define EXAMPLE_LCD_RGB_DATA_WIDTH (16) // | 8 | 16 |
60+
#define EXAMPLE_LCD_RGB_TIMING_FREQ_HZ (16 * 1000 * 1000)
61+
#define EXAMPLE_LCD_RGB_TIMING_HPW (10)
62+
#define EXAMPLE_LCD_RGB_TIMING_HBP (10)
63+
#define EXAMPLE_LCD_RGB_TIMING_HFP (20)
64+
#define EXAMPLE_LCD_RGB_TIMING_VPW (10)
65+
#define EXAMPLE_LCD_RGB_TIMING_VBP (10)
66+
#define EXAMPLE_LCD_RGB_TIMING_VFP (10)
67+
#define EXAMPLE_LCD_USE_EXTERNAL_CMD (0)
68+
#if EXAMPLE_LCD_USE_EXTERNAL_CMD
6669
/**
6770
* LCD initialization commands.
6871
*
@@ -77,17 +80,18 @@
7780
* 2. Formater: ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(delay_ms, command, { data0, data1, ... }) and
7881
* ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(delay_ms, command)
7982
*/
80-
// const esp_lcd_panel_vendor_init_cmd_t lcd_init_cmd[] = {
81-
// {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x10}, 5, 0},
82-
// {0xC0, (uint8_t []){0x3B, 0x00}, 2, 0},
83-
// {0xC1, (uint8_t []){0x0D, 0x02}, 2, 0},
84-
// {0x29, (uint8_t []){0x00}, 0, 120},
85-
// // or
86-
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xFF, {0x77, 0x01, 0x00, 0x00, 0x10}),
87-
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC0, {0x3B, 0x00}),
88-
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC1, {0x0D, 0x02}),
89-
// ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(120, 0x29),
90-
// };
83+
const esp_lcd_panel_vendor_init_cmd_t lcd_init_cmd[] = {
84+
// {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x10}, 5, 0},
85+
// {0xC0, (uint8_t []){0x3B, 0x00}, 2, 0},
86+
// {0xC1, (uint8_t []){0x0D, 0x02}, 2, 0},
87+
// {0x29, (uint8_t []){0x00}, 0, 120},
88+
// // or
89+
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xFF, {0x77, 0x01, 0x00, 0x00, 0x10}),
90+
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC0, {0x3B, 0x00}),
91+
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC1, {0x0D, 0x02}),
92+
// ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(120, 0x29),
93+
};
94+
#endif
9195

9296
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
9397
//////////////////// Please update the following configuration according to your board spec ////////////////////////////
@@ -97,29 +101,31 @@
97101
#define EXAMPLE_LCD_PIN_NUM_RGB_HSYNC (16)
98102
#define EXAMPLE_LCD_PIN_NUM_RGB_DE (18)
99103
#define EXAMPLE_LCD_PIN_NUM_RGB_PCLK (21)
100-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA0 (4)
101-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA1 (5)
102-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA2 (6)
103-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA3 (7)
104-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA4 (15)
105-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA5 (8)
106-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA6 (20)
107-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA7 (3)
104+
// | RGB565 | RGB666 | RGB888 |
105+
// |--------|--------|--------|
106+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA0 (4) // | B0 | B0-1 | B0-3 |
107+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA1 (5) // | B1 | B2 | B4 |
108+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA2 (6) // | B2 | B3 | B5 |
109+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA3 (7) // | B3 | B4 | B6 |
110+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA4 (15) // | B4 | B5 | B7 |
111+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA5 (8) // | G0 | G0 | G0-2 |
112+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA6 (20) // | G1 | G1 | G3 |
113+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA7 (3) // | G2 | G2 | G4 |
108114
#if EXAMPLE_LCD_RGB_DATA_WIDTH > 8
109-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA8 (46)
110-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA9 (9)
111-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA10 (10)
112-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA11 (11)
113-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA12 (12)
114-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA13 (13)
115-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA14 (14)
116-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA15 (0)
115+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA8 (46) // | G3 | G3 | G5 |
116+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA9 (9) // | G4 | G4 | G6 |
117+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA10 (10) // | G5 | G5 | G7 |
118+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA11 (11) // | R0 | R0-1 | R0-3 |
119+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA12 (12) // | R1 | R2 | R4 |
120+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA13 (13) // | R2 | R3 | R5 |
121+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA14 (14) // | R3 | R4 | R6 |
122+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA15 (0) // | R4 | R5 | R7 |
117123
#endif
118124
#define EXAMPLE_LCD_PIN_NUM_SPI_CS (39)
119125
#define EXAMPLE_LCD_PIN_NUM_SPI_SCK (48)
120126
#define EXAMPLE_LCD_PIN_NUM_SPI_SDA (47)
121-
#define EXAMPLE_LCD_PIN_NUM_RST (-1)
122-
#define EXAMPLE_LCD_PIN_NUM_BK_LIGHT (38)
127+
#define EXAMPLE_LCD_PIN_NUM_RST (-1) // Set to -1 if not used
128+
#define EXAMPLE_LCD_PIN_NUM_BK_LIGHT (38) // Set to -1 if not used
123129
#define EXAMPLE_LCD_BK_LIGHT_ON_LEVEL (1)
124130
#define EXAMPLE_LCD_BK_LIGHT_OFF_LEVEL !EXAMPLE_LCD_BK_LIGHT_ON_LEVEL
125131

@@ -132,15 +138,15 @@
132138
#if EXAMPLE_ENABLE_PRINT_LCD_FPS
133139
#define EXAMPLE_LCD_FPS_COUNT_MAX (100)
134140

135-
DRAM_ATTR int frame_count = 0;
136141
DRAM_ATTR int fps = 0;
137-
DRAM_ATTR long start_time = 0;
138142

139143
IRAM_ATTR bool onVsyncEndCallback(void *user_data)
140144
{
141-
long frame_start_time = *(long *)user_data;
145+
DRAM_ATTR static int frame_count = 0;
146+
DRAM_ATTR static long frame_start_time = 0;
147+
142148
if (frame_start_time == 0) {
143-
(*(long *)user_data) = millis();
149+
frame_start_time = millis();
144150

145151
return false;
146152
}
@@ -149,7 +155,7 @@ IRAM_ATTR bool onVsyncEndCallback(void *user_data)
149155
if (frame_count >= EXAMPLE_LCD_FPS_COUNT_MAX) {
150156
fps = EXAMPLE_LCD_FPS_COUNT_MAX * 1000 / (millis() - frame_start_time);
151157
frame_count = 0;
152-
(*(long *)user_data) = millis();
158+
frame_start_time = millis();
153159
}
154160

155161
return false;
@@ -204,13 +210,16 @@ void setup()
204210

205211
Serial.println("Create LCD device");
206212
ESP_PanelLcd *lcd = new EXAMPLE_LCD_CLASS(EXAMPLE_LCD_NAME, lcd_bus, EXAMPLE_LCD_COLOR_BITS, EXAMPLE_LCD_PIN_NUM_RST);
207-
// lcd->configVendorCommands(lcd_init_cmd, sizeof(lcd_init_cmd)/sizeof(lcd_init_cmd[0]));
213+
#if EXAMPLE_LCD_USE_EXTERNAL_CMD
214+
// Configure external initialization commands, should called before `init()`
215+
lcd->configVendorCommands(lcd_init_cmd, sizeof(lcd_init_cmd)/sizeof(lcd_init_cmd[0]));
216+
#endif
208217
lcd->init();
209218
lcd->reset();
210219
lcd->begin();
211220
lcd->displayOn();
212221
#if EXAMPLE_ENABLE_PRINT_LCD_FPS
213-
lcd->attachRefreshFinishCallback(onVsyncEndCallback, (void *)&start_time);
222+
lcd->attachRefreshFinishCallback(onVsyncEndCallback, nullptr);
214223
#endif
215224

216225
Serial.println("Draw color bar from top left to bottom right, the order is B - G - R");

examples/LCD/QSPI/QSPI.ino

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@
7171
#define EXAMPLE_LCD_HEIGHT (300)
7272
#define EXAMPLE_LCD_COLOR_BITS (16)
7373
#define EXAMPLE_LCD_SPI_FREQ_HZ (40 * 1000 * 1000)
74+
#define EXAMPLE_LCD_USE_EXTERNAL_CMD (0)
75+
#if EXAMPLE_LCD_USE_EXTERNAL_CMD
7476
/**
7577
* LCD initialization commands.
7678
*
@@ -85,17 +87,18 @@
8587
* 2. Formater: ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(delay_ms, command, { data0, data1, ... }) and
8688
* ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(delay_ms, command)
8789
*/
88-
// const esp_lcd_panel_vendor_init_cmd_t lcd_init_cmd[] = {
89-
// {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x10}, 5, 0},
90-
// {0xC0, (uint8_t []){0x3B, 0x00}, 2, 0},
91-
// {0xC1, (uint8_t []){0x0D, 0x02}, 2, 0},
92-
// {0x29, (uint8_t []){0x00}, 0, 120},
93-
// // or
94-
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xFF, {0x77, 0x01, 0x00, 0x00, 0x10}),
95-
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC0, {0x3B, 0x00}),
96-
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC1, {0x0D, 0x02}),
97-
// ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(120, 0x29),
98-
// };
90+
const esp_lcd_panel_vendor_init_cmd_t lcd_init_cmd[] = {
91+
// {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x10}, 5, 0},
92+
// {0xC0, (uint8_t []){0x3B, 0x00}, 2, 0},
93+
// {0xC1, (uint8_t []){0x0D, 0x02}, 2, 0},
94+
// {0x29, (uint8_t []){0x00}, 0, 120},
95+
// // or
96+
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xFF, {0x77, 0x01, 0x00, 0x00, 0x10}),
97+
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC0, {0x3B, 0x00}),
98+
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC1, {0x0D, 0x02}),
99+
// ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(120, 0x29),
100+
};
101+
#endif
99102

100103
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
101104
//////////////////// Please update the following configuration according to your board spec ////////////////////////////
@@ -106,10 +109,9 @@
106109
#define EXAMPLE_LCD_PIN_NUM_SPI_DATA1 (12)
107110
#define EXAMPLE_LCD_PIN_NUM_SPI_DATA2 (13)
108111
#define EXAMPLE_LCD_PIN_NUM_SPI_DATA3 (14)
109-
#define EXAMPLE_LCD_PIN_NUM_RST (3)
110-
#define EXAMPLE_LCD_PIN_NUM_BK_LIGHT (-1)
112+
#define EXAMPLE_LCD_PIN_NUM_RST (3) // Set to -1 if not used
113+
#define EXAMPLE_LCD_PIN_NUM_BK_LIGHT (-1) // Set to -1 if not used
111114
#define EXAMPLE_LCD_BK_LIGHT_ON_LEVEL (1)
112-
113115
#define EXAMPLE_LCD_BK_LIGHT_OFF_LEVEL !EXAMPLE_LCD_BK_LIGHT_ON_LEVEL
114116

115117
/* Enable or disable the attachment of a callback function that is called after each bitmap drawing is completed */
@@ -148,9 +150,12 @@ void setup()
148150

149151
Serial.println("Create LCD device");
150152
ESP_PanelLcd *lcd = new EXAMPLE_LCD_CLASS(EXAMPLE_LCD_NAME, panel_bus, EXAMPLE_LCD_COLOR_BITS, EXAMPLE_LCD_PIN_NUM_RST);
153+
#if EXAMPLE_LCD_USE_EXTERNAL_CMD
154+
// Configure external initialization commands, should called before `init()`
155+
lcd->configVendorCommands(lcd_init_cmd, sizeof(lcd_init_cmd)/sizeof(lcd_init_cmd[0]));
156+
#endif
151157
lcd->init();
152158
lcd->reset();
153-
// lcd->configVendorCommands(lcd_init_cmd, sizeof(lcd_init_cmd)/sizeof(lcd_init_cmd[0]));
154159
lcd->begin();
155160
lcd->displayOn();
156161
#if EXAMPLE_ENABLE_ATTACH_CALLBACK

examples/LCD/RGB/RGB.ino

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,19 @@
4848
* Currently, the library supports the following RGB (without 3-wire SPI) LCDs:
4949
* - ST7262
5050
*/
51-
#define EXAMPLE_LCD_NAME ST7262
52-
#define EXAMPLE_LCD_WIDTH (800)
53-
#define EXAMPLE_LCD_HEIGHT (480)
54-
#define EXAMPLE_LCD_COLOR_BITS (24)
55-
#define EXAMPLE_LCD_RGB_DATA_WIDTH (16)
56-
#define EXAMPLE_LCD_RGB_TIMING_FREQ_HZ (16 * 1000 * 1000)
57-
#define EXAMPLE_LCD_RGB_TIMING_HPW (40)
58-
#define EXAMPLE_LCD_RGB_TIMING_HBP (40)
59-
#define EXAMPLE_LCD_RGB_TIMING_HFP (48)
60-
#define EXAMPLE_LCD_RGB_TIMING_VPW (23)
61-
#define EXAMPLE_LCD_RGB_TIMING_VBP (32)
62-
#define EXAMPLE_LCD_RGB_TIMING_VFP (13)
51+
#define EXAMPLE_LCD_NAME ST7262
52+
#define EXAMPLE_LCD_WIDTH (800)
53+
#define EXAMPLE_LCD_HEIGHT (480)
54+
// | 8-bit RGB888 | 16-bit RGB565 |
55+
#define EXAMPLE_LCD_COLOR_BITS (18) // | 24 | 16/18/24 |
56+
#define EXAMPLE_LCD_RGB_DATA_WIDTH (16) // | 8 | 16 |
57+
#define EXAMPLE_LCD_RGB_TIMING_FREQ_HZ (16 * 1000 * 1000)
58+
#define EXAMPLE_LCD_RGB_TIMING_HPW (40)
59+
#define EXAMPLE_LCD_RGB_TIMING_HBP (40)
60+
#define EXAMPLE_LCD_RGB_TIMING_HFP (48)
61+
#define EXAMPLE_LCD_RGB_TIMING_VPW (23)
62+
#define EXAMPLE_LCD_RGB_TIMING_VBP (32)
63+
#define EXAMPLE_LCD_RGB_TIMING_VFP (13)
6364

6465
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
6566
//////////////////// Please update the following configuration according to your board spec ////////////////////////////
@@ -69,28 +70,29 @@
6970
#define EXAMPLE_LCD_PIN_NUM_RGB_HSYNC (46)
7071
#define EXAMPLE_LCD_PIN_NUM_RGB_DE (17)
7172
#define EXAMPLE_LCD_PIN_NUM_RGB_PCLK (9)
72-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA0 (10)
73-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA1 (11)
74-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA2 (12)
75-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA3 (13)
76-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA4 (14)
77-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA5 (21)
78-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA6 (47)
79-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA7 (48)
73+
// | RGB565 | RGB666 | RGB888 |
74+
// |--------|--------|--------|
75+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA0 (10) // | B0 | B0-1 | B0-3 |
76+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA1 (11) // | B1 | B2 | B4 |
77+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA2 (12) // | B2 | B3 | B5 |
78+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA3 (13) // | B3 | B4 | B6 |
79+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA4 (14) // | B4 | B5 | B7 |
80+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA5 (21) // | G0 | G0 | G0-2 |
81+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA6 (47) // | G1 | G1 | G3 |
82+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA7 (48) // | G2 | G2 | G4 |
8083
#if EXAMPLE_LCD_RGB_DATA_WIDTH > 8
81-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA8 (45)
82-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA9 (38)
83-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA10 (39)
84-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA11 (40)
85-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA12 (41)
86-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA13 (42)
87-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA14 (2)
88-
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA15 (1)
84+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA8 (45) // | G3 | G3 | G5 |
85+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA9 (38) // | G4 | G4 | G6 |
86+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA10 (39) // | G5 | G5 | G7 |
87+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA11 (40) // | R0 | R0-1 | R0-3 |
88+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA12 (41) // | R1 | R2 | R4 |
89+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA13 (42) // | R2 | R3 | R5 |
90+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA14 (2) // | R3 | R4 | R6 |
91+
#define EXAMPLE_LCD_PIN_NUM_RGB_DATA15 (1) // | R4 | R5 | R7 |
8992
#endif
90-
#define EXAMPLE_LCD_PIN_NUM_RST (-1)
91-
#define EXAMPLE_LCD_PIN_NUM_BK_LIGHT (-1)
93+
#define EXAMPLE_LCD_PIN_NUM_RST (-1) // Set to -1 if not used
94+
#define EXAMPLE_LCD_PIN_NUM_BK_LIGHT (-1) // Set to -1 if not used
9295
#define EXAMPLE_LCD_BK_LIGHT_ON_LEVEL (1)
93-
9496
#define EXAMPLE_LCD_BK_LIGHT_OFF_LEVEL !EXAMPLE_LCD_BK_LIGHT_ON_LEVEL
9597

9698
/* Enable or disable printing RGB refresh rate */

examples/LCD/SPI/SPI.ino

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@
7373
#define EXAMPLE_LCD_HEIGHT (240)
7474
#define EXAMPLE_LCD_COLOR_BITS (16)
7575
#define EXAMPLE_LCD_SPI_FREQ_HZ (40 * 1000 * 1000)
76+
#define EXAMPLE_LCD_USE_EXTERNAL_CMD (0)
77+
#if EXAMPLE_LCD_USE_EXTERNAL_CMD
7678
/**
7779
* LCD initialization commands.
7880
*
@@ -87,17 +89,18 @@
8789
* 2. Formater: ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(delay_ms, command, { data0, data1, ... }) and
8890
* ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(delay_ms, command)
8991
*/
90-
// const esp_lcd_panel_vendor_init_cmd_t lcd_init_cmd[] = {
91-
// {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x10}, 5, 0},
92-
// {0xC0, (uint8_t []){0x3B, 0x00}, 2, 0},
93-
// {0xC1, (uint8_t []){0x0D, 0x02}, 2, 0},
94-
// {0x29, (uint8_t []){0x00}, 0, 120},
95-
// // or
96-
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xFF, {0x77, 0x01, 0x00, 0x00, 0x10}),
97-
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC0, {0x3B, 0x00}),
98-
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC1, {0x0D, 0x02}),
99-
// ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(120, 0x29),
100-
// };
92+
const esp_lcd_panel_vendor_init_cmd_t lcd_init_cmd[] = {
93+
// {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x10}, 5, 0},
94+
// {0xC0, (uint8_t []){0x3B, 0x00}, 2, 0},
95+
// {0xC1, (uint8_t []){0x0D, 0x02}, 2, 0},
96+
// {0x29, (uint8_t []){0x00}, 0, 120},
97+
// // or
98+
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xFF, {0x77, 0x01, 0x00, 0x00, 0x10}),
99+
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC0, {0x3B, 0x00}),
100+
// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC1, {0x0D, 0x02}),
101+
// ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(120, 0x29),
102+
};
103+
#endif
101104

102105
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
103106
//////////////////// Please update the following configuration according to your board spec ////////////////////////////
@@ -107,8 +110,8 @@
107110
#define EXAMPLE_LCD_PIN_NUM_SPI_SCK (7)
108111
#define EXAMPLE_LCD_PIN_NUM_SPI_SDA (6)
109112
#define EXAMPLE_LCD_PIN_NUM_SPI_SDO (-1)
110-
#define EXAMPLE_LCD_PIN_NUM_RST (-1)
111-
#define EXAMPLE_LCD_PIN_NUM_BK_LIGHT (45)
113+
#define EXAMPLE_LCD_PIN_NUM_RST (-1) // Set to -1 if not used
114+
#define EXAMPLE_LCD_PIN_NUM_BK_LIGHT (45) // Set to -1 if not used
112115
#define EXAMPLE_LCD_BK_LIGHT_ON_LEVEL (1)
113116

114117
#define EXAMPLE_LCD_BK_LIGHT_OFF_LEVEL !EXAMPLE_LCD_BK_LIGHT_ON_LEVEL
@@ -149,9 +152,12 @@ void setup()
149152

150153
Serial.println("Create LCD device");
151154
ESP_PanelLcd *lcd = new EXAMPLE_LCD_CLASS(EXAMPLE_LCD_NAME, panel_bus, EXAMPLE_LCD_COLOR_BITS, EXAMPLE_LCD_PIN_NUM_RST);
155+
#if EXAMPLE_LCD_USE_EXTERNAL_CMD
156+
// Configure external initialization commands, should called before `init()`
157+
lcd->configVendorCommands(lcd_init_cmd, sizeof(lcd_init_cmd)/sizeof(lcd_init_cmd[0]));
158+
#endif
152159
lcd->init();
153160
lcd->reset();
154-
// lcd->configVendorCommands(lcd_init_cmd, sizeof(lcd_init_cmd)/sizeof(lcd_init_cmd[0]));
155161
lcd->begin();
156162
lcd->displayOn();
157163
#if EXAMPLE_ENABLE_ATTACH_CALLBACK

src/lcd/ESP_PanelLcd.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,14 +276,14 @@ bool ESP_PanelLcd::invertColor(bool en)
276276

277277
bool ESP_PanelLcd::displayOn(void)
278278
{
279-
ESP_PANEL_CHECK_ERR_RET(esp_lcd_panel_disp_off(handle, false), false, "Display on failed");
279+
ESP_PANEL_CHECK_ERR_RET(esp_lcd_panel_disp_on_off(handle, true), false, "Display on failed");
280280

281281
return true;
282282
}
283283

284284
bool ESP_PanelLcd::displayOff(void)
285285
{
286-
ESP_PANEL_CHECK_ERR_RET(esp_lcd_panel_disp_off(handle, true), false, "Display off failed");
286+
ESP_PANEL_CHECK_ERR_RET(esp_lcd_panel_disp_on_off(handle, false), false, "Display off failed");
287287

288288
return true;
289289
}

0 commit comments

Comments
 (0)