mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-09 20:41:14 +00:00
feat(lcd): support rgb lcd driver for esp32p4
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// FPS = 80000000/(40+140+40+800)/(4+16+16+1280) = 60Hz
|
||||
// Refresh Rate = 80000000/(40+140+40+800)/(4+16+16+1280) = 60Hz
|
||||
#define MIPI_DSI_DPI_CLK_MHZ 80
|
||||
#define MIPI_DSI_LCD_H_RES 800
|
||||
#define MIPI_DSI_LCD_V_RES 1280
|
||||
|
@@ -1,4 +1,4 @@
|
||||
| Supported Targets | ESP32-S3 |
|
||||
| ----------------- | -------- |
|
||||
| Supported Targets | ESP32-P4 | ESP32-S3 |
|
||||
| ----------------- | -------- | -------- |
|
||||
|
||||
This test app is used to test RGB565 interfaced LCDs.
|
||||
|
@@ -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
|
||||
*/
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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));
|
||||
|
@@ -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()
|
||||
|
@@ -0,0 +1,5 @@
|
||||
CONFIG_IDF_EXPERIMENTAL_FEATURES=y
|
||||
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_MODE_HEX=y
|
||||
CONFIG_SPIRAM_SPEED_200M=y
|
Reference in New Issue
Block a user