diff --git a/README.md b/README.md
index 73cd1b16..377a225c 100644
--- a/README.md
+++ b/README.md
@@ -57,7 +57,7 @@ The functional block diagram is shown below:
| [M5Stack](./docs/board/board_m5stack.md) | M5STACK-M5CORE2, M5STACK-M5DIAL, M5STACK-M5CORES3 |
| [Elecrow](./docs/board/board_elecrow.md) | CrowPanel 7.0" |
| [Jingcai](./docs/board/board_jingcai.md) | ESP32-4848S040C_I_Y_3 |
-| [Waveshare](./docs/board/board_waveshare.md) | ESP32-S3-Touch-LCD-1.85, ESP32-S3-Touch-LCD-2.1, ESP32-S3-Touch-LCD-4.3, ESP32-S3-Touch-LCD-4.3B, ESP32-S3-Touch-LCD-5, ESP32-S3-Touch-LCD-5B, ESP32-S3-Touch-LCD-7, ESP32-P4-NANO |
+| [Waveshare](./docs/board/board_waveshare.md) | ESP32-S3-Touch-LCD-1.85, ESP32-S3-Touch-LCD-2.1, ESP32-S3-Touch-LCD-2.8C, ESP32-S3-Touch-LCD-4.3, ESP32-S3-Touch-LCD-4.3B, ESP32-S3-Touch-LCD-5, ESP32-S3-Touch-LCD-5B, ESP32-S3-Touch-LCD-7, ESP32-P4-NANO |
| [VIEWE](./docs/board/board_viewe.md) | UEDX24320024E-WB-A, UEDX24320028E-WB-A, UEDX24320035E-WB-A, UEDX32480035E-WB-A, UEDX48270043E-WB-A, UEDX48480040E-WB-A, UEDX80480043E-WB-A, UEDX80480050E-WB-A, UEDX80480070E-WB-A |
📌 Click on the manufacturer name for detailed information.
diff --git a/docs/board/board_waveshare.md b/docs/board/board_waveshare.md
index 2f7e23f6..d84d1a64 100644
--- a/docs/board/board_waveshare.md
+++ b/docs/board/board_waveshare.md
@@ -6,6 +6,7 @@
| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------: | :--------------: | :----------------: | ------------------ | :-----------: | :------------------: |
|
| [ESP32-S3-Touch-LCD-1.85](https://www.waveshare.com/esp32-s3-touch-lcd-1.85.htm) | QSPI | ST77916 | 360x360 | I2C | CST816 |
|
| [ESP32-S3-Touch-LCD-2.1](https://www.waveshare.com/esp32-s3-touch-lcd-2.1.htm) | RGB | ST7701 | 480x480 | I2C | CST820 (CST816-like) |
+|
| [ESP32-S3-Touch-LCD-2.8C](https://www.waveshare.com/esp32-s3-touch-lcd-2.8c.htm) | RGB | ST7701 | 480x480 | I2C | GT911 |
|
| [ESP32-S3-Touch-LCD-4.3](https://www.waveshare.com/esp32-s3-touch-lcd-4.3.htm) | RGB | ST7262 | 800x480 | I2C | GT911 |
|
| [ESP32-S3-Touch-LCD-4.3B](https://www.waveshare.com/esp32-s3-touch-lcd-4.3B.htm) | RGB | ST7262 | 800x480 | I2C | GT911 |
|
| [ESP32-S3-Touch-LCD-5](https://www.waveshare.com/esp32-s3-touch-lcd-5.htm?sku=28117) | RGB | ST7262 | 800x480 | I2C | GT911 |
@@ -25,6 +26,7 @@ These settings can be adjusted according to specific requirements, and users can
|:---------------------------------:|:------------------:|:--------:|:----------:|:----------:|:---------------:|:-----------------------:|
| Waveshare-ESP32-S3-Touch-LCD-1.85 | ESP32S3 Dev Module | OPI | QIO 80MHz | 16MB | Enabled | 16M Flash (3MB) |
| Waveshare-ESP32-S3-Touch-LCD-2.1 | ESP32S3 Dev Module | OPI | QIO 80MHz | 16MB | Enabled | 16M Flash (3MB) |
+| Waveshare-ESP32-S3-Touch-LCD-2.8C | ESP32S3 Dev Module | OPI | QIO 80MHz | 16MB | Enabled | 16M Flash (3MB) |
| Waveshare-ESP32-S3-Touch-LCD-4.3 | ESP32S3 Dev Module | OPI | QIO 80MHz | 8MB | Disabled | 8M with spiffs |
| Waveshare-ESP32-S3-Touch-LCD-4.3B | ESP32S3 Dev Module | OPI | QIO 80MHz | 16MB | Enabled | 16M Flash (3MB) |
| Waveshare-ESP32-S3-Touch-LCD-5 | ESP32S3 Dev Module | OPI | QIO 80MHz | 16MB | Enabled | 16M Flash (3MB) |
diff --git a/docs/envs/use_with_idf.md b/docs/envs/use_with_idf.md
index 6bdf9d05..727a9838 100644
--- a/docs/envs/use_with_idf.md
+++ b/docs/envs/use_with_idf.md
@@ -9,6 +9,7 @@
- [SDK \& Dependencies](#sdk--dependencies)
- [Adding to Project](#adding-to-project)
- [Configuration Guide](#configuration-guide)
+ - [Using `esp_panel_board_custom_conf.h` with ESP\_IDF](#using-esp_panel_board_custom_confh-with-esp_idf)
- [Example Description](#example-description)
- [FAQ](#faq)
- [Solution for screen drift issue when using ESP32-S3 to drive RGB LCD in ESP-IDF](#solution-for-screen-drift-issue-when-using-esp32-s3-to-drive-rgb-lcd-in-esp-idf)
@@ -71,6 +72,36 @@ Additionally, since ESP32_Display_Panel depends on the `esp-lib-utils` component
> * Run `idf.py save-defconfig` to save the current project's `menuconfig` configuration and generate a *sdkconfig.defaults* default configuration file in the project directory.
> * To discard the current project's menuconfig configuration and load default settings, first delete the *sdkconfig* file in the project directory, then run `idf.py reconfigure`.
+## Using `esp_panel_board_custom_conf.h` with ESP_IDF
+
+It can be justified to not use `menuconfig` to set up a custom board with the `esp_panel_board_custom_conf.h` file instead, for example to be able to easily define macros that will execute between the board components initialisation steps, or to tinker with advanced vendor commands.
+
+Because of the component-centric philosophy of ESP-IDF, it is not as simple as dropping the configuration file in the `main` folder and including it in your main app source file.
+
+Instead, you need to follow these steps :
+
+1. Run the command `idf.py menuconfig` and make sure that the option *Enable to skip `esp_panel_board_*.h`* is **unchecked**. If you don't see this option, make sure you have added the library as a component to your project first !
+2. Copy your `esp_panel_board_custom_conf.h` file to a folder *inside your project folder*. For those instructions, we will assume that the file is correctly configured and copied inside a folder located at `/main/conf/` like so :
+```
+Project Folder - |
+ | - CMakeLists.txt
+ | - main - |
+ | | - main.c
+ | | - conf - |
+ | | | - esp_panel_board_custom_conf.h
+ | | | ...
+ | | ...
+ | ...
+```
+3. Edith the **project** `CMakeLists.txt` by adding the following line *before* the `project` instruction, like so :
+```
+...
+include_directories(${CMAKE_CURRENT_LIST_DIR}/main/conf)
+project(...
+```
+
+This will have the effect of loading the macros way before compilation, making it similar to use as under the PlatformIO IDE or Arduino framework.
+
## Example Description
* [lvgl_v8_port](../../examples/esp_idf/lvgl_v8_port/): This example demonstrates how to port `LVGL v8`. And it runs LVGL's internal demos include `Music Player`, `Widgets`, `Stress` and `Benchmark`.
diff --git a/esp_panel_board_supported_conf.h b/esp_panel_board_supported_conf.h
index 32bf5da8..b25171bb 100644
--- a/esp_panel_board_supported_conf.h
+++ b/esp_panel_board_supported_conf.h
@@ -95,6 +95,7 @@
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85 (ESP32_S3_Touch_LCD_1_85): https://www.waveshare.com/esp32-s3-touch-lcd-1.85.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C (ESP32_S3_Touch_LCD_1_85_C): https://www.waveshare.com/esp32-s3-touch-lcd-1.85c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1 (ESP32_S3_Touch_LCD_2_1): https://www.waveshare.com/esp32-s3-touch-lcd-2.1.htm
+ * -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C (ESP32_S3_Touch_LCD_2_8_C): https://www.waveshare.com/esp32-s3-touch-lcd-2.8c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3 (ESP32_S3_Touch_LCD_4_3): https://www.waveshare.com/esp32-s3-touch-lcd-4.3.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B (ESP32_S3_Touch_LCD_4_3_B): https://www.waveshare.com/esp32-s3-touch-lcd-4.3B.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5 (ESP32_S3_Touch_LCD_5): https://www.waveshare.com/esp32-s3-touch-lcd-5.htm?sku=28117
@@ -105,6 +106,7 @@
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1
+// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5
@@ -173,7 +175,7 @@
* 3. Patch version mismatch: No impact on functionality
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 1
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 1
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/examples/arduino/board/board_static_config/esp_panel_board_supported_conf.h b/examples/arduino/board/board_static_config/esp_panel_board_supported_conf.h
index 32bf5da8..b25171bb 100644
--- a/examples/arduino/board/board_static_config/esp_panel_board_supported_conf.h
+++ b/examples/arduino/board/board_static_config/esp_panel_board_supported_conf.h
@@ -95,6 +95,7 @@
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85 (ESP32_S3_Touch_LCD_1_85): https://www.waveshare.com/esp32-s3-touch-lcd-1.85.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C (ESP32_S3_Touch_LCD_1_85_C): https://www.waveshare.com/esp32-s3-touch-lcd-1.85c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1 (ESP32_S3_Touch_LCD_2_1): https://www.waveshare.com/esp32-s3-touch-lcd-2.1.htm
+ * -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C (ESP32_S3_Touch_LCD_2_8_C): https://www.waveshare.com/esp32-s3-touch-lcd-2.8c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3 (ESP32_S3_Touch_LCD_4_3): https://www.waveshare.com/esp32-s3-touch-lcd-4.3.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B (ESP32_S3_Touch_LCD_4_3_B): https://www.waveshare.com/esp32-s3-touch-lcd-4.3B.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5 (ESP32_S3_Touch_LCD_5): https://www.waveshare.com/esp32-s3-touch-lcd-5.htm?sku=28117
@@ -105,6 +106,7 @@
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1
+// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5
@@ -173,7 +175,7 @@
* 3. Patch version mismatch: No impact on functionality
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 1
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 1
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/examples/arduino/gui/lvgl_v8/simple_port/esp_panel_board_supported_conf.h b/examples/arduino/gui/lvgl_v8/simple_port/esp_panel_board_supported_conf.h
index 32bf5da8..b25171bb 100644
--- a/examples/arduino/gui/lvgl_v8/simple_port/esp_panel_board_supported_conf.h
+++ b/examples/arduino/gui/lvgl_v8/simple_port/esp_panel_board_supported_conf.h
@@ -95,6 +95,7 @@
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85 (ESP32_S3_Touch_LCD_1_85): https://www.waveshare.com/esp32-s3-touch-lcd-1.85.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C (ESP32_S3_Touch_LCD_1_85_C): https://www.waveshare.com/esp32-s3-touch-lcd-1.85c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1 (ESP32_S3_Touch_LCD_2_1): https://www.waveshare.com/esp32-s3-touch-lcd-2.1.htm
+ * -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C (ESP32_S3_Touch_LCD_2_8_C): https://www.waveshare.com/esp32-s3-touch-lcd-2.8c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3 (ESP32_S3_Touch_LCD_4_3): https://www.waveshare.com/esp32-s3-touch-lcd-4.3.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B (ESP32_S3_Touch_LCD_4_3_B): https://www.waveshare.com/esp32-s3-touch-lcd-4.3B.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5 (ESP32_S3_Touch_LCD_5): https://www.waveshare.com/esp32-s3-touch-lcd-5.htm?sku=28117
@@ -105,6 +106,7 @@
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1
+// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5
@@ -173,7 +175,7 @@
* 3. Patch version mismatch: No impact on functionality
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 1
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 1
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/examples/arduino/gui/lvgl_v8/simple_rotation/esp_panel_board_supported_conf.h b/examples/arduino/gui/lvgl_v8/simple_rotation/esp_panel_board_supported_conf.h
index 32bf5da8..b25171bb 100644
--- a/examples/arduino/gui/lvgl_v8/simple_rotation/esp_panel_board_supported_conf.h
+++ b/examples/arduino/gui/lvgl_v8/simple_rotation/esp_panel_board_supported_conf.h
@@ -95,6 +95,7 @@
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85 (ESP32_S3_Touch_LCD_1_85): https://www.waveshare.com/esp32-s3-touch-lcd-1.85.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C (ESP32_S3_Touch_LCD_1_85_C): https://www.waveshare.com/esp32-s3-touch-lcd-1.85c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1 (ESP32_S3_Touch_LCD_2_1): https://www.waveshare.com/esp32-s3-touch-lcd-2.1.htm
+ * -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C (ESP32_S3_Touch_LCD_2_8_C): https://www.waveshare.com/esp32-s3-touch-lcd-2.8c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3 (ESP32_S3_Touch_LCD_4_3): https://www.waveshare.com/esp32-s3-touch-lcd-4.3.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B (ESP32_S3_Touch_LCD_4_3_B): https://www.waveshare.com/esp32-s3-touch-lcd-4.3B.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5 (ESP32_S3_Touch_LCD_5): https://www.waveshare.com/esp32-s3-touch-lcd-5.htm?sku=28117
@@ -105,6 +106,7 @@
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1
+// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5
@@ -173,7 +175,7 @@
* 3. Patch version mismatch: No impact on functionality
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 1
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 1
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/examples/arduino/gui/lvgl_v8/squareline_port/esp_panel_board_supported_conf.h b/examples/arduino/gui/lvgl_v8/squareline_port/esp_panel_board_supported_conf.h
index 32bf5da8..b25171bb 100644
--- a/examples/arduino/gui/lvgl_v8/squareline_port/esp_panel_board_supported_conf.h
+++ b/examples/arduino/gui/lvgl_v8/squareline_port/esp_panel_board_supported_conf.h
@@ -95,6 +95,7 @@
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85 (ESP32_S3_Touch_LCD_1_85): https://www.waveshare.com/esp32-s3-touch-lcd-1.85.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C (ESP32_S3_Touch_LCD_1_85_C): https://www.waveshare.com/esp32-s3-touch-lcd-1.85c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1 (ESP32_S3_Touch_LCD_2_1): https://www.waveshare.com/esp32-s3-touch-lcd-2.1.htm
+ * -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C (ESP32_S3_Touch_LCD_2_8_C): https://www.waveshare.com/esp32-s3-touch-lcd-2.8c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3 (ESP32_S3_Touch_LCD_4_3): https://www.waveshare.com/esp32-s3-touch-lcd-4.3.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B (ESP32_S3_Touch_LCD_4_3_B): https://www.waveshare.com/esp32-s3-touch-lcd-4.3B.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5 (ESP32_S3_Touch_LCD_5): https://www.waveshare.com/esp32-s3-touch-lcd-5.htm?sku=28117
@@ -105,6 +106,7 @@
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1
+// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5
@@ -173,7 +175,7 @@
* 3. Patch version mismatch: No impact on functionality
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 1
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 1
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/examples/arduino/gui/lvgl_v8/squareline_wifi_clock/esp_panel_board_supported_conf.h b/examples/arduino/gui/lvgl_v8/squareline_wifi_clock/esp_panel_board_supported_conf.h
index 32bf5da8..b25171bb 100644
--- a/examples/arduino/gui/lvgl_v8/squareline_wifi_clock/esp_panel_board_supported_conf.h
+++ b/examples/arduino/gui/lvgl_v8/squareline_wifi_clock/esp_panel_board_supported_conf.h
@@ -95,6 +95,7 @@
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85 (ESP32_S3_Touch_LCD_1_85): https://www.waveshare.com/esp32-s3-touch-lcd-1.85.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C (ESP32_S3_Touch_LCD_1_85_C): https://www.waveshare.com/esp32-s3-touch-lcd-1.85c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1 (ESP32_S3_Touch_LCD_2_1): https://www.waveshare.com/esp32-s3-touch-lcd-2.1.htm
+ * -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C (ESP32_S3_Touch_LCD_2_8_C): https://www.waveshare.com/esp32-s3-touch-lcd-2.8c.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3 (ESP32_S3_Touch_LCD_4_3): https://www.waveshare.com/esp32-s3-touch-lcd-4.3.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B (ESP32_S3_Touch_LCD_4_3_B): https://www.waveshare.com/esp32-s3-touch-lcd-4.3B.htm
* -BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5 (ESP32_S3_Touch_LCD_5): https://www.waveshare.com/esp32-s3-touch-lcd-5.htm?sku=28117
@@ -105,6 +106,7 @@
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1
+// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B
// #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5
@@ -173,7 +175,7 @@
* 3. Patch version mismatch: No impact on functionality
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 1
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 1
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/idf_component.yml b/idf_component.yml
index 4e1f039e..b3b9e60f 100644
--- a/idf_component.yml
+++ b/idf_component.yml
@@ -1,4 +1,4 @@
-version: "1.0.3"
+version: "1.0.4"
description: ESP32_Display_Panel is a display driver and GUI porting library designed by Espressif specifically for ESP series SoCs (ESP32, ESP32-S3, ESP32-P4, etc.)
url: https://github.com/esp-arduino-libs/ESP32_Display_Panel
repository: https://github.com/esp-arduino-libs/ESP32_Display_Panel.git
diff --git a/library.properties b/library.properties
index 7f9996d3..ce9be008 100644
--- a/library.properties
+++ b/library.properties
@@ -1,5 +1,5 @@
name=ESP32_Display_Panel
-version=1.0.3
+version=1.0.4
author=espressif
maintainer=espressif
sentence=ESP32_Display_Panel is a display driver and GUI porting library designed by Espressif specifically for ESP series SoCs (ESP32, ESP32-S3, ESP32-P4, etc.)
diff --git a/src/board/supported/esp_panel_board_config_supported.h b/src/board/supported/esp_panel_board_config_supported.h
index 6f7e6547..fd919212 100644
--- a/src/board/supported/esp_panel_board_config_supported.h
+++ b/src/board/supported/esp_panel_board_config_supported.h
@@ -94,6 +94,7 @@
+ defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85) \
+ defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C) \
+ defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1) \
+ + defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C) \
+ defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3) \
+ defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B) \
+ defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5) \
@@ -173,6 +174,8 @@
#include "waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85_C.h"
#elif defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1)
#include "waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1.h"
+ #elif defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C)
+ #include "waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C.h"
#elif defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3)
#include "waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3.h"
#elif defined(BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B)
diff --git a/src/board/supported/esp_panel_board_kconfig_supported.h b/src/board/supported/esp_panel_board_kconfig_supported.h
index 96b946a7..ad9f9165 100644
--- a/src/board/supported/esp_panel_board_kconfig_supported.h
+++ b/src/board/supported/esp_panel_board_kconfig_supported.h
@@ -128,6 +128,11 @@
#define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1 CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1
#endif
#endif
+#ifndef BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
+ #ifdef CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
+ #define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
+ #endif
+#endif
#ifndef BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3
#ifdef CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3
#define BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3 CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3
diff --git a/src/board/supported/waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1.h b/src/board/supported/waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1.h
index dcd6dbf1..38756503 100644
--- a/src/board/supported/waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1.h
+++ b/src/board/supported/waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1.h
@@ -265,7 +265,6 @@
/**
* @brief Touch bus type selection
- * - `ESP_PANEL_BUS_TYPE_SPI`
*/
#define ESP_PANEL_BOARD_TOUCH_BUS_TYPE (ESP_PANEL_BUS_TYPE_I2C)
diff --git a/src/board/supported/waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C.h b/src/board/supported/waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C.h
new file mode 100644
index 00000000..7cfd5c6f
--- /dev/null
+++ b/src/board/supported/waveshare/BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C.h
@@ -0,0 +1,464 @@
+/*
+ * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/**
+ * @file BOARD_ESP32_S3_TOUCH_LCD_2_8_C.h
+ * @brief Configuration file for Waveshare ESP32_S3_TOUCH_LCD_2_8_C
+ * @author @martinroger
+ * @link https://www.waveshare.com/esp32-s3-touch-lcd-2.8c.htm
+ */
+
+#pragma once
+
+// *INDENT-OFF*
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////// Please update the following macros to configure general parameters ///////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * @brief Board name (format: "Manufacturer:Model")
+ */
+#define ESP_PANEL_BOARD_NAME "Waveshare:ESP32_S3_TOUCH_LCD_2_8_C"
+
+/**
+ * @brief Panel resolution configuration in pixels
+ */
+#define ESP_PANEL_BOARD_WIDTH (480) // Panel width (horizontal, in pixels)
+#define ESP_PANEL_BOARD_HEIGHT (480) // Panel height (vertical, in pixels)
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////// Please update the following macros to configure the LCD panel /////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * @brief LCD panel configuration flag (0/1)
+ *
+ * Set to `1` to enable LCD panel support, `0` to disable
+ */
+#define ESP_PANEL_BOARD_USE_LCD (1)
+
+#if ESP_PANEL_BOARD_USE_LCD
+/**
+ * @brief LCD controller selection
+ */
+#define ESP_PANEL_BOARD_LCD_CONTROLLER ST7701
+
+/**
+ * @brief LCD bus type selection
+ */
+#define ESP_PANEL_BOARD_LCD_BUS_TYPE (ESP_PANEL_BUS_TYPE_RGB)
+
+/**
+ * @brief LCD bus parameters configuration
+ *
+ * Configure parameters based on the selected bus type. Parameters for other bus types will be ignored.
+ * For detailed parameter explanations, see:
+ * https://docs.espressif.com/projects/esp-idf/en/v5.3.1/esp32s3/api-reference/peripherals/lcd/index.html
+ * https://docs.espressif.com/projects/esp-iot-solution/en/latest/display/lcd/index.html
+ */
+#if ESP_PANEL_BOARD_LCD_BUS_TYPE == ESP_PANEL_BUS_TYPE_RGB
+
+ /**
+ * @brief RGB bus
+ */
+ /**
+ * Set to 0 if using simple "RGB" interface which does not contain "3-wire SPI" interface.
+ */
+ #define ESP_PANEL_BOARD_LCD_RGB_USE_CONTROL_PANEL (1) // 0/1. Typically set to 1
+
+#if ESP_PANEL_BOARD_LCD_RGB_USE_CONTROL_PANEL
+ /* For control panel (3wire-SPI) */
+ #define ESP_PANEL_BOARD_LCD_RGB_SPI_IO_CS (2)
+ #define ESP_PANEL_BOARD_LCD_RGB_SPI_IO_SCK (2)
+ #define ESP_PANEL_BOARD_LCD_RGB_SPI_IO_SDA (1)
+ #define ESP_PANEL_BOARD_LCD_RGB_SPI_CS_USE_EXPNADER (1) // Set to 1 if the signal is controlled by an IO expander
+ #define ESP_PANEL_BOARD_LCD_RGB_SPI_SCL_USE_EXPNADER (0) // Set to 1 if the signal is controlled by an IO expander
+ #define ESP_PANEL_BOARD_LCD_RGB_SPI_SDA_USE_EXPNADER (0) // Set to 1 if the signal is controlled by an IO expander
+ #define ESP_PANEL_BOARD_LCD_RGB_SPI_MODE (0) // 0-3, typically set to 0
+ #define ESP_PANEL_BOARD_LCD_RGB_SPI_CMD_BYTES (1) // Typically set to 1
+ #define ESP_PANEL_BOARD_LCD_RGB_SPI_PARAM_BYTES (1) // Typically set to 1
+ #define ESP_PANEL_BOARD_LCD_RGB_SPI_USE_DC_BIT (1) // 0/1. Typically set to 1
+#endif // ESP_PANEL_BOARD_LCD_RGB_USE_CONTROL_PANEL
+ /* For refresh panel (RGB) */
+ #define ESP_PANEL_BOARD_LCD_RGB_CLK_HZ (18 * 1000 * 1000)
+ // To increase the upper limit of the PCLK, see: https://docs.espressif.com/projects/esp-faq/en/latest/software-framework/peripherals/lcd.html#how-can-i-increase-the-upper-limit-of-pclk-settings-on-esp32-s3-while-ensuring-normal-rgb-screen-display
+ #define ESP_PANEL_BOARD_LCD_RGB_HPW (8)
+ #define ESP_PANEL_BOARD_LCD_RGB_HBP (10)
+ #define ESP_PANEL_BOARD_LCD_RGB_HFP (50)
+ #define ESP_PANEL_BOARD_LCD_RGB_VPW (2)
+ #define ESP_PANEL_BOARD_LCD_RGB_VBP (18)
+ #define ESP_PANEL_BOARD_LCD_RGB_VFP (8)
+ #define ESP_PANEL_BOARD_LCD_RGB_PCLK_ACTIVE_NEG (0) // 0: rising edge, 1: falling edge. Typically set to 0
+ // The following sheet shows the valid combinations of
+ // data width and pixel bits:
+ // ┏---------------------------------┳- -------------------------------┓
+ #define ESP_PANEL_BOARD_LCD_RGB_DATA_WIDTH (16) // | 16 | 8 |
+ #define ESP_PANEL_BOARD_LCD_RGB_PIXEL_BITS (ESP_PANEL_LCD_COLOR_BITS_RGB565) // | ESP_PANEL_LCD_COLOR_BITS_RGB565 | ESP_PANEL_LCD_COLOR_BITS_RGB888 |
+ // ┗---------------------------------┻---------------------------------┛
+ // To understand color format of RGB LCD, see: https://docs.espressif.com/projects/esp-iot-solution/en/latest/display/lcd/rgb_lcd.html#color-formats
+ #define ESP_PANEL_BOARD_LCD_RGB_BOUNCE_BUF_SIZE (ESP_PANEL_BOARD_WIDTH * 10)
+ // Bounce buffer size in bytes. It is used to avoid screen drift
+ // for ESP32-S3. Typically set to `ESP_PANEL_BOARD_WIDTH * 10`
+ // The size should satisfy `size * N = LCD_width * LCD_height`,
+ // where N is an even number.
+ // For more details, see: https://github.com/esp-arduino-libs/ESP32_Display_Panel/blob/master/docs/FAQ.md#how-to-fix-screen-drift-issue-when-driving-rgb-lcd-with-esp32-s3
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_HSYNC (38)
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_VSYNC (39)
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DE (40) // -1 if not used
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_PCLK (41)
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DISP (-1) // -1 if not used. Typically set to -1
+
+ // The following sheet shows the mapping of ESP GPIOs to
+ // LCD data pins with different data width and color format:
+ // ┏------┳- ------------┳--------------------------┓
+ // | ESP: | 8-bit RGB888 | 16-bit RGB565 |
+ // |------|--------------|--------------------------|
+ // | LCD: | RGB888 | RGB565 | RGB666 | RGB888 |
+ // ┗------|--------------|--------|--------|--------|
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA0 (5) // | D0 | B0 | B0-1 | B0-3 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA1 (45) // | D1 | B1 | B2 | B4 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA2 (48) // | D2 | B2 | B3 | B5 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA3 (47) // | D3 | B3 | B4 | B6 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA4 (21) // | D4 | B4 | B5 | B7 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA5 (14) // | D5 | G0 | G0 | G0-2 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA6 (13) // | D6 | G1 | G1 | G3 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA7 (12) // | D7 | G2 | G2 | G4 |
+#if ESP_PANEL_BOARD_LCD_RGB_DATA_WIDTH > 8 // ┗--------------┫--------|--------|--------|
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA8 (11) // | G3 | G3 | G5 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA9 (10) // | G4 | G4 | G6 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA10 (9) // | G5 | G5 | G7 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA11 (46) // | R0 | R0-1 | R0-3 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA12 (3) // | R1 | R2 | R4 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA13 (8) // | R2 | R3 | R5 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA14 (18) // | R3 | R4 | R6 |
+ #define ESP_PANEL_BOARD_LCD_RGB_IO_DATA15 (17) // | R4 | R5 | R7 |
+ // ┗--------┻--------┻--------┛
+#endif // ESP_PANEL_BOARD_LCD_RGB_DATA_WIDTH
+
+#endif // ESP_PANEL_BOARD_LCD_BUS_TYPE
+
+/**
+ * @brief LCD specific flags configuration
+ *
+ * These flags are specific to the "3-wire SPI + RGB" bus.
+ */
+#if (ESP_PANEL_BOARD_LCD_BUS_TYPE == ESP_PANEL_BUS_TYPE_RGB) && ESP_PANEL_BOARD_LCD_RGB_USE_CONTROL_PANEL
+/**
+ * @brief Enable IO multiplex
+ *
+ * Set to 1 if the 3-wire SPI pins are sharing other pins of the RGB interface to save GPIOs. Then, the control panel
+ * and its pins (except CS signal) will be released after LCD call `init()`. All `*_by_cmd` flags will be invalid.
+ */
+#define ESP_PANEL_BOARD_LCD_FLAGS_ENABLE_IO_MULTIPLEX (0) // typically set to 0
+/**
+ * @brief Mirror by command
+ *
+ * Set to 1 if the `mirror()` function will be implemented by LCD command. Otherwise, the function will be implemented by
+ * software. Only valid when `ESP_PANEL_BOARD_LCD_FLAGS_ENABLE_IO_MULTIPLEX` is 0.
+ */
+#define ESP_PANEL_BOARD_LCD_FLAGS_MIRROR_BY_CMD (!ESP_PANEL_BOARD_LCD_FLAGS_ENABLE_IO_MULTIPLEX)
+#endif // ESP_PANEL_BOARD_LCD_RGB_USE_CONTROL_PANEL
+
+/**
+ * @brief LCD vendor initialization commands
+ *
+ * Vendor specific initialization can be different between manufacturers, should consult the LCD supplier for
+ * initialization sequence code. Please uncomment and change the following macro definitions. Otherwise, the LCD driver
+ * will use the default initialization sequence code.
+ *
+ * The initialization sequence can be specified in two formats:
+ * 1. Raw format:
+ * {command, (uint8_t []){data0, data1, ...}, data_size, delay_ms}
+ * 2. Helper macros:
+ * - ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(delay_ms, command, {data0, data1, ...})
+ * - ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(delay_ms, command)
+ */
+#define ESP_PANEL_BOARD_LCD_VENDOR_INIT_CMD() \
+ { \
+ {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x13}, 5, 0},\
+ {0xEF, (uint8_t []){0x08}, 1, 0},\
+ {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x10}, 5, 0},\
+ {0xC0, (uint8_t []){0x3B, 0x00}, 2, 0},\
+ {0xC1, (uint8_t []){0x10, 0x0C}, 2, 0},\
+ {0xC2, (uint8_t []){0x07, 0x0A}, 2, 0},\
+ {0xC7, (uint8_t []){0x00}, 1, 0},\
+ {0xCC, (uint8_t []){0x10}, 1, 0},\
+ {0xCD, (uint8_t []){0x08}, 1, 0},\
+ {0xB0, (uint8_t []){0x05, 0x12, 0x98, 0x0E, 0x0F, 0x07, 0x07, 0x09, 0x09, 0x23, 0x05, 0x52, 0x0F, 0x67, 0x2C, 0x11}, 16, 0},\
+ {0xB1, (uint8_t []){0x0B, 0x11, 0x97, 0x0C, 0x12, 0x06, 0x06, 0x08, 0x08, 0x22, 0x03, 0x51, 0x11, 0x66, 0x2B, 0x0F}, 16, 0},\
+ {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x11}, 5, 0},\
+ {0xB0, (uint8_t []){0x5D}, 1, 0},\
+ {0xB1, (uint8_t []){0x3E}, 1, 0},\
+ {0xB2, (uint8_t []){0x81}, 1, 0},\
+ {0xB3, (uint8_t []){0x80}, 1, 0},\
+ {0xB5, (uint8_t []){0x4E}, 1, 0},\
+ {0xB7, (uint8_t []){0x85}, 1, 0},\
+ {0xB8, (uint8_t []){0x20}, 1, 0},\
+ {0xC1, (uint8_t []){0x78}, 1, 0},\
+ {0xC2, (uint8_t []){0x78}, 1, 0},\
+ {0xD0, (uint8_t []){0x88}, 1, 0},\
+ {0xE0, (uint8_t []){0x00, 0x00, 0x02}, 3, 0},\
+ {0xE1, (uint8_t []){0x06, 0x30, 0x08, 0x30, 0x05, 0x30, 0x07, 0x30, 0x00, 0x33, 0x33}, 11, 0},\
+ {0xE2, (uint8_t []){0x11, 0x11, 0x33, 0x33, 0xF4, 0x00, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x00}, 12, 0},\
+ {0xE3, (uint8_t []){0x00, 0x00, 0x11, 0x11}, 4, 0},\
+ {0xE4, (uint8_t []){0x44, 0x44}, 2, 0},\
+ {0xE5, (uint8_t []){0x0D, 0xF5, 0x30, 0xF0, 0x0F, 0xF7, 0x30, 0xF0, 0x09, 0xF1, 0x30, 0xF0, 0x0B, 0xF3, 0x30, 0xF0}, 16, 0},\
+ {0xE6, (uint8_t []){0x00, 0x00, 0x11, 0x11}, 4, 0},\
+ {0xE7, (uint8_t []){0x44, 0x44}, 2, 0},\
+ {0xE8, (uint8_t []){0x0C, 0xF4, 0x30, 0xF0, 0x0E, 0xF6, 0x30, 0xF0, 0x08, 0xF0, 0x30, 0xF0, 0x0A, 0xF2, 0x30, 0xF0}, 16, 0},\
+ {0xE9, (uint8_t []){0x36, 0x01}, 2, 0},\
+ {0xEB, (uint8_t []){0x00, 0x01, 0xE4, 0xE4, 0x44, 0x88, 0x40}, 7, 0},\
+ {0xED, (uint8_t []){0xFF, 0x10, 0xAF, 0x76, 0x54, 0x2B, 0xCF, 0xFF, 0xFF, 0xFC, 0xB2, 0x45, 0x67, 0xFA, 0x01, 0xFF}, 16, 0},\
+ {0xEF, (uint8_t []){0x08, 0x08, 0x08, 0x45, 0x3F, 0x54}, 6, 0},\
+ {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x00}, 5, 0},\
+ {0x11, (uint8_t []){0x00}, 0, 120},\
+ {0x3A, (uint8_t []){0x66}, 1, 0},\
+ {0x36, (uint8_t []){0x00}, 1, 0},\
+ {0x35, (uint8_t []){0x00}, 1, 0},\
+ {0x29, (uint8_t []){0x00}, 0, 0},\
+ }
+
+/**
+ * @brief LCD color configuration
+ */
+#define ESP_PANEL_BOARD_LCD_COLOR_BITS (ESP_PANEL_LCD_COLOR_BITS_RGB565)
+ // ESP_PANEL_LCD_COLOR_BITS_RGB565/RGB666/RGB888
+#define ESP_PANEL_BOARD_LCD_COLOR_BGR_ORDER (0) // 0: RGB, 1: BGR
+#define ESP_PANEL_BOARD_LCD_COLOR_INEVRT_BIT (0) // 0/1
+
+/**
+ * @brief LCD transformation configuration
+ */
+#define ESP_PANEL_BOARD_LCD_SWAP_XY (0) // 0/1
+#define ESP_PANEL_BOARD_LCD_MIRROR_X (0) // 0/1
+#define ESP_PANEL_BOARD_LCD_MIRROR_Y (0) // 0/1
+#define ESP_PANEL_BOARD_LCD_GAP_X (0) // [0, ESP_PANEL_BOARD_WIDTH]
+#define ESP_PANEL_BOARD_LCD_GAP_Y (0) // [0, ESP_PANEL_BOARD_HEIGHT]
+
+/**
+ * @brief LCD reset pin configuration
+ */
+#define ESP_PANEL_BOARD_LCD_RST_IO (-1) // Reset pin, -1 if not used
+#define ESP_PANEL_BOARD_LCD_RST_LEVEL (0) // Reset active level, 0: low, 1: high
+
+#endif // ESP_PANEL_BOARD_USE_LCD
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////// Please update the following macros to configure the touch panel ///////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * @brief Touch panel configuration flag (0/1)
+ *
+ * Set to `1` to enable touch panel support, `0` to disable
+ */
+#define ESP_PANEL_BOARD_USE_TOUCH (1)
+
+#if ESP_PANEL_BOARD_USE_TOUCH
+/**
+ * @brief Touch controller selection
+ */
+#define ESP_PANEL_BOARD_TOUCH_CONTROLLER GT911
+
+/**
+ * @brief Touch bus type selection
+ */
+#define ESP_PANEL_BOARD_TOUCH_BUS_TYPE (ESP_PANEL_BUS_TYPE_I2C)
+
+#if (ESP_PANEL_BOARD_TOUCH_BUS_TYPE == ESP_PANEL_BUS_TYPE_I2C) || \
+ (ESP_PANEL_BOARD_TOUCH_BUS_TYPE == ESP_PANEL_BUS_TYPE_SPI)
+/**
+ * If set to 1, the bus will skip to initialize the corresponding host. Users need to initialize the host in advance.
+ *
+ * For drivers which created by this library, even if they use the same host, the host will be initialized only once.
+ * So it is not necessary to set the macro to `1`. For other drivers (like `Wire`), please set the macro to `1`
+ * ensure that the host is initialized only once.
+ */
+#define ESP_PANEL_BOARD_TOUCH_BUS_SKIP_INIT_HOST (0) // 0/1. Typically set to 0
+#endif
+
+/**
+ * @brief Touch bus parameters configuration
+ */
+#if ESP_PANEL_BOARD_TOUCH_BUS_TYPE == ESP_PANEL_BUS_TYPE_I2C
+
+ /**
+ * @brief I2C bus
+ */
+ /* For general */
+ #define ESP_PANEL_BOARD_TOUCH_I2C_HOST_ID (0) // Typically set to 0
+#if !ESP_PANEL_BOARD_TOUCH_BUS_SKIP_INIT_HOST
+ /* For host */
+ #define ESP_PANEL_BOARD_TOUCH_I2C_CLK_HZ (400 * 1000)
+ // Typically set to 400K
+ #define ESP_PANEL_BOARD_TOUCH_I2C_SCL_PULLUP (1) // 0/1. Typically set to 1
+ #define ESP_PANEL_BOARD_TOUCH_I2C_SDA_PULLUP (1) // 0/1. Typically set to 1
+ #define ESP_PANEL_BOARD_TOUCH_I2C_IO_SCL (7)
+ #define ESP_PANEL_BOARD_TOUCH_I2C_IO_SDA (15)
+#endif
+ /* For panel */
+ #define ESP_PANEL_BOARD_TOUCH_I2C_ADDRESS (0) // Typically set to 0 to use the default address.
+ // - For touchs with only one address, set to 0
+ // - For touchs with multiple addresses, set to 0 or
+ // the address. Like GT911, there are two addresses:
+ // 0x5D(default) and 0x14
+
+#endif // ESP_PANEL_BOARD_TOUCH_BUS_TYPE
+
+/**
+ * @brief Touch panel transformation flags
+ */
+#define ESP_PANEL_BOARD_TOUCH_SWAP_XY (0) // 0/1
+#define ESP_PANEL_BOARD_TOUCH_MIRROR_X (0) // 0/1
+#define ESP_PANEL_BOARD_TOUCH_MIRROR_Y (0) // 0/1
+
+/**
+ * @brief Touch panel control pins
+ */
+#define ESP_PANEL_BOARD_TOUCH_RST_IO (-1) // Reset pin, -1 if not used
+#define ESP_PANEL_BOARD_TOUCH_RST_LEVEL (0) // Reset active level, 0: low, 1: high
+#define ESP_PANEL_BOARD_TOUCH_INT_IO (16) // Interrupt pin, -1 if not used
+#define ESP_PANEL_BOARD_TOUCH_INT_LEVEL (0) // Interrupt active level, 0: low, 1: high
+
+#endif // ESP_PANEL_BOARD_USE_TOUCH
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////// Please update the following macros to configure the backlight ////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * @brief Backlight configuration flag (0/1)
+ *
+ * Set to `1` to enable backlight support, `0` to disable
+ */
+#define ESP_PANEL_BOARD_USE_BACKLIGHT (1)
+
+#if ESP_PANEL_BOARD_USE_BACKLIGHT
+/**
+ * @brief Backlight control type selection
+ */
+#define ESP_PANEL_BOARD_BACKLIGHT_TYPE (ESP_PANEL_BACKLIGHT_TYPE_PWM_LEDC)
+
+#if (ESP_PANEL_BOARD_BACKLIGHT_TYPE == ESP_PANEL_BACKLIGHT_TYPE_SWITCH_GPIO) || \
+ (ESP_PANEL_BOARD_BACKLIGHT_TYPE == ESP_PANEL_BACKLIGHT_TYPE_SWITCH_EXPANDER) || \
+ (ESP_PANEL_BOARD_BACKLIGHT_TYPE == ESP_PANEL_BACKLIGHT_TYPE_PWM_LEDC)
+
+ /**
+ * @brief Backlight control pin configuration
+ */
+ #define ESP_PANEL_BOARD_BACKLIGHT_IO (6) // Output GPIO pin number
+ #define ESP_PANEL_BOARD_BACKLIGHT_ON_LEVEL (1) // Active level, 0: low, 1: high
+
+#if ESP_PANEL_BOARD_BACKLIGHT_TYPE == ESP_PANEL_BACKLIGHT_TYPE_PWM_LEDC
+ /**
+ * @brief PWM parameters configuration
+ */
+ #define ESP_PANEL_BOARD_BACKLIGHT_PWM_FREQ_HZ (5000) // LEDC timer frequency.
+ // Different backlight driver chips may have different
+ // frequency limits, please refer to the datasheet of
+ // the specific chip.
+ // https://github.com/esp-arduino-libs/ESP32_Display_Panel/issues/188
+
+ #define ESP_PANEL_BOARD_BACKLIGHT_PWM_DUTY_RESOLUTION (10) // LEDC timer duty resolution.
+ // The frequency and duty resolution of the LEDC timer
+ // need to be properly matched, please refer to:
+ // https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/ledc.html#supported-range-of-frequency-and-duty-resolutions
+#endif
+
+#endif // ESP_PANEL_BOARD_BACKLIGHT_TYPE
+
+/**
+ * @brief Backlight idle state configuration (0/1)
+ *
+ * Set to 1 if want to turn off the backlight after initializing. Otherwise, the backlight will be on.
+ */
+#define ESP_PANEL_BOARD_BACKLIGHT_IDLE_OFF (0)
+
+#endif // ESP_PANEL_BOARD_USE_BACKLIGHT
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////// Please update the following macros to configure the IO expander //////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * @brief IO expander configuration flag (0/1)
+ *
+ * Set to `1` to enable IO expander support, `0` to disable
+ */
+#define ESP_PANEL_BOARD_USE_EXPANDER (1)
+
+#if ESP_PANEL_BOARD_USE_EXPANDER
+/**
+ * @brief IO expander chip selection
+ */
+#define ESP_PANEL_BOARD_EXPANDER_CHIP TCA95XX_8BIT
+
+/**
+ * @brief IO expander I2C bus parameters configuration
+ */
+/**
+ * If set to 1, the bus will skip to initialize the corresponding host. Users need to initialize the host in advance.
+ *
+ * For drivers which created by this library, even if they use the same host, the host will be initialized only once.
+ * So it is not necessary to set the macro to `1`. For other devices, please set the macro to `1` ensure that the
+ * host is initialized only once.
+ */
+#define ESP_PANEL_BOARD_EXPANDER_SKIP_INIT_HOST (0) // 0/1
+/* For general */
+#define ESP_PANEL_BOARD_EXPANDER_I2C_HOST_ID (0) // Typically set to 0
+/* For host */
+#if !ESP_PANEL_BOARD_EXPANDER_SKIP_INIT_HOST
+#define ESP_PANEL_BOARD_EXPANDER_I2C_CLK_HZ (400 * 1000)
+ // Typically set to 400K
+#define ESP_PANEL_BOARD_EXPANDER_I2C_SCL_PULLUP (1) // 0/1. Typically set to 1
+#define ESP_PANEL_BOARD_EXPANDER_I2C_SDA_PULLUP (1) // 0/1. Typically set to 1
+#define ESP_PANEL_BOARD_EXPANDER_I2C_IO_SCL (7)
+#define ESP_PANEL_BOARD_EXPANDER_I2C_IO_SDA (15)
+#endif // ESP_PANEL_BOARD_EXPANDER_SKIP_INIT_HOST
+/* For device */
+#define ESP_PANEL_BOARD_EXPANDER_I2C_ADDRESS (0x20) // The actual I2C address. Even for the same model of IC,
+ // the I2C address may be different, and confirmation based on
+ // the actual hardware connection is required
+#endif // ESP_PANEL_BOARD_USE_EXPANDER
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////////// Please utilize the following macros to execute any additional code if required /////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * @brief Post-begin function for touch panel initialization
+ *
+ * @param[in] p Pointer to the board object
+ * @return true on success, false on failure
+ */
+#define ESP_PANEL_BOARD_TOUCH_PRE_BEGIN_FUNCTION(p) \
+ { \
+ constexpr gpio_num_t TP_INT = static_cast(ESP_PANEL_BOARD_TOUCH_INT_IO); \
+ constexpr int TP_RST = 1; \
+ auto board = static_cast(p); \
+ auto expander = board->getIO_Expander()->getBase(); \
+ expander->pinMode(TP_RST,OUTPUT); \
+ gpio_set_direction(TP_INT, GPIO_MODE_OUTPUT); \
+ gpio_set_level(TP_INT, 0); \
+ vTaskDelay(pdMS_TO_TICKS(10)); \
+ expander->digitalWrite(TP_RST, 0); \
+ vTaskDelay(pdMS_TO_TICKS(10)); \
+ expander->digitalWrite(TP_RST, 1); \
+ vTaskDelay(pdMS_TO_TICKS(200)); \
+ gpio_set_level(TP_INT, 1); \
+ gpio_reset_pin(TP_INT); \
+ return true; \
+ }
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////// File Version ///////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * Do not change the following versions. These version numbers are used to check compatibility between this
+ * configuration file and the library. Rules for version numbers:
+ * 1. Major version mismatch: Configurations are incompatible, must use library version
+ * 2. Minor version mismatch: May be missing new configurations, recommended to update
+ * 3. Patch version mismatch: No impact on functionality
+ */
+#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_MAJOR 1
+#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_MINOR 1
+#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_PATCH 0
+
+// *INDENT-ON*
diff --git a/src/board/supported/waveshare/Kconfig.waveshare b/src/board/supported/waveshare/Kconfig.waveshare
index 9d533dde..2653f050 100644
--- a/src/board/supported/waveshare/Kconfig.waveshare
+++ b/src/board/supported/waveshare/Kconfig.waveshare
@@ -13,6 +13,11 @@ config BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1
help
https://www.waveshare.com/esp32-s3-touch-lcd-2.1.htm
+config BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
+ bool "ESP32_S3_TOUCH_LCD_2_8_C"
+ help
+ https://www.waveshare.com/esp32-s3-touch-lcd-2.8c.htm
+
config BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3
bool "ESP32_S3_TOUCH_LCD_4_3"
help
diff --git a/src/esp_panel_versions.h b/src/esp_panel_versions.h
index ebb3f1b5..fc8b1b36 100644
--- a/src/esp_panel_versions.h
+++ b/src/esp_panel_versions.h
@@ -8,7 +8,7 @@
/* Library Version */
#define ESP_PANEL_VERSION_MAJOR 1
#define ESP_PANEL_VERSION_MINOR 0
-#define ESP_PANEL_VERSION_PATCH 3
+#define ESP_PANEL_VERSION_PATCH 4
/* File `esp_panel_drivers_conf.h` */
#define ESP_PANEL_DRIVERS_CONF_VERSION_MAJOR 1
@@ -22,5 +22,5 @@
/* File `esp_panel_board_supported_conf.h` */
#define ESP_PANEL_BOARD_SUPPORTED_VERSION_MAJOR 1
-#define ESP_PANEL_BOARD_SUPPORTED_VERSION_MINOR 1
+#define ESP_PANEL_BOARD_SUPPORTED_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_VERSION_PATCH 0
diff --git a/test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C b/test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
new file mode 100644
index 00000000..210569b5
--- /dev/null
+++ b/test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C
@@ -0,0 +1,5 @@
+CONFIG_IDF_TARGET="esp32s3"
+CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
+CONFIG_SPIRAM_MODE_OCT=y
+
+CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_8_C=y