From 8d171a749c273ffe95a6733077c47d46d6141e9d Mon Sep 17 00:00:00 2001 From: Y1hsiaochunnn Date: Tue, 30 Jun 2026 15:30:22 +0800 Subject: [PATCH] Add Waveshare ESP32-P4-WIFI6-Touch-LCD-5 board --- main/CMakeLists.txt | 6 +++ main/Kconfig.projbuild | 5 ++- .../esp32-p4-wifi6-touch-lcd/README.md | 1 + .../esp32-p4-wifi6-touch-lcd/config.h | 7 ++++ .../esp32-p4-wifi6-touch-lcd/config.json | 30 ++++++++++++++ .../esp32-p4-wifi6-touch-lcd.cc | 40 +++++++++++++++++++ main/idf_component.yml | 4 ++ 7 files changed, 92 insertions(+), 1 deletion(-) diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 170cb18f..80d98fe8 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -531,6 +531,12 @@ elseif(CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4_3) set(BUILTIN_TEXT_FONT font_puhui_basic_30_4) set(BUILTIN_ICON_FONT font_awesome_30_4) set(DEFAULT_EMOJI_COLLECTION twemoji_64) +elseif(CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_5) + set(MANUFACTURER "waveshare") + set(BOARD_TYPE "esp32-p4-wifi6-touch-lcd") + set(BUILTIN_TEXT_FONT font_puhui_basic_30_4) + set(BUILTIN_ICON_FONT font_awesome_30_4) + set(DEFAULT_EMOJI_COLLECTION twemoji_64) elseif(CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7B) set(MANUFACTURER "waveshare") set(BOARD_TYPE "esp32-p4-wifi6-touch-lcd") diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index 030b7141..53d67a7e 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -426,6 +426,9 @@ choice BOARD_TYPE config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4_3 bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-4.3" depends on IDF_TARGET_ESP32P4 + config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_5 + bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-5" + depends on IDF_TARGET_ESP32P4 config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7B bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-7B" depends on IDF_TARGET_ESP32P4 @@ -920,7 +923,7 @@ config USE_DEVICE_AEC default n depends on USE_AUDIO_PROCESSOR && (BOARD_TYPE_ESP_BOX_3 || BOARD_TYPE_ESP_BOX || BOARD_TYPE_ESP_BOX_LITE \ || BOARD_TYPE_LICHUANG_DEV_S3 || BOARD_TYPE_RYMCU_BIGSMART || BOARD_TYPE_ESP_KORVO2_V3 || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75|| BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75C || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_83\ - || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_2_06 || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4_3 \ + || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_2_06 || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4_3 || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_5 \ || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7B \ || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_3_4C || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4C || BOARD_TYPE_ESP_S3_LCD_EV_Board_2 || BOARD_TYPE_YUNLIAO_S3 \ || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7 || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_8 || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_10_1 \ diff --git a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/README.md b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/README.md index 3f5f1d53..fa1690c5 100644 --- a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/README.md +++ b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/README.md @@ -10,6 +10,7 @@ Configuration in `menuconfig`. Selection Board Type `Xiaozhi Assistant --> Board Type` - Waveshare ESP32-P4-WIFI6-Touch-LCD-4B - Waveshare ESP32-P4-WIFI6-Touch-LCD-4.3 +- Waveshare ESP32-P4-WIFI6-Touch-LCD-5 - Waveshare ESP32-P4-WIFI6-Touch-LCD-7B - Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C - Waveshare ESP32-P4-WIFI6-Touch-LCD-4C diff --git a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.h b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.h index 057f3d50..9b4c30dd 100644 --- a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.h +++ b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.h @@ -36,6 +36,13 @@ #define DISPLAY_BACKLIGHT_PIN GPIO_NUM_26 #define DISPLAY_BACKLIGHT_OUTPUT_INVERT true #define LCD_MIPI_DSI_LANE_BITRATE_MBPS (500) +#elif CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_5 +#define DISPLAY_WIDTH (720) +#define DISPLAY_HEIGHT (1280) +#define PIN_NUM_LCD_RST GPIO_NUM_27 +#define DISPLAY_BACKLIGHT_PIN GPIO_NUM_26 +#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false +#define LCD_MIPI_DSI_LANE_BITRATE_MBPS (700) #elif CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7B #define DISPLAY_WIDTH (1024) #define DISPLAY_HEIGHT (600) diff --git a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.json b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.json index a434efe6..cc8c21dc 100644 --- a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.json +++ b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.json @@ -62,6 +62,36 @@ "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y" ] }, + { + "name": "esp32-p4-wifi6-touch-lcd-5", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_5=y", + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_USE_DEVICE_AEC=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp32-p4-wifi6-touch-lcd-5-p4x", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_5=y", + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_USE_DEVICE_AEC=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y" + ] + }, { "name": "esp32-p4-wifi6-touch-lcd-7b", "sdkconfig_append": [ diff --git a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/esp32-p4-wifi6-touch-lcd.cc b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/esp32-p4-wifi6-touch-lcd.cc index b493aac1..5a7f76ea 100644 --- a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/esp32-p4-wifi6-touch-lcd.cc +++ b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/esp32-p4-wifi6-touch-lcd.cc @@ -17,6 +17,8 @@ #include "esp_lcd_st7703.h" #elif CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4_3 #include "esp_lcd_st7701.h" +#elif CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_5 +#include "esp_lcd_hx8394.h" #elif CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7B #include "esp_lcd_ek79007.h" #elif CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_3_4C || CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4C \ @@ -178,6 +180,44 @@ private: .vendor_config = &vendor_config, }; esp_lcd_new_panel_st7701(io, &lcd_dev_config, &disp_panel); +#elif CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_5 + esp_lcd_dpi_panel_config_t dpi_config = { + .dpi_clk_src = MIPI_DSI_DPI_CLK_SRC_DEFAULT, + .dpi_clock_freq_mhz = 58, + .pixel_format = LCD_COLOR_PIXEL_FORMAT_RGB565, + .num_fbs = 1, + .video_timing = { + .h_size = DISPLAY_WIDTH, + .v_size = DISPLAY_HEIGHT, + .hsync_pulse_width = 20, + .hsync_back_porch = 20, + .hsync_front_porch = 40, + .vsync_pulse_width = 4, + .vsync_back_porch = 10, + .vsync_front_porch = 24, + }, + .flags = { + .use_dma2d = true, + }, + }; + hx8394_vendor_config_t vendor_config = { + .mipi_config = { + .dsi_bus = mipi_dsi_bus, + .dpi_config = &dpi_config, + .lane_num = 2, + }, + }; + + const esp_lcd_panel_dev_config_t lcd_dev_config = { + .reset_gpio_num = PIN_NUM_LCD_RST, + .rgb_ele_order = LCD_RGB_ELEMENT_ORDER_RGB, + .bits_per_pixel = 16, + .flags = { + .reset_active_high = true, + }, + .vendor_config = &vendor_config, + }; + esp_lcd_new_panel_hx8394(io, &lcd_dev_config, &disp_panel); #elif CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7B esp_lcd_dpi_panel_config_t dpi_config = { .dpi_clk_src = MIPI_DSI_DPI_CLK_SRC_DEFAULT, diff --git a/main/idf_component.yml b/main/idf_component.yml index acf2de73..f87e882f 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -80,6 +80,10 @@ dependencies: version: '*' rules: - if: target in [esp32p4] + waveshare/esp_lcd_hx8394: + version: '*' + rules: + - if: target in [esp32p4] waveshare/esp_lcd_st7703: version: '*' rules: