Skip to content

Commit 13bbe76

Browse files
authored
Merge pull request #89 from esp-arduino-libs/bugfix/fix_LVGL_PORT_ROTATION_DEGREE_issue
fix(examples): fix `LVGL_PORT_ROTATION_DEGREE` issue
2 parents c747dbe + ff4105c commit 13bbe76

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+282
-222
lines changed

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
# ChangeLog
22

3+
## v0.1.6 - 2024-07-30
4+
5+
### Enhancements:
6+
7+
* feat(board): add support for Fitipower EK9716B LCD controller for CrowPanel 7.0" board by @lboue (#78)
8+
9+
### Bugfixes:
10+
11+
* fix(examples): fix `LVGL_PORT_ROTATION_DEGREE` issue by @lboue (#76)
12+
* fix(examples): fix issue with I2C.ino `EXAMPLE_TOUCH_ADDRESS` missing as variable by @lboue (#84)
13+
* fix(examples): fix WiFiClock wrong name `ScreenPassord` by @lboue (#82)
14+
* fix(examples): fix LCD using `configVendorCommands()` before `init()`
15+
* fix(examples): fix `LV_USE_DEMO_WIDGETS` typo by @lboue (#98)
16+
* fix(examples): fix `Tearing fucntion` typo by @lboue (#96)
17+
* fix(examples): fix WiFiClock log HTTP error code to serial console by @lboue (#97)
18+
* fix(gt911): allow to set the GT911 touch device address by @lboue (#86)
19+
* fix(conf): fix the issue that the `ESP_PANEL_EXPANDER_HOST_ID` flag is not working properly
20+
* fix(conf): fix `LCD Venbdor` typo (#92)
21+
322
## v0.1.5 - 2024-07-09
423

524
### Enhancements:

ESP_Panel_Board_Custom.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#if ESP_PANEL_USE_LCD
2323
/**
2424
* LCD Controller Name. Choose one of the following:
25+
* - EK9716B
2526
* - GC9A01, GC9B71, GC9503
2627
* - ILI9341
2728
* - NV3022B
@@ -164,7 +165,7 @@
164165
#endif /* ESP_PANEL_LCD_BUS_TYPE */
165166

166167
/**
167-
* LCD Venbdor Initialization Commands.
168+
* LCD Vendor Initialization Commands.
168169
*
169170
* Vendor specific initialization can be different between manufacturers, should consult the LCD supplier for
170171
* initialization sequence code. Please uncomment and change the following macro definitions. Otherwise, the LCD driver
@@ -247,8 +248,11 @@
247248
/* Touch panel bus parameters */
248249
#if ESP_PANEL_TOUCH_BUS_TYPE == ESP_PANEL_BUS_TYPE_I2C
249250

250-
#define ESP_PANEL_TOUCH_BUS_HOST_ID (0) // Typically set to 0 to use the default address
251-
#define ESP_PANEL_TOUCH_I2C_ADDRESS (0) // For GT911, there are two addresses: 0x5D(default) and 0x14
251+
#define ESP_PANEL_TOUCH_BUS_HOST_ID (0) // Typically set to 0
252+
#define ESP_PANEL_TOUCH_I2C_ADDRESS (0) // Typically set to 0 to use the default address.
253+
// - For touchs with only one address, set to 0
254+
// - For touchs with multiple addresses, set to 0 or the address
255+
// Like GT911, there are two addresses: 0x5D(default) and 0x14
252256
#if !ESP_PANEL_TOUCH_BUS_SKIP_INIT_HOST
253257
#define ESP_PANEL_TOUCH_I2C_CLK_HZ (400 * 1000)
254258
// Typically set to 400K
@@ -331,11 +335,11 @@
331335
*/
332336
#define ESP_PANEL_EXPANDER_SKIP_INIT_HOST (0) // 0/1
333337
/* IO expander parameters */
338+
#define ESP_PANEL_EXPANDER_HOST_ID (0) // Typically set to 0
334339
#define ESP_PANEL_EXPANDER_I2C_ADDRESS (0x20) // The actual I2C address. Even for the same model of IC,
335340
// the I2C address may be different, and confirmation based on
336341
// the actual hardware connection is required
337342
#if !ESP_PANEL_EXPANDER_SKIP_INIT_HOST
338-
#define ESP_PANEL_EXPANDER_HOST_ID (0) // Typically set to 0
339343
#define ESP_PANEL_EXPANDER_I2C_CLK_HZ (400 * 1000)
340344
// Typically set to 400K
341345
#define ESP_PANEL_EXPANDER_I2C_SCL_PULLUP (1) // 0/1
@@ -371,8 +375,8 @@
371375
*
372376
*/
373377
#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_MAJOR 0
374-
#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_MINOR 1
375-
#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_PATCH 3
378+
#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_MINOR 2
379+
#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_PATCH 1
376380

377381
#endif /* ESP_PANEL_USE_CUSTOM_BOARD */
378382

README_CN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ ESP32_Display_Panel 会根据 [ESP_Panel_Board_Custom.h](./ESP_Panel_Board_Custo
207207
#endif /* ESP_PANEL_LCD_BUS_TYPE */
208208
...
209209
/**
210-
* LCD Venbdor Initialization Commands.
210+
* LCD Vendor Initialization Commands.
211211
*
212212
* Vendor specific initialization can be different between manufacturers, should consult the LCD supplier for
213213
* initialization sequence code. Please uncomment and change the following macro definitions. Otherwise, the LCD driver

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/README.md

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
| Supported ESP SoCs |
2-
| ------------------ |
3-
| ESP32-S3 |
4-
5-
| Supported LCD Controllers |
6-
| ------------------------- |
7-
| EK9716B |
8-
| ST7262 |
1+
| Supported ESP SoCs | ESP32-S3 |
2+
| ------------------ | -------- |
93

4+
| Supported LCD Controllers | EK9716B | ST7262 |
5+
| ------------------------- | ------- | ------ |
106

117
# Single RGB LCD Example
128

0 commit comments

Comments
 (0)