Skip to content

Commit

Permalink
Add new board Elecrow CrowPanel 7.0" (#71)
Browse files Browse the repository at this point in the history
* Add new board Elecrow CrowPanel 7.0"

* Update CROWPANEL_7_0.h

* Update Board_Instructions.md

Recommended Configurations in the Arduino IDE

* pre-commit

---------

Co-authored-by: Ludovic BOUÉ <[email protected]>
  • Loading branch information
lboue and web-flow authored Jul 11, 2024
1 parent 4fcca49 commit b1b2465
Show file tree
Hide file tree
Showing 10 changed files with 294 additions and 0 deletions.
7 changes: 7 additions & 0 deletions ESP_Panel_Board_Supported.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@
// #define BOARD_ESP32_S3_LCD_EV_BOARD_2_V1_5
// #define BOARD_ESP32_S3_USB_OTG

/*
* Elecrow (https://www.elecrow.com):
*
* - ELECROW_CROWPANEL_7_0: https://www.elecrow.com/esp32-display-7-inch-hmi-display-rgb-tft-lcd-touch-screen-support-lvgl.html
*/
// #define BOARD_ELECROW_CROWPANEL_7_0

/*
* M5Stack (https://m5stack.com/):
*
Expand Down
7 changes: 7 additions & 0 deletions docs/Board_Instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@
| <img src="https://docs.espressif.com/projects/esp-dev-kits/en/latest/_images/ESP32-S3-LCD-EV-Board_800x480.png" width="150"> | [ESP32-S3-LCD-EV-Board-2](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-lcd-ev-board/index.html) | RGB | ST7262E43 | 800x480 | I2C | GT1151 |
| <img src="https://docs.espressif.com/projects/esp-dev-kits/en/latest/_images/pic_product_esp32_s3_otg.png" width="150"> | [ESP32-S3-USB-OTG](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-usb-otg/index.html) | SPI | ST7789 | 240x240 | - | - |

### [Elecrow](https://www.elecrow.com/)

| **Picture** | **Name** | **LCD Bus** | **LCD Controller** | **LCD resolution** | **Touch Bus** | **Touch Controller** |
| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------: | :--------------: | :--------------: | :----------------: | :-----------: | :------------------: |
| <img src="https://www.elecrow.com/media/catalog/product/cache/acf3559c3a3e20af42aec3d2d8cc99f6/e/s/esp32_7inch_display_1_1.png" width="150"> | [CrowPanel 7.0"](https://www.elecrow.com/esp32-display-7-inch-hmi-display-rgb-tft-lcd-touch-screen-support-lvgl.html) | RGB | EK9716BD3 & EK73002ACGB | 800x480 | I2C | GT911 |

### [M5Stack](https://m5stack.com/)

| **Picture** | **Name** | **LCD Bus** | **LCD Controller** | **LCD resolution** | **Touch Bus** | **Touch Controller** |
Expand Down Expand Up @@ -52,6 +58,7 @@ Below are recommended configurations for developing GUI applications on differen
| 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) |
| ElecrowCrowPanel 7.0" | ESP32S3 Dev Module | OPI | QIO 80MHz | 4MB | Disabled | Huge App (3MB) |

**Notes:**

Expand Down
7 changes: 7 additions & 0 deletions examples/LVGL/v8/Porting/ESP_Panel_Board_Supported.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@
// #define BOARD_ESP32_S3_LCD_EV_BOARD_2_V1_5
// #define BOARD_ESP32_S3_USB_OTG

/*
* Elecrow (https://www.elecrow.com):
*
* - ELECROW_CROWPANEL_7_0: https://www.elecrow.com/esp32-display-7-inch-hmi-display-rgb-tft-lcd-touch-screen-support-lvgl.html
*/
// #define BOARD_ELECROW_CROWPANEL_7_0

/*
* M5Stack (https://m5stack.com/):
*
Expand Down
7 changes: 7 additions & 0 deletions examples/LVGL/v8/Rotation/ESP_Panel_Board_Supported.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@
// #define BOARD_ESP32_S3_LCD_EV_BOARD_2_V1_5
// #define BOARD_ESP32_S3_USB_OTG

/*
* Elecrow (https://www.elecrow.com):
*
* - ELECROW_CROWPANEL_7_0: https://www.elecrow.com/esp32-display-7-inch-hmi-display-rgb-tft-lcd-touch-screen-support-lvgl.html
*/
// #define BOARD_ELECROW_CROWPANEL_7_0

/*
* M5Stack (https://m5stack.com/):
*
Expand Down
7 changes: 7 additions & 0 deletions examples/Panel/PanelTest/ESP_Panel_Board_Supported.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@
// #define BOARD_ESP32_S3_LCD_EV_BOARD_2_V1_5
// #define BOARD_ESP32_S3_USB_OTG

/*
* Elecrow (https://www.elecrow.com):
*
* - ELECROW_CROWPANEL_7_0: https://www.elecrow.com/esp32-display-7-inch-hmi-display-rgb-tft-lcd-touch-screen-support-lvgl.html
*/
// #define BOARD_ELECROW_CROWPANEL_7_0

/*
* M5Stack (https://m5stack.com/):
*
Expand Down
7 changes: 7 additions & 0 deletions examples/PlatformIO/src/ESP_Panel_Board_Supported.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@
// #define BOARD_ESP32_S3_LCD_EV_BOARD_2_V1_5
// #define BOARD_ESP32_S3_USB_OTG

/*
* Elecrow (https://www.elecrow.com):
*
* - ELECROW_CROWPANEL_7_0: https://www.elecrow.com/esp32-display-7-inch-hmi-display-rgb-tft-lcd-touch-screen-support-lvgl.html
*/
// #define BOARD_ELECROW_CROWPANEL_7_0

/*
* M5Stack (https://m5stack.com/):
*
Expand Down
7 changes: 7 additions & 0 deletions examples/SquareLine/v8/Porting/ESP_Panel_Board_Supported.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@
// #define BOARD_ESP32_S3_LCD_EV_BOARD_2_V1_5
// #define BOARD_ESP32_S3_USB_OTG

/*
* Elecrow (https://www.elecrow.com):
*
* - ELECROW_CROWPANEL_7_0: https://www.elecrow.com/esp32-display-7-inch-hmi-display-rgb-tft-lcd-touch-screen-support-lvgl.html
*/
// #define BOARD_ELECROW_CROWPANEL_7_0

/*
* M5Stack (https://m5stack.com/):
*
Expand Down
7 changes: 7 additions & 0 deletions examples/SquareLine/v8/WiFiClock/ESP_Panel_Board_Supported.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@
// #define BOARD_ESP32_S3_LCD_EV_BOARD_2_V1_5
// #define BOARD_ESP32_S3_USB_OTG

/*
* Elecrow (https://www.elecrow.com):
*
* - ELECROW_CROWPANEL_7_0: https://www.elecrow.com/esp32-display-7-inch-hmi-display-rgb-tft-lcd-touch-screen-support-lvgl.html
*/
// #define BOARD_ELECROW_CROWPANEL_7_0

/*
* M5Stack (https://m5stack.com/):
*
Expand Down
3 changes: 3 additions & 0 deletions src/board/ESP_PanelBoard.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@
#include "board/espressif/ESP32_S3_LCD_EV_BOARD_2_V1_5.h"
#elif defined(BOARD_ESP32_S3_USB_OTG) || CONFIG_BOARD_ESP32_S3_USB_OTG
#include "board/espressif/ESP32_S3_USB_OTG.h"
/* Elecrow */
#elif defined(BOARD_ELECROW_CROWPANEL_7_0) || CONFIG_BOARD_ELECROW_CROWPANEL_7_0
#include "board/elecrow/CROWPANEL_7_0.h"
/* M5Stack */
#elif defined(BOARD_M5STACK_M5CORE2) || CONFIG_BOARD_M5STACK_M5CORE2
#include "board/m5stack/M5CORE2.h"
Expand Down
235 changes: 235 additions & 0 deletions src/board/elecrow/CROWPANEL_7_0.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/

#pragma once

// *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.
*/
#define ESP_PANEL_LCD_NAME EK9716BD3

/* LCD resolution in pixels */
#define ESP_PANEL_LCD_WIDTH (800)
#define ESP_PANEL_LCD_HEIGHT (480)

/* 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.
*/
#define ESP_PANEL_LCD_BUS_SKIP_INIT_HOST (1) // 0/1
/**
* LCD Bus Type.
*/
#define ESP_PANEL_LCD_BUS_TYPE (ESP_PANEL_BUS_TYPE_RGB)
/**
* 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_RGB

#define ESP_PANEL_LCD_RGB_CLK_HZ (14 * 1000 * 1000)
#define ESP_PANEL_LCD_RGB_HPW (48) // Hsync pulse width x
#define ESP_PANEL_LCD_RGB_HBP (40) // Hsync back porch x
#define ESP_PANEL_LCD_RGB_HFP (40) // Hsync front porch x
#define ESP_PANEL_LCD_RGB_VPW (31) // Vsync pulse width x
#define ESP_PANEL_LCD_RGB_VBP (13) // Vsync back porch x
#define ESP_PANEL_LCD_RGB_VFP (1) // Vsync front porch
#define ESP_PANEL_LCD_RGB_PCLK_ACTIVE_NEG (1) // 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 (ESP_PANEL_LCD_WIDTH * 10)
// 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`
#define ESP_PANEL_LCD_RGB_IO_HSYNC (39)
#define ESP_PANEL_LCD_RGB_IO_VSYNC (40)
#define ESP_PANEL_LCD_RGB_IO_DE (41) // -1 if not used
#define ESP_PANEL_LCD_RGB_IO_PCLK (0)
#define ESP_PANEL_LCD_RGB_IO_DISP (-1) // -1 if not used
#define ESP_PANEL_LCD_RGB_IO_DATA0 (15)
#define ESP_PANEL_LCD_RGB_IO_DATA1 (7)
#define ESP_PANEL_LCD_RGB_IO_DATA2 (6)
#define ESP_PANEL_LCD_RGB_IO_DATA3 (5)
#define ESP_PANEL_LCD_RGB_IO_DATA4 (4)
#define ESP_PANEL_LCD_RGB_IO_DATA5 (9)
#define ESP_PANEL_LCD_RGB_IO_DATA6 (46)
#define ESP_PANEL_LCD_RGB_IO_DATA7 (3)
#if ESP_PANEL_LCD_RGB_DATA_WIDTH > 8
#define ESP_PANEL_LCD_RGB_IO_DATA8 (8)
#define ESP_PANEL_LCD_RGB_IO_DATA9 (16)
#define ESP_PANEL_LCD_RGB_IO_DATA10 (1)
#define ESP_PANEL_LCD_RGB_IO_DATA11 (14)
#define ESP_PANEL_LCD_RGB_IO_DATA12 (21)
#define ESP_PANEL_LCD_RGB_IO_DATA13 (47)
#define ESP_PANEL_LCD_RGB_IO_DATA14 (48)
#define ESP_PANEL_LCD_RGB_IO_DATA15 (45)
#endif

#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 (24) // 8/16/18/24
/*
* LCD RGB Element Order. Choose one of the following:
* - 0: RGB
* - 1: BGR
*/
#define ESP_PANEL_LCD_BGR_ORDER (0) // 0/1
#define ESP_PANEL_LCD_INEVRT_COLOR (0) // 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.
*/
#define ESP_PANEL_TOUCH_NAME GT911

/* Touch resolution in pixels */
#define ESP_PANEL_TOUCH_H_RES (ESP_PANEL_LCD_HEIGHT) // Typically set to the same value as the width of LCD
#define ESP_PANEL_TOUCH_V_RES (ESP_PANEL_LCD_WIDTH) // 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.
*/
#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 (0) // 0/1
#define ESP_PANEL_TOUCH_I2C_SDA_PULLUP (0) // 0/1
#define ESP_PANEL_TOUCH_I2C_IO_SCL (20)
#define ESP_PANEL_TOUCH_I2C_IO_SDA (19)
#endif

#endif

/* 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 (38)
#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 (1) // 0/1
#if ESP_PANEL_USE_BACKLIGHT
/* IO num of backlight pin */
#define ESP_PANEL_BACKLIGHT_IO (2)
#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 (0) // 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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////// Please utilize the following macros to execute any additional code if required. //////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// #define ESP_PANEL_BEGIN_START_FUNCTION( panel )
// #define ESP_PANEL_BEGIN_EXPANDER_START_FUNCTION( panel )
// #define ESP_PANEL_BEGIN_EXPANDER_END_FUNCTION( panel )
#define ESP_PANEL_BEGIN_LCD_START_FUNCTION( panel ) \

{ \
/* Maintain the touch INT signal in a low state during the reset process to set its I2C address to `0x5D` */ \
gpio_set_direction((gpio_num_t)ESP_PANEL_TOUCH_IO_INT, GPIO_MODE_OUTPUT); \
gpio_set_level((gpio_num_t)ESP_PANEL_TOUCH_IO_INT, 0); \
vTaskDelay(pdMS_TO_TICKS(10)); \
}

// #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 )

// *INDENT-OFF*

0 comments on commit b1b2465

Please sign in to comment.