feat(lcd): support rgb lcd driver for esp32p4

This commit is contained in:
morris
2024-10-16 19:06:40 +08:00
parent 5b8db196f8
commit efcb91b47e
25 changed files with 683 additions and 394 deletions

View File

@@ -1,4 +1,4 @@
| Supported Targets | ESP32-S3 |
| ----------------- | -------- |
| Supported Targets | ESP32-P4 | ESP32-S3 |
| ----------------- | -------- | -------- |
This test app is used to test RGB565 interfaced LCDs.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: CC0-1.0
*/

View File

@@ -11,6 +11,16 @@ extern "C" {
#define TEST_LCD_H_RES 800
#define TEST_LCD_V_RES 480
#define TEST_LCD_HSYNC 1
#define TEST_LCD_HBP 40
#define TEST_LCD_HFP 20
#define TEST_LCD_VSYNC 1
#define TEST_LCD_VBP 10
#define TEST_LCD_VFP 5
#define TEST_LCD_PIXEL_CLOCK_HZ (18 * 1000 * 1000)
#if CONFIG_IDF_TARGET_ESP32S3
#define TEST_LCD_VSYNC_GPIO 3
#define TEST_LCD_HSYNC_GPIO 46
@@ -34,7 +44,33 @@ extern "C" {
#define TEST_LCD_DATA15_GPIO 40 // R4
#define TEST_LCD_DISP_EN_GPIO -1
#define TEST_LCD_PIXEL_CLOCK_HZ (18 * 1000 * 1000)
#elif CONFIG_IDF_TARGET_ESP32P4
#define TEST_LCD_VSYNC_GPIO 41
#define TEST_LCD_HSYNC_GPIO 39
#define TEST_LCD_DE_GPIO 43
#define TEST_LCD_PCLK_GPIO 33
#define TEST_LCD_DATA0_GPIO 40 // B0
#define TEST_LCD_DATA1_GPIO 42 // B1
#define TEST_LCD_DATA2_GPIO 27 // B2
#define TEST_LCD_DATA3_GPIO 29 // B3
#define TEST_LCD_DATA4_GPIO 31 // B4
#define TEST_LCD_DATA5_GPIO 21 // G0
#define TEST_LCD_DATA6_GPIO 23 // G1
#define TEST_LCD_DATA7_GPIO 26 // G2
#define TEST_LCD_DATA8_GPIO 28 // G3
#define TEST_LCD_DATA9_GPIO 30 // G4
#define TEST_LCD_DATA10_GPIO 32 // G5
#define TEST_LCD_DATA11_GPIO 6 // R0
#define TEST_LCD_DATA12_GPIO 0 // R1
#define TEST_LCD_DATA13_GPIO 15 // R2
#define TEST_LCD_DATA14_GPIO 17 // R3
#define TEST_LCD_DATA15_GPIO 19 // R4
#define TEST_LCD_DISP_EN_GPIO -1
#else
#error "Unsupported target"
#endif
#ifdef __cplusplus
}

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -62,12 +62,12 @@ static esp_lcd_panel_handle_t test_rgb_panel_initialization(size_t data_width, s
.pclk_hz = TEST_LCD_PIXEL_CLOCK_HZ,
.h_res = TEST_LCD_H_RES,
.v_res = TEST_LCD_V_RES,
.hsync_back_porch = 68,
.hsync_front_porch = 20,
.hsync_pulse_width = 5,
.vsync_back_porch = 18,
.vsync_front_porch = 4,
.vsync_pulse_width = 1,
.hsync_back_porch = TEST_LCD_HBP,
.hsync_front_porch = TEST_LCD_HFP,
.hsync_pulse_width = TEST_LCD_HSYNC,
.vsync_back_porch = TEST_LCD_VBP,
.vsync_front_porch = TEST_LCD_VFP,
.vsync_pulse_width = TEST_LCD_VSYNC,
},
.flags.fb_in_psram = 1, // allocate frame buffer in PSRAM
.flags.refresh_on_demand = refresh_on_demand,
@@ -99,6 +99,7 @@ TEST_CASE("lcd_rgb_panel_stream_mode", "[lcd]")
int y_start = esp_random() % (TEST_LCD_V_RES - 100);
memset(img, color_byte, TEST_IMG_SIZE);
esp_lcd_panel_draw_bitmap(panel_handle, x_start, y_start, x_start + 100, y_start + 100, img);
vTaskDelay(pdMS_TO_TICKS(10));
}
printf("delete RGB panel\r\n");
TEST_ESP_OK(esp_lcd_panel_del(panel_handle));

View File

@@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import pytest
from pytest_embedded import Dut
@@ -15,5 +14,19 @@ from pytest_embedded import Dut
],
indirect=True,
)
def test_rgb_lcd(dut: Dut) -> None:
def test_rgb_lcd_esp32s3(dut: Dut) -> None:
dut.run_all_single_board_cases()
@pytest.mark.esp32p4
@pytest.mark.generic
@pytest.mark.parametrize(
'config',
[
'iram_safe',
'release',
],
indirect=True,
)
def test_rgb_lcd_esp32p4(dut: Dut) -> None:
dut.run_all_single_board_cases()

View File

@@ -0,0 +1,5 @@
CONFIG_IDF_EXPERIMENTAL_FEATURES=y
CONFIG_SPIRAM=y
CONFIG_SPIRAM_MODE_HEX=y
CONFIG_SPIRAM_SPEED_200M=y