diff --git a/CHANGELOG.md b/CHANGELOG.md
index a9461201..7870a2e5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@
* feat(board): add add new board M5CORE2 by @MacChu0315-Espressif (#40)
* feat(board): add add new board M5DIAL by @MacChu0315-Espressif (#41)
+* feat(board): add add new board M5CORES3 by @MacChu0315-Espressif (#45)
### Bugfixes:
diff --git a/ESP_Panel_Board_Supported.h b/ESP_Panel_Board_Supported.h
index 9a968fa9..eb609a76 100644
--- a/ESP_Panel_Board_Supported.h
+++ b/ESP_Panel_Board_Supported.h
@@ -51,10 +51,11 @@
*
* - M5STACK_M5CORE2: https://docs.m5stack.com/zh_CN/core/core2
* - M5STACK_M5DIAL: https://docs.m5stack.com/zh_CN/core/M5Dial
- *
+ * - M5STACK_M5CORES3: https://docs.m5stack.com/zh_CN/core/CoreS3
*/
// #define BOARD_M5STACK_M5CORE2
// #define BOARD_M5STACK_M5DIAL
+// #define BOARD_M5STACK_M5CORES3
/*
* Shenzhen Jingcai Intelligent Supported Boards (https://www.displaysmodule.com/):
@@ -78,7 +79,7 @@
*
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 0
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 3
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/README.md b/README.md
index 195fedf2..b453e039 100644
--- a/README.md
+++ b/README.md
@@ -60,7 +60,7 @@ Below is a list of [supported development boards](src/board/Board_Instructions.m
| **Manufacturer** | **Board Model** |
| --------------- | --------------- |
| [Espressif](src/board/Board_Instructions.md#espressif) | ESP32-C3-LCDkit, ESP32-S3-Box, ESP32-S3-Box-3, ESP32-S3-Box-3(beta), ESP32-S3-Box-Lite, ESP32-S3-EYE, ESP32-S3-Korvo-2, ESP32-S3-LCD-EV-Board, ESP32-S3-LCD-EV-Board-2, ESP32-S3-USB-OTG |
-| [M5Stack](https://m5stack.com/) | M5STACK-M5CORE2, M5STACK-M5DIAL |
+| [M5Stack](https://m5stack.com/) | M5STACK-M5CORE2, M5STACK-M5DIAL, M5STACK-M5CORES3 |
| [Jingcai](src/board/Board_Instructions.md#shenzhen-jingcai-intelligent) | ESP32-4848S040C_I_Y_3 |
Developers and manufacturers are welcomed to contribute PRs to add more development boards. For detailed instructions, please refer to the [`Board Development Guide`](./src/board/Board_Contribution_Guide.md).
diff --git a/README_CN.md b/README_CN.md
index c860a416..dcbb42b3 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -60,7 +60,7 @@ ESP32_Display_Panel 的功能框图如下所示,主要包含以下特性:
| **厂商** | **开发板型号** |
| -------- | -------------- |
| [Espressif](src/board/Board_Instructions.md#espressif) | ESP32-C3-LCDkit, ESP32-S3-Box, ESP32-S3-Box-3, ESP32-S3-Box-3(beta), ESP32-S3-Box-Lite, ESP32-S3-EYE, ESP32-S3-Korvo-2, ESP32-S3-LCD-EV-Board, ESP32-S3-LCD-EV-Board-2, ESP32-S3-USB-OTG |
-| [M5Stack](https://m5stack.com/) | M5STACK-M5CORE2, M5STACK-M5DIAL |
+| [M5Stack](https://m5stack.com/) | M5STACK-M5CORE2, M5STACK-M5DIAL, M5STACK-M5CORES3 |
| [Jingcai](src/board/Board_Instructions.md#shenzhen-jingcai-intelligent) | ESP32-4848S040C_I_Y_3 |
欢迎开发者和厂商贡献 PR 来添加更多的开发板,详细说明请参考 [`开发板贡献指南`](./src/board/Board_Contribution_Guide_CN.md)。
diff --git a/examples/LVGL/v8/Porting/ESP_Panel_Board_Supported.h b/examples/LVGL/v8/Porting/ESP_Panel_Board_Supported.h
index 9a968fa9..eb609a76 100644
--- a/examples/LVGL/v8/Porting/ESP_Panel_Board_Supported.h
+++ b/examples/LVGL/v8/Porting/ESP_Panel_Board_Supported.h
@@ -51,10 +51,11 @@
*
* - M5STACK_M5CORE2: https://docs.m5stack.com/zh_CN/core/core2
* - M5STACK_M5DIAL: https://docs.m5stack.com/zh_CN/core/M5Dial
- *
+ * - M5STACK_M5CORES3: https://docs.m5stack.com/zh_CN/core/CoreS3
*/
// #define BOARD_M5STACK_M5CORE2
// #define BOARD_M5STACK_M5DIAL
+// #define BOARD_M5STACK_M5CORES3
/*
* Shenzhen Jingcai Intelligent Supported Boards (https://www.displaysmodule.com/):
@@ -78,7 +79,7 @@
*
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 0
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 3
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/examples/LVGL/v8/Rotation/ESP_Panel_Board_Supported.h b/examples/LVGL/v8/Rotation/ESP_Panel_Board_Supported.h
index 9a968fa9..eb609a76 100644
--- a/examples/LVGL/v8/Rotation/ESP_Panel_Board_Supported.h
+++ b/examples/LVGL/v8/Rotation/ESP_Panel_Board_Supported.h
@@ -51,10 +51,11 @@
*
* - M5STACK_M5CORE2: https://docs.m5stack.com/zh_CN/core/core2
* - M5STACK_M5DIAL: https://docs.m5stack.com/zh_CN/core/M5Dial
- *
+ * - M5STACK_M5CORES3: https://docs.m5stack.com/zh_CN/core/CoreS3
*/
// #define BOARD_M5STACK_M5CORE2
// #define BOARD_M5STACK_M5DIAL
+// #define BOARD_M5STACK_M5CORES3
/*
* Shenzhen Jingcai Intelligent Supported Boards (https://www.displaysmodule.com/):
@@ -78,7 +79,7 @@
*
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 0
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 3
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/examples/Panel/PanelTest/ESP_Panel_Board_Supported.h b/examples/Panel/PanelTest/ESP_Panel_Board_Supported.h
index 9a968fa9..eb609a76 100644
--- a/examples/Panel/PanelTest/ESP_Panel_Board_Supported.h
+++ b/examples/Panel/PanelTest/ESP_Panel_Board_Supported.h
@@ -51,10 +51,11 @@
*
* - M5STACK_M5CORE2: https://docs.m5stack.com/zh_CN/core/core2
* - M5STACK_M5DIAL: https://docs.m5stack.com/zh_CN/core/M5Dial
- *
+ * - M5STACK_M5CORES3: https://docs.m5stack.com/zh_CN/core/CoreS3
*/
// #define BOARD_M5STACK_M5CORE2
// #define BOARD_M5STACK_M5DIAL
+// #define BOARD_M5STACK_M5CORES3
/*
* Shenzhen Jingcai Intelligent Supported Boards (https://www.displaysmodule.com/):
@@ -78,7 +79,7 @@
*
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 0
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 3
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/examples/SquareLine/v8/Porting/ESP_Panel_Board_Supported.h b/examples/SquareLine/v8/Porting/ESP_Panel_Board_Supported.h
index 9a968fa9..eb609a76 100644
--- a/examples/SquareLine/v8/Porting/ESP_Panel_Board_Supported.h
+++ b/examples/SquareLine/v8/Porting/ESP_Panel_Board_Supported.h
@@ -51,10 +51,11 @@
*
* - M5STACK_M5CORE2: https://docs.m5stack.com/zh_CN/core/core2
* - M5STACK_M5DIAL: https://docs.m5stack.com/zh_CN/core/M5Dial
- *
+ * - M5STACK_M5CORES3: https://docs.m5stack.com/zh_CN/core/CoreS3
*/
// #define BOARD_M5STACK_M5CORE2
// #define BOARD_M5STACK_M5DIAL
+// #define BOARD_M5STACK_M5CORES3
/*
* Shenzhen Jingcai Intelligent Supported Boards (https://www.displaysmodule.com/):
@@ -78,7 +79,7 @@
*
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 0
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 3
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/examples/SquareLine/v8/WiFiClock/ESP_Panel_Board_Supported.h b/examples/SquareLine/v8/WiFiClock/ESP_Panel_Board_Supported.h
index 9a968fa9..eb609a76 100644
--- a/examples/SquareLine/v8/WiFiClock/ESP_Panel_Board_Supported.h
+++ b/examples/SquareLine/v8/WiFiClock/ESP_Panel_Board_Supported.h
@@ -51,10 +51,11 @@
*
* - M5STACK_M5CORE2: https://docs.m5stack.com/zh_CN/core/core2
* - M5STACK_M5DIAL: https://docs.m5stack.com/zh_CN/core/M5Dial
- *
+ * - M5STACK_M5CORES3: https://docs.m5stack.com/zh_CN/core/CoreS3
*/
// #define BOARD_M5STACK_M5CORE2
// #define BOARD_M5STACK_M5DIAL
+// #define BOARD_M5STACK_M5CORES3
/*
* Shenzhen Jingcai Intelligent Supported Boards (https://www.displaysmodule.com/):
@@ -78,7 +79,7 @@
*
*/
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MAJOR 0
-#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 3
+#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_FILE_VERSION_PATCH 0
#endif
diff --git a/library.properties b/library.properties
index a95bcd17..f11e6231 100644
--- a/library.properties
+++ b/library.properties
@@ -3,7 +3,7 @@ version=0.1.3
author=espressif
maintainer=espressif
sentence=ESP32_Display_Panel is an Arduino library designed for ESP SoCs to drive display panels and facilitate rapid GUI development.
-paragraph=Currently supported boards:ESP32-C3-LCDkit,ESP32-S3-Box,ESP32-S3-Box-3,ESP32-S3-Box-3(beta),ESP32-S3-Box-Lite,ESP32-S3-EYE,ESP32-S3-Korvo-2,ESP32-S3-LCD-EV-Board,ESP32-S3-LCD-EV-Board-2,ESP32-S3-USB-OTG,M5STACK-M5CORE2,M5STACK-M5DIAL,ESP32-4848S040C_I_Y_3. Currently supported devices: Bus,LCD,Touch,Backlight,IO expander. Currently supported Bus: I2C,SPI,QSPI,3-wire SPI + RGB. Currently supported LCD controllers: GC9A01,GC9B71,GC9503,ILI9341,NV3022B,ST7262,ST7701,ST7789,ST7796,ST77916,ST77922. Currently supported Touch controllers: CST816S,FT5x06,GT1151,GT911,ST7123,TT21100,XPT2046.
+paragraph=Currently supported boards:ESP32-C3-LCDkit,ESP32-S3-Box,ESP32-S3-Box-3,ESP32-S3-Box-3(beta),ESP32-S3-Box-Lite,ESP32-S3-EYE,ESP32-S3-Korvo-2,ESP32-S3-LCD-EV-Board,ESP32-S3-LCD-EV-Board-2,ESP32-S3-USB-OTG,M5STACK-M5CORE2,M5STACK-M5DIAL,M5STACK-M5CORES3,ESP32-4848S040C_I_Y_3. Currently supported devices: Bus,LCD,Touch,Backlight,IO expander. Currently supported Bus: I2C,SPI,QSPI,3-wire SPI + RGB. Currently supported LCD controllers: GC9A01,GC9B71,GC9503,ILI9341,NV3022B,ST7262,ST7701,ST7789,ST7796,ST77916,ST77922. Currently supported Touch controllers: CST816S,FT5x06,GT1151,GT911,ST7123,TT21100,XPT2046.
category=Other
architectures=esp32
url=https://github.com/esp-arduino-libs/ESP32_Display_Panel
diff --git a/src/ESP_PanelVersions.h b/src/ESP_PanelVersions.h
index 1d3828ae..8788bc1f 100644
--- a/src/ESP_PanelVersions.h
+++ b/src/ESP_PanelVersions.h
@@ -25,7 +25,7 @@
/* File `ESP_Panel_Board_Supported.h` */
#define ESP_PANEL_BOARD_SUPPORTED_VERSION_MAJOR 0
-#define ESP_PANEL_BOARD_SUPPORTED_VERSION_MINOR 3
+#define ESP_PANEL_BOARD_SUPPORTED_VERSION_MINOR 2
#define ESP_PANEL_BOARD_SUPPORTED_VERSION_PATCH 0
/* Check if the current configuration file version is compatible with the library version */
diff --git a/src/board/Board_Contribution_Guide.md b/src/board/Board_Contribution_Guide.md
index 6842f65c..096db0e3 100644
--- a/src/board/Board_Contribution_Guide.md
+++ b/src/board/Board_Contribution_Guide.md
@@ -14,14 +14,14 @@ pip3 install pre-commit && pre-commit install
## Modification Content
-Using the adaption of the `M5Stack M5CORE2` development board as an example. Following this guide, changes below will be made under the project:
+Using the adaption of the [`M5Stack M5DIAL`](https://github.com/esp-arduino-libs/ESP32_Display_Panel/commit/1886c668468626b9dd2ae975f7db12df5413378e) development board as an example. Following this guide, changes below will be made under the project:
```
| -ESP32_Display_Panel
| -src
| -board
| -m5stack [A]
- | -M5CORE2.h [A]
+ | -M5DIAL.h [A]
| -ESP_PanelBoard [M]
| -README.md [M]
| -ESP_PanelVersions.h [M]
@@ -36,26 +36,26 @@ Note: [A] stands for 'append' and [M] stands for 'modify'
## Modification Process
-Using the adaption of `M5Stack M5CORE2` as an example, follow these steps to modify the relevant files:
+Using the adaption of `M5Stack M5DIAL` as an example, follow these steps to modify the relevant files:
-1. **[M]** *[ESP_Panel_Board_Supported.h](../../ESP_Panel_Board_Supported.h)*: Add a macro for the new development board, such as `BOARD_M5STACK_M5CORE2`. Ensure the macro is in uppercase. Include the manufacturer's name and link, as well as the target development board's link.
-2. **[A]** *[src/board/m5stack/M5CORE2.h](../board/m5stack/M5CORE2.h)*: Use the *ESP_Panel_Board_Custom.h* file in the root directory as a template to create a new configuration header file for the development board. Follow the naming conventions of existing development boards.
+1. **[M]** *[ESP_Panel_Board_Supported.h](../../ESP_Panel_Board_Supported.h)*: Add a macro for the new development board, such as `BOARD_M5STACK_M5DIAL`. Ensure the macro is in uppercase. Include the manufacturer's name and link, as well as the target development board's link.
+2. **[A]** *[src/board/m5stack/M5DIAL.h](../board/m5stack/M5DIAL.h)*: Use the *ESP_Panel_Board_Custom.h* file in the root directory as a template to create a new configuration header file for the development board. Follow the naming conventions of existing development boards.
3. **[M]** *[src/board/ESP_PanelBoard.h](../board/ESP_PanelBoard.h)*: Add the macro check for the new development board by referring to the existing boards in the file, and modify the file to use the correct header file for this development board.
**Note**: At this point, you can verify the above steps:
- Choose an example, such as *[examples/Panel/PanelTest](../../examples/Panel/PanelTest/)*.
- - modify the macro `ESP_PANEL_USE_SUPPORTED_BOARD` to enable this header file. Define the development board macro, such as `BOARD_M5STACK_M5CORE2`, to enable the new header file *[src/board/m5stack/M5CORE2.h](../board/m5stack/M5CORE2.h)*.
+ - modify the macro `ESP_PANEL_USE_SUPPORTED_BOARD` to enable this header file. Define the development board macro, such as `BOARD_M5STACK_M5DIAL`, to enable the new header file *[src/board/m5stack/M5DIAL.h](../board/m5stack/M5DIAL.h)*.
- Verify the example's ino file. If successful, proceed to the following steps.
-4. **[M]** *[src/board/m5stack/M5CORE2.h](../board/m5stack/M5CORE2.h)*: Modify the configuration header file for the new development board:
+4. **[M]** *[src/board/m5stack/M5DIAL.h](../board/m5stack/M5DIAL.h)*: Modify the configuration header file for the new development board:
- Review the hardware schematics of the development board, focusing on the BUS type used for the LCD screen, the LCD driver name, the BUS type used for touch, the touch driver name, and the chip pin numbers used for each interface of the LCD and touch.
- The best practice is to first get the screen working, then work on the touch functionality.
- If the new development board's driver is compatible with an existing driver, there is no need to add a new driver. Simply note in the comments that this driver is compatible with an existing one and use the existing driver.
- - If the driver used by the new development board is not compatible with existing drivers or has other special configurations, you can achieve this by modifying the macro functions at the end of the new development board's configuration header file, such as `ESP_PANEL_BEGIN_BACKLIGHT_START_FUNCTION`, `ESP_PANEL_BEGIN_END_FUNCTION`, etc. Refer to *[src/board/espressif/ESP32_S3_BOX_3.h](../board/espressif/ESP32_S3_BOX_3.h)* or *[src/board/m5stack/M5CORE2.h](../board/m5stack/M5CORE2.h)* for specific implementations.
+ - If the driver used by the new development board is not compatible with existing drivers or has other special configurations, you can achieve this by modifying the macro functions at the end of the new development board's configuration header file, such as `ESP_PANEL_BEGIN_BACKLIGHT_START_FUNCTION`, `ESP_PANEL_BEGIN_END_FUNCTION`, etc. Refer to *[src/board/espressif/ESP32_S3_BOX_3.h](../board/espressif/ESP32_S3_BOX_3.h)* or *[src/board/m5stack/M5DIAL.h](../board/m5stack/M5DIAL.h)* for specific implementations.
- Run examples other than *[examples/LCD](../../examples/LCD/)* and *[examples/Touch](../../examples/Touch/)*, and continuously adjust the configuration header file to ensure correct settings.
5. **[M]** *[ESP_Panel_Board_Supported](../../ESP_Panel_Board_Supported.h)*, *[library.properties](../../library.properties)*, *[board/Board_Instructions.md](../board/Board_Instructions.md)*, *[README_CN.md](../../README_CN.md)*, *[README.md](../../README.md)*: Update the supported development boards information in these files.
6. **[M]** *[src/board/Board_Instructions.md](../board/Board_Instructions.md)*: Update the recommended configuration for the new development board.
-7. **[M]** *[src/ESP_PanelVersions.h](../ESP_PanelVersions.h)*: Ensure that the version under `Library Version` should be ahead of the latest tag version in terms of the minor version; when changes occur to *[ESP_Panel_Board_Custom.h](../../ESP_Panel_Board_Custom.h)*, *[ESP_Panel_Board_Supported.h](../../ESP_Panel_Board_Supported.h)*, and *[ESP_Panel_Conf.h](../../ESP_Panel_Conf.h)* in the root directory, the minor version number but patch version number at the end of the corresponding file and at the beginging of *[src/ESP_PanelVersions.h](../ESP_PanelVersions.h)* should be increased by one and reset the patch version number to 0.
+7. **[M]** *[src/ESP_PanelVersions.h](../ESP_PanelVersions.h)*: Ensure that the version under `Library Version` should be ahead of the latest tag version in terms of the tag version; when changes occur to *[ESP_Panel_Board_Custom.h](../../ESP_Panel_Board_Custom.h)*, *[ESP_Panel_Board_Supported.h](../../ESP_Panel_Board_Supported.h)*, and *[ESP_Panel_Conf.h](../../ESP_Panel_Conf.h)* in the root directory, ensure that the version number at the end of the corresponding file and at the beginging of *[src/ESP_PanelVersions.h](../ESP_PanelVersions.h)* should be ahead of the latest tag version in terms of the minor version.
8. **[M]** *[CHANGELOG.md](../../CHANGELOG.md)*: Update the changelog.
\ No newline at end of file
diff --git a/src/board/Board_Contribution_Guide_CN.md b/src/board/Board_Contribution_Guide_CN.md
index 74c59763..2d1a16dc 100644
--- a/src/board/Board_Contribution_Guide_CN.md
+++ b/src/board/Board_Contribution_Guide_CN.md
@@ -14,14 +14,14 @@ pip3 install pre-commit && pre-commit install
## 需修改内容
-以适配 `M5Stack M5CORE2` 开发板为例。按照本指南,以下更改将在项目中进行:
+以适配 [`M5Stack M5DIAL`](https://github.com/esp-arduino-libs/ESP32_Display_Panel/commit/1886c668468626b9dd2ae975f7db12df5413378e) 开发板为例。按照本指南,以下更改将在项目中进行:
```
| -ESP32_Display_Panel
| -src
| -board
| -m5stack [A]
- | -M5CORE2.h [A]
+ | -M5DIAL.h [A]
| -ESP_PanelBoard [M]
| -README.md [M]
| -ESP_PanelVersions.h [M]
@@ -36,26 +36,26 @@ pip3 install pre-commit && pre-commit install
## 各文件修改流程
-以适配 `M5Stack M5CORE2` 为例,按照以下步骤修改相关文件:
+以适配 `M5Stack M5DIAL` 为例,按照以下步骤修改相关文件:
-1. **[M]** *[ESP_Panel_Board_Supported.h](../../ESP_Panel_Board_Supported.h)*:为新开发板添加一个宏,例如 `BOARD_M5STACK_M5CORE2`。命名时注意宏名大写。注意附上开发板制造商的名称和链接,以及目标开发板的链接。
-2. **[A]** *[src/board/m5stack/M5CORE2.h](../board/m5stack/M5CORE2.h)*:使用根目录中的 *ESP_Panel_Board_Custom.h* 文件作为模板,为开发板创建一个新的配置头文件。文件命名请参考已有开发板。
+1. **[M]** *[ESP_Panel_Board_Supported.h](../../ESP_Panel_Board_Supported.h)*:为新开发板添加一个宏,例如 `BOARD_M5STACK_M5DIAL`。命名时注意宏名大写。注意附上开发板制造商的名称和链接,以及目标开发板的链接。
+2. **[A]** *[src/board/m5stack/M5DIAL.h](../board/m5stack/M5DIAL.h)*:使用根目录中的 *ESP_Panel_Board_Custom.h* 文件作为模板,为开发板创建一个新的配置头文件。文件命名请参考已有开发板。
3. **[M]** *[src/board/ESP_PanelBoard.h](../board/ESP_PanelBoard.h)*:参照文件中其他开发板的写法,添加新开发板的宏名判断,并注意修改此开发板所使用的头文件。
**注意**:此时,可以验证上述步骤:
- 选择一个示例,例如 *[examples/Panel/PanelTest](../../examples/Panel/PanelTest/)*。
- - 修改宏 `ESP_PANEL_USE_SUPPORTED_BOARD` 以启用此头文件。定义开发板宏,例如 `BOARD_M5STACK_M5CORE2`,以启用新的头文件 *[src/board/m5stack/M5CORE2.h](../board/m5stack/M5CORE2.h)*。
+ - 修改宏 `ESP_PANEL_USE_SUPPORTED_BOARD` 以启用此头文件。定义开发板宏,例如 `BOARD_M5STACK_M5DIAL`,以启用新的头文件 *[src/board/m5stack/M5DIAL.h](../board/m5stack/M5DIAL.h)*。
- 验证示例的 ino 文件。如果成功,继续后续步骤。
-4. **[M]** *[src/board/m5stack/M5CORE2.h](../board/m5stack/M5CORE2.h)*:修改新开发板的配置头文件:
+4. **[M]** *[src/board/m5stack/M5DIAL.h](../board/m5stack/M5DIAL.h)*:修改新开发板的配置头文件:
- 审查开发板的硬件原理图,重点关注LCD 屏幕所使用 BUS 类型、 LCD 驱动名、touch 所使用 BUS 类型、touch 驱动名,以及 LCD 和 touch 各接口所使用的芯片管脚号。
- 修改技巧是先亮屏再 touch。
- 如果新开发板的驱动程序与现有驱动程序兼容,则无需添加新驱动程序。只需在注释中注明该驱动程序与现有驱动程序兼容,并使用现有驱动程序。
- - 如果新开发板使用的驱动程序与现有驱动程序不兼容或有其他特殊配置,可以通过修改新开发板配置头文件末尾的宏函数来实现,例如 `ESP_PANEL_BEGIN_BACKLIGHT_START_FUNCTION`、`ESP_PANEL_BEGIN_END_FUNCTION` 等。具体实现请参考 *[src/board/espressif/ESP32_S3_BOX_3.h](../board/espressif/ESP32_S3_BOX_3.h)* 或 *[src/board/m5stack/M5CORE2.h](../board/m5stack/M5CORE2.h)*。
+ - 如果新开发板使用的驱动程序与现有驱动程序不兼容或有其他特殊配置,可以通过修改新开发板配置头文件末尾的宏函数来实现,例如 `ESP_PANEL_BEGIN_BACKLIGHT_START_FUNCTION`、`ESP_PANEL_BEGIN_END_FUNCTION` 等。具体实现请参考 *[src/board/espressif/ESP32_S3_BOX_3.h](../board/espressif/ESP32_S3_BOX_3.h)* 或 *[src/board/m5stack/M5DIAL.h](../board/m5stack/M5DIAL.h)*。
- 运行除 *[examples/LCD](../../examples/LCD/)* 和 *[examples/Touch](../../examples/Touch/)* 以外的示例,并不断调整配置头文件以确保设置正确。
5. **[M]** *[ESP_Panel_Board_Supported](../../ESP_Panel_Board_Supported.h)*、*[library.properties](../../library.properties)*、*[board/Board_Instructions.md](../board/Board_Instructions.md)*、*[README_CN.md](../../README_CN.md)*、*[README.md](../../README.md)*:更新上述文件中“已支持开发板”说明。
6. **[M]** *[src/board/Board_Instructions.md](../board/Board_Instructions.md)*:更新新开发板的推荐配置。
-7. **[M]** *[src/ESP_PanelVersions.h](../ESP_PanelVersions.h)*:确保 `Library Version` 下的版本应领先于最新标签版本的小版本;当根目录下的 *[ESP_Panel_Board_Custom.h](../../ESP_Panel_Board_Custom.h)*、*[ESP_Panel_Board_Supported.h](../../ESP_Panel_Board_Supported.h)* 和 *[ESP_Panel_Conf.h](../../ESP_Panel_Conf.h)* 发生变化时,相应文件末尾和 *[src/ESP_PanelVersions.h](../ESP_PanelVersions.h)* 开头的小版本号应增加一个,并将补丁版本号重置为 0。
+7. **[M]** *[src/ESP_PanelVersions.h](../ESP_PanelVersions.h)*:确保 `Library Version` 下的版本应小版本领先于最新 tag 版本。当根目录下的 *[ESP_Panel_Board_Custom.h](../../ESP_Panel_Board_Custom.h)*、*[ESP_Panel_Board_Supported.h](../../ESP_Panel_Board_Supported.h)* 和 *[ESP_Panel_Conf.h](../../ESP_Panel_Conf.h)* 发生变化时,相应文件末尾和 *[src/ESP_PanelVersions.h](../ESP_PanelVersions.h)* 开头的版本号应中版本领先于最新 tag 版本。
8. **[M]** *[CHANGELOG.md](../../CHANGELOG.md)*:更新变更日志。
\ No newline at end of file
diff --git a/src/board/Board_Instructions.md b/src/board/Board_Instructions.md
index 8912ed64..c98a7693 100644
--- a/src/board/Board_Instructions.md
+++ b/src/board/Board_Instructions.md
@@ -21,8 +21,10 @@
| **Picture** | **Name** | **LCD Bus** | **LCD Controller** | **Touch Bus** | **Touch Controller** |
| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------: | :--------------: | :----------------: | :-----------: | :------------------: |
-| [
](https://www.displaysmodule.com/sale-41828962-experience-the-power-of-the-esp32-display-module-sku-esp32-4848s040c-i-y-3.html) | [M5STACK_M5CORE2](https://docs.m5stack.com/zh_CN/core/core2) | SPI | ILI9342C | I2C | FT6336U |
-| [
](https://www.displaysmodule.com/sale-41828962-experience-the-power-of-the-esp32-display-module-sku-esp32-4848s040c-i-y-3.html) | [M5STACK_M5DIAL](https://docs.m5stack.com/zh_CN/core/M5Dial) | SPI | GC9A01 | I2C | FT5x06 |
+|
| [M5STACK_M5CORE2](https://docs.m5stack.com/zh_CN/core/core2) | SPI | ILI9342C | I2C | FT6336U |
+|
| [M5STACK_M5DIAL](https://docs.m5stack.com/zh_CN/core/M5Dial) | SPI | GC9A01 | I2C | FT5x06 |
+|
| [M5STACK_M5CORES3](https://docs.m5stack.com/zh_CN/core/CoreS3) | SPI | ILI9342C | I2C | FT6336U |
+
### [Shenzhen Jingcai Intelligent](https://www.displaysmodule.com/)
@@ -48,6 +50,7 @@ Below are recommended configurations for developing GUI applications on differen
| ESP32-S3-USB-OTG | ESP32-S3-USB-OTG | - | - | - | - | 8M with spiffs |
| M5STACK-M5CORE2 | M5Stack-Core2 | Enabled | - | - | - | Default |
| M5STACK-M5DIAL | ESP32S3 Dev Module | OPI | QIO 80MHz | 8MB | Disabled | Default |
+| M5STACK-M5CORES3 | ESP32S3 Dev Module | OPI | QIO 80MHz | 16MB | Enabled | Default 4MB with spiffs |
| ESP32-4848S040C_I_Y_3 | ESP32S3 Dev Module | OPI | QIO 80MHz | 16MB | Disabled | 16M Flash (3MB) |
**Notes:**
diff --git a/src/board/ESP_PanelBoard.h b/src/board/ESP_PanelBoard.h
index e0376619..dcf772a8 100644
--- a/src/board/ESP_PanelBoard.h
+++ b/src/board/ESP_PanelBoard.h
@@ -14,7 +14,8 @@
defined(BOARD_ESP32_S3_KORVO_2) + defined(BOARD_ESP32_S3_LCD_EV_BOARD) + \
defined(BOARD_ESP32_S3_LCD_EV_BOARD_V1_5) + defined(BOARD_ESP32_S3_LCD_EV_BOARD_2) + \
defined(BOARD_ESP32_S3_LCD_EV_BOARD_2_V1_5) + defined(BOARD_ESP32_S3_USB_OTG) + \
- defined(BOARD_M5STACK_M5CORE2) + defined(BOARD_M5STACK_M5DIAL) + defined(BOARD_ESP32_4848S040C_I_Y_3) \
+ defined(BOARD_M5STACK_M5CORE2) + defined(BOARD_M5STACK_M5DIAL) + defined(BOARD_M5STACK_M5CORES3) + \
+ defined(BOARD_ESP32_4848S040C_I_Y_3) \
> 1
#error "Multiple boards enabled! Please check file `ESP_Panel_Board_Supported.h` and make sure only one board is enabled."
#endif
@@ -50,6 +51,8 @@
#include "board/m5stack/M5CORE2.h"
#elif defined(BOARD_M5STACK_M5DIAL) || CONFIG_BOARD_M5STACK_M5DIAL
#include "board/m5stack/M5DIAL.h"
+#elif defined(BOARD_M5STACK_M5CORES3) || CONFIG_BOARD_M5STACK_M5CORES3
+ #include "board/m5stack/M5CORES3.h"
/* Jingcai */
#elif defined(BOARD_ESP32_4848S040C_I_Y_3) || CONFIG_BOARD_ESP32_4848S040C_I_Y_3
#include "board/jingcai/ESP32_4848S040C_I_Y_3.h"
diff --git a/src/board/m5stack/M5CORES3.h b/src/board/m5stack/M5CORES3.h
new file mode 100644
index 00000000..d44cb007
--- /dev/null
+++ b/src/board/m5stack/M5CORES3.h
@@ -0,0 +1,402 @@
+/*
+ * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#pragma once
+#include
+#include
+// *INDENT-OFF*
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////// Please update the following macros to configure the LCD panel /////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/* Set to 1 when using an LCD panel */
+#define ESP_PANEL_USE_LCD (1) // 0/1
+
+#if ESP_PANEL_USE_LCD
+/**
+ * LCD Controller Name. Choose one of the following:
+ * - GC9A01, GC9B71, GC9503
+ * - ILI9341
+ * - NV3022B
+ * - SH8601
+ * - SPD2010
+ * - ST7262, ST7701, ST7789, ST7796, ST77916, ST77922
+ * LCD Controller of M5CoreS3 is ILI9342C, but the driver is compatible with ILI9341.
+ */
+#define ESP_PANEL_LCD_NAME ILI9341
+
+/* LCD resolution in pixels */
+#define ESP_PANEL_LCD_WIDTH (320)
+#define ESP_PANEL_LCD_HEIGHT (240)
+
+/* LCD Bus Settings */
+/**
+ * If set to 1, the bus will skip to initialize the corresponding host. Users need to initialize the host in advance.
+ * It is useful if other devices use the same host. Please ensure that the host is initialized only once.
+ *
+ * Set to 1 if only the RGB interface is used without the 3-wire SPI interface,
+ */
+#define ESP_PANEL_LCD_BUS_SKIP_INIT_HOST (0) // 0/1
+/**
+ * LCD Bus Type. Choose one of the following:
+ * - ESP_PANEL_BUS_TYPE_I2C (not ready)
+ * - ESP_PANEL_BUS_TYPE_SPI
+ * - ESP_PANEL_BUS_TYPE_QSPI
+ * - ESP_PANEL_BUS_TYPE_I80 (not ready)
+ * - ESP_PANEL_BUS_TYPE_RGB (only supported for ESP32-S3)
+ */
+#define ESP_PANEL_LCD_BUS_TYPE (ESP_PANEL_BUS_TYPE_SPI)
+/**
+ * LCD Bus Parameters.
+ *
+ * Please refer to https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-reference/peripherals/lcd.html and
+ * https://docs.espressif.com/projects/esp-iot-solution/en/latest/display/lcd/index.html for more details.
+ *
+ */
+#if ESP_PANEL_LCD_BUS_TYPE == ESP_PANEL_BUS_TYPE_SPI
+
+ #define ESP_PANEL_LCD_BUS_HOST_ID (1) // Typically set to 1
+ #define ESP_PANEL_LCD_SPI_IO_CS (3)
+#if !ESP_PANEL_LCD_BUS_SKIP_INIT_HOST
+ #define ESP_PANEL_LCD_SPI_IO_SCK (36)
+ #define ESP_PANEL_LCD_SPI_IO_MOSI (37)
+ #define ESP_PANEL_LCD_SPI_IO_MISO (-1) // -1 if not used
+#endif
+ #define ESP_PANEL_LCD_SPI_IO_DC (35)
+ #define ESP_PANEL_LCD_SPI_MODE (0) // 0/1/2/3, typically set to 0
+ #define ESP_PANEL_LCD_SPI_CLK_HZ (40 * 1000 * 1000)
+ // Should be an integer divisor of 80M, typically set to 40M
+ #define ESP_PANEL_LCD_SPI_TRANS_QUEUE_SZ (10) // Typically set to 10
+ #define ESP_PANEL_LCD_SPI_CMD_BITS (8) // Typically set to 8
+ #define ESP_PANEL_LCD_SPI_PARAM_BITS (8) // Typically set to 8
+
+#elif ESP_PANEL_LCD_BUS_TYPE == ESP_PANEL_BUS_TYPE_QSPI
+
+ #define ESP_PANEL_LCD_BUS_HOST_ID (1) // Typically set to 1
+ #define ESP_PANEL_LCD_SPI_IO_CS (5)
+#if !ESP_PANEL_LCD_BUS_SKIP_INIT_HOST
+ #define ESP_PANEL_LCD_SPI_IO_SCK (9)
+ #define ESP_PANEL_LCD_SPI_IO_DATA0 (10)
+ #define ESP_PANEL_LCD_SPI_IO_DATA1 (11)
+ #define ESP_PANEL_LCD_SPI_IO_DATA2 (12)
+ #define ESP_PANEL_LCD_SPI_IO_DATA3 (13)
+#endif
+ #define ESP_PANEL_LCD_SPI_MODE (0) // 0/1/2/3, typically set to 0
+ #define ESP_PANEL_LCD_SPI_CLK_HZ (40 * 1000 * 1000)
+ // Should be an integer divisor of 80M, typically set to 40M
+ #define ESP_PANEL_LCD_SPI_TRANS_QUEUE_SZ (10) // Typically set to 10
+ #define ESP_PANEL_LCD_SPI_CMD_BITS (32) // Typically set to 32
+ #define ESP_PANEL_LCD_SPI_PARAM_BITS (8) // Typically set to 8
+
+#elif ESP_PANEL_LCD_BUS_TYPE == ESP_PANEL_BUS_TYPE_RGB
+
+ #define ESP_PANEL_LCD_RGB_CLK_HZ (16 * 1000 * 1000)
+ #define ESP_PANEL_LCD_RGB_HPW (10)
+ #define ESP_PANEL_LCD_RGB_HBP (10)
+ #define ESP_PANEL_LCD_RGB_HFP (20)
+ #define ESP_PANEL_LCD_RGB_VPW (10)
+ #define ESP_PANEL_LCD_RGB_VBP (10)
+ #define ESP_PANEL_LCD_RGB_VFP (10)
+ #define ESP_PANEL_LCD_RGB_PCLK_ACTIVE_NEG (0) // 0: rising edge, 1: falling edge
+ #define ESP_PANEL_LCD_RGB_DATA_WIDTH (16) // 8 | 16
+ #define ESP_PANEL_LCD_RGB_PIXEL_BITS (16) // 24 | 16
+ #define ESP_PANEL_LCD_RGB_FRAME_BUF_NUM (1) // 1/2/3
+ #define ESP_PANEL_LCD_RGB_BOUNCE_BUF_SIZE (0) // Bounce buffer size in bytes. This function is used to avoid screen drift.
+ // To enable the bounce buffer, set it to a non-zero value. Typically set to `ESP_PANEL_LCD_WIDTH * 10`
+ // The size of the Bounce Buffer must satisfy `width_of_lcd * height_of_lcd = size_of_buffer * N`,
+ // where N is an even number.
+ #define ESP_PANEL_LCD_RGB_IO_HSYNC (46)
+ #define ESP_PANEL_LCD_RGB_IO_VSYNC (3)
+ #define ESP_PANEL_LCD_RGB_IO_DE (17) // -1 if not used
+ #define ESP_PANEL_LCD_RGB_IO_PCLK (9)
+ #define ESP_PANEL_LCD_RGB_IO_DISP (-1) // -1 if not used
+ #define ESP_PANEL_LCD_RGB_IO_DATA0 (10)
+ #define ESP_PANEL_LCD_RGB_IO_DATA1 (11)
+ #define ESP_PANEL_LCD_RGB_IO_DATA2 (12)
+ #define ESP_PANEL_LCD_RGB_IO_DATA3 (13)
+ #define ESP_PANEL_LCD_RGB_IO_DATA4 (14)
+ #define ESP_PANEL_LCD_RGB_IO_DATA5 (21)
+ #define ESP_PANEL_LCD_RGB_IO_DATA6 (47)
+ #define ESP_PANEL_LCD_RGB_IO_DATA7 (48)
+#if ESP_PANEL_LCD_RGB_DATA_WIDTH > 8
+ #define ESP_PANEL_LCD_RGB_IO_DATA8 (45)
+ #define ESP_PANEL_LCD_RGB_IO_DATA9 (38)
+ #define ESP_PANEL_LCD_RGB_IO_DATA10 (39)
+ #define ESP_PANEL_LCD_RGB_IO_DATA11 (40)
+ #define ESP_PANEL_LCD_RGB_IO_DATA12 (41)
+ #define ESP_PANEL_LCD_RGB_IO_DATA13 (42)
+ #define ESP_PANEL_LCD_RGB_IO_DATA14 (2)
+ #define ESP_PANEL_LCD_RGB_IO_DATA15 (1)
+#endif
+#if !ESP_PANEL_LCD_BUS_SKIP_INIT_HOST
+ #define ESP_PANEL_LCD_3WIRE_SPI_IO_CS (0)
+ #define ESP_PANEL_LCD_3WIRE_SPI_IO_SCK (1)
+ #define ESP_PANEL_LCD_3WIRE_SPI_IO_SDA (2)
+ #define ESP_PANEL_LCD_3WIRE_SPI_CS_USE_EXPNADER (0) // 0/1
+ #define ESP_PANEL_LCD_3WIRE_SPI_SCL_USE_EXPNADER (0) // 0/1
+ #define ESP_PANEL_LCD_3WIRE_SPI_SDA_USE_EXPNADER (0) // 0/1
+ #define ESP_PANEL_LCD_3WIRE_SPI_SCL_ACTIVE_EDGE (0) // 0: rising edge, 1: falling edge
+ #define ESP_PANEL_LCD_FLAGS_AUTO_DEL_PANEL_IO (0) // Delete the panel IO instance automatically if set to 1.
+ // If the 3-wire SPI pins are sharing other pins of the RGB interface to save GPIOs,
+ // Please set it to 1 to release the panel IO and its pins (except CS signal).
+ #define ESP_PANEL_LCD_FLAGS_MIRROR_BY_CMD (!ESP_PANEL_LCD_FLAGS_AUTO_DEL_PANEL_IO)
+ // The `mirror()` function will be implemented by LCD command if set to 1.
+#endif
+
+#else
+
+#error "The function is not ready and will be implemented in the future."
+
+#endif /* ESP_PANEL_LCD_BUS_TYPE */
+
+/**
+ * LCD Venbdor 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.
+ *
+ * There are two formats for the sequence code:
+ * 1. Raw data: {command, (uint8_t []){ data0, data1, ... }, data_size, delay_ms}
+ * 2. Formater: ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(delay_ms, command, { data0, data1, ... }) and
+ * ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(delay_ms, command)
+ */
+// #define ESP_PANEL_LCD_VENDOR_INIT_CMD() \
+// { \
+// {0xFF, (uint8_t []){0x77, 0x01, 0x00, 0x00, 0x10}, 5, 0}, \
+// {0xC0, (uint8_t []){0x3B, 0x00}, 2, 0}, \
+// {0xC1, (uint8_t []){0x0D, 0x02}, 2, 0}, \
+// {0x29, (uint8_t []){0x00}, 0, 120}, \
+// or \
+// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xFF, {0x77, 0x01, 0x00, 0x00, 0x10}), \
+// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC0, {0x3B, 0x00}), \
+// ESP_PANEL_LCD_CMD_WITH_8BIT_PARAM(0, 0xC1, {0x0D, 0x02}), \
+// ESP_PANEL_LCD_CMD_WITH_NONE_PARAM(120, 0x29), \
+// }
+
+/* LCD Color Settings */
+/* LCD color depth in bits */
+#define ESP_PANEL_LCD_COLOR_BITS (16) // 8/16/18/24
+/*
+ * LCD RGB Element Order. Choose one of the following:
+ * - 0: RGB
+ * - 1: BGR
+ */
+#define ESP_PANEL_LCD_BGR_ORDER (1) // 0/1
+#define ESP_PANEL_LCD_INEVRT_COLOR (1) // 0/1
+
+/* LCD Transformation Flags */
+#define ESP_PANEL_LCD_SWAP_XY (0) // 0/1
+#define ESP_PANEL_LCD_MIRROR_X (0) // 0/1
+#define ESP_PANEL_LCD_MIRROR_Y (0) // 0/1
+
+/* LCD Other Settings */
+/* IO num of RESET pin, set to -1 if not use */
+#define ESP_PANEL_LCD_IO_RST (-1)
+#define ESP_PANEL_LCD_RST_LEVEL (0) // 0: low level, 1: high level
+
+#endif /* ESP_PANEL_USE_LCD */
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////// Please update the following macros to configure the touch panel ///////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/* Set to 1 when using an touch panel */
+#define ESP_PANEL_USE_TOUCH (1) // 0/1
+#if ESP_PANEL_USE_TOUCH
+/**
+ * Touch controller name. Choose one of the following:
+ * - CST816S
+ * - FT5x06
+ * - GT911, GT1151
+ * - ST1633, ST7123
+ * - TT21100
+ * - XPT2046
+ * Touch Controller of M5CoreS3 is FT6336U, but the driver is compatible with FT5x06.
+ */
+#define ESP_PANEL_TOUCH_NAME FT5x06
+
+/* Touch resolution in pixels */
+#define ESP_PANEL_TOUCH_H_RES (ESP_PANEL_LCD_WIDTH) // Typically set to the same value as the width of LCD
+#define ESP_PANEL_TOUCH_V_RES (ESP_PANEL_LCD_HEIGHT) // Typically set to the same value as the height of LCD
+
+/* Touch Panel Bus Settings */
+/**
+ * If set to 1, the bus will skip to initialize the corresponding host. Users need to initialize the host in advance.
+ * It is useful if other devices use the same host. Please ensure that the host is initialized only once.
+ */
+#define ESP_PANEL_TOUCH_BUS_SKIP_INIT_HOST (0) // 0/1
+/**
+ * Touch panel bus type. Choose one of the following:
+ * - ESP_PANEL_BUS_TYPE_I2C
+ * - ESP_PANEL_BUS_TYPE_SPI
+ */
+#define ESP_PANEL_TOUCH_BUS_TYPE (ESP_PANEL_BUS_TYPE_I2C)
+/* Touch panel bus parameters */
+#if ESP_PANEL_TOUCH_BUS_TYPE == ESP_PANEL_BUS_TYPE_I2C
+
+ #define ESP_PANEL_TOUCH_BUS_HOST_ID (0) // Typically set to 0
+ #define ESP_PANEL_TOUCH_I2C_ADDRESS (0) // Typically set to 0 to use default address
+#if !ESP_PANEL_TOUCH_BUS_SKIP_INIT_HOST
+ #define ESP_PANEL_TOUCH_I2C_CLK_HZ (400 * 1000)
+ // Typically set to 400K
+ #define ESP_PANEL_TOUCH_I2C_SCL_PULLUP (1) // 0/1
+ #define ESP_PANEL_TOUCH_I2C_SDA_PULLUP (1) // 0/1
+ #define ESP_PANEL_TOUCH_I2C_IO_SCL (11)
+ #define ESP_PANEL_TOUCH_I2C_IO_SDA (12)
+#endif
+
+#elif ESP_PANEL_TOUCH_BUS_TYPE == ESP_PANEL_BUS_TYPE_SPI
+
+ #define ESP_PANEL_TOUCH_BUS_HOST_ID (1) // Typically set to 1
+ #define ESP_PANEL_TOUCH_SPI_IO_CS (5)
+#if !ESP_PANEL_TOUCH_BUS_SKIP_INIT_HOST
+ #define ESP_PANEL_TOUCH_SPI_IO_SCK (7)
+ #define ESP_PANEL_TOUCH_SPI_IO_MOSI (6)
+ #define ESP_PANEL_TOUCH_SPI_IO_MISO (9)
+#endif
+ #define ESP_PANEL_TOUCH_SPI_CLK_HZ (1 * 1000 * 1000)
+ // Should be an integer divisor of 80M, typically set to 1M
+
+#else
+
+#error "The function is not ready and will be implemented in the future."
+
+#endif /* ESP_PANEL_TOUCH_BUS_TYPE */
+
+/* Touch Transformation Flags */
+#define ESP_PANEL_TOUCH_SWAP_XY (0) // 0/1
+#define ESP_PANEL_TOUCH_MIRROR_X (0) // 0/1
+#define ESP_PANEL_TOUCH_MIRROR_Y (0) // 0/1
+
+/* Touch Other Settings */
+/* IO num of RESET pin, set to -1 if not use */
+#define ESP_PANEL_TOUCH_IO_RST (-1)
+#define ESP_PANEL_TOUCH_RST_LEVEL (0) // 0: low level, 1: high level
+/* IO num of INT pin, set to -1 if not use */
+#define ESP_PANEL_TOUCH_IO_INT (-1)
+#define ESP_PANEL_TOUCH_INT_LEVEL (0) // 0: low level, 1: high level
+
+#endif /* ESP_PANEL_USE_TOUCH */
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////// Please update the following macros to configure the backlight ////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+#define ESP_PANEL_USE_BACKLIGHT (0) // 0/1
+#if ESP_PANEL_USE_BACKLIGHT
+/* IO num of backlight pin */
+#define ESP_PANEL_BACKLIGHT_IO (45)
+#define ESP_PANEL_BACKLIGHT_ON_LEVEL (1) // 0: low level, 1: high level
+
+/* Set to 1 if you want to turn off the backlight after initializing the panel; otherwise, set it to turn on */
+#define ESP_PANEL_BACKLIGHT_IDLE_OFF (0) // 0: on, 1: off
+
+/* Set to 1 if use PWM for brightness control */
+#define ESP_PANEL_LCD_BL_USE_PWM (1) // 0/1
+#endif /* ESP_PANEL_USE_BACKLIGHT */
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////// Please update the following macros to configure the IO expander //////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/* Set to 0 if not using IO Expander */
+#define ESP_PANEL_USE_EXPANDER (0) // 0/1
+#if ESP_PANEL_USE_EXPANDER
+/**
+ * IO expander name. Choose one of the following:
+ * - CH422G
+ * - HT8574
+ * - TCA95xx_8bit
+ * - TCA95xx_16bit
+ */
+#define ESP_PANEL_EXPANDER_NAME TCA95xx_8bit
+
+/* IO expander Settings */
+/**
+ * If set to 1, the driver will skip to initialize the corresponding host. Users need to initialize the host in advance.
+ * It is useful if other devices use the same host. Please ensure that the host is initialized only once.
+ */
+#define ESP_PANEL_EXPANDER_SKIP_INIT_HOST (0) // 0/1
+/* IO expander parameters */
+#define ESP_PANEL_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
+#if !ESP_PANEL_EXPANDER_SKIP_INIT_HOST
+ #define ESP_PANEL_EXPANDER_HOST_ID (0) // Typically set to 0
+ #define ESP_PANEL_EXPANDER_I2C_CLK_HZ (400 * 1000)
+ // Typically set to 400K
+ #define ESP_PANEL_EXPANDER_I2C_SCL_PULLUP (1) // 0/1
+ #define ESP_PANEL_EXPANDER_I2C_SDA_PULLUP (1) // 0/1
+ #define ESP_PANEL_EXPANDER_I2C_IO_SCL (18)
+ #define ESP_PANEL_EXPANDER_I2C_IO_SDA (8)
+#endif
+#endif /* ESP_PANEL_USE_EXPANDER */
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////// Please utilize the following macros to execute any additional code if required. //////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+#define ESP_PANEL_BEGIN_START_FUNCTION( panel ) \
+ { \
+ Serial.println("in function ESP_PANEL_BEGIN_END_FUNCTION\n"); \
+ static const uint8_t AXP_ADDR = 0x34; \
+ static const uint8_t I2C_MASTER_TIMEOUT_MS = 0; \
+ static i2c_port_t i2c_master_port = I2C_NUM_0; \
+ \
+ uint8_t read_value = 0; \
+ uint8_t write_value = 0; \
+ uint8_t reg_addr = 0; \
+ uint8_t write_buf[2] = {0}; \
+ \
+ write_buf[0] = 0x90; \
+ write_buf[1] = 0xBF; \
+ i2c_master_write_to_device(i2c_master_port, AXP_ADDR, write_buf, sizeof(write_buf), I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); \
+ write_buf[0] = 0x02; \
+ write_buf[1] = 0b00000101; \
+ i2c_master_write_to_device(i2c_master_port, 0x58, write_buf, sizeof(write_buf), I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); \
+ write_buf[0] = 0x03; \
+ write_buf[1] = 0b00000011; \
+ i2c_master_write_to_device(i2c_master_port, 0x58, write_buf, sizeof(write_buf), I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); \
+ write_buf[0] = 0x04; \
+ write_buf[1] = 0b00011000; \
+ i2c_master_write_to_device(i2c_master_port, 0x58, write_buf, sizeof(write_buf), I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); \
+ write_buf[0] = 0x05; \
+ write_buf[1] = 0b00001100; \
+ i2c_master_write_to_device(i2c_master_port, 0x58, write_buf, sizeof(write_buf), I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); \
+ write_buf[0] = 0x11; \
+ write_buf[1] = 0b00010000; \
+ i2c_master_write_to_device(i2c_master_port, 0x58, write_buf, sizeof(write_buf), I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); \
+ write_buf[0] = 0x12; \
+ write_buf[1] = 0b11111111; \
+ i2c_master_write_to_device(i2c_master_port, 0x58, write_buf, sizeof(write_buf), I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); \
+ write_buf[0] = 0x13; \
+ write_buf[1] = 0b11111111; \
+ i2c_master_write_to_device(i2c_master_port, 0x58, write_buf, sizeof(write_buf), I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); \
+ \
+ }
+// #define ESP_PANEL_BEGIN_EXPANDER_START_FUNCTION( panel )
+// #define ESP_PANEL_BEGIN_EXPANDER_END_FUNCTION( panel )
+// #define ESP_PANEL_BEGIN_LCD_START_FUNCTION( panel )
+// #define ESP_PANEL_BEGIN_LCD_END_FUNCTION( panel )
+// #define ESP_PANEL_BEGIN_TOUCH_START_FUNCTION( panel )
+// #define ESP_PANEL_BEGIN_TOUCH_END_FUNCTION( panel )
+// #define ESP_PANEL_BEGIN_BACKLIGHT_START_FUNCTION( panel )
+// #define ESP_PANEL_BEGIN_BACKLIGHT_END_FUNCTION( panel )
+// #define ESP_PANEL_BEGIN_END_FUNCTION( panel )
+
+/**
+ * Do not change the following versions, they are used to check if the configurations in this file are compatible with
+ * the current version of `ESP_Panel_Board_Custom.h` in the library. The detailed rules are as follows:
+ *
+ * 1. If the major version is not consistent, then the configurations in this file are incompatible with the library
+ * and must be replaced with the file from the library.
+ * 2. If the minor version is not consistent, this file might be missing some new configurations, which will be set to
+ * default values. It is recommended to replace it with the file from the library.
+ * 3. Even if the patch version is not consistent, it will not affect normal functionality.
+ *
+ */
+#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_MAJOR 0
+#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_MINOR 1
+#define ESP_PANEL_BOARD_CUSTOM_FILE_VERSION_PATCH 1
+
+// *INDENT-OFF*