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