From 025059aadfe080f6d391c4935aee2fcb07d0fb8f Mon Sep 17 00:00:00 2001 From: Y1hsiaochunnn <66012385+Y1hsiaochunnn@users.noreply.github.com> Date: Thu, 26 Feb 2026 20:50:32 +0800 Subject: [PATCH] feat: add waveshare ESP32-S3-Touch-AMOLED-1.75C support (#1786) * feat: add waveshare ESP32-S3-Touch-AMOLED-1.75C support * fix: fixed ESP32-S3-Touch-AMOLED-1.75 config.json --- main/CMakeLists.txt | 6 +++++ main/Kconfig.projbuild | 5 ++++- .../esp32-s3-touch-amoled-1.75/config.h | 17 ++++++++++++-- .../esp32-s3-touch-amoled-1.75/config.json | 9 ++++++++ .../esp32-s3-touch-amoled-1.75.cc | 22 ++++++++++--------- main/idf_component.yml | 1 + 6 files changed, 47 insertions(+), 13 deletions(-) diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index fe479703..218bf2b4 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -315,6 +315,12 @@ elseif(CONFIG_BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75) 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_S3_TOUCH_AMOLED_1_75C) + set(MANUFACTURER "waveshare") + set(BOARD_TYPE "esp32-s3-touch-amoled-1.75") + 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_S3_TOUCH_LCD_1_83) set(MANUFACTURER "waveshare") set(BOARD_TYPE "esp32-s3-touch-lcd-1.83") diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index 01421392..ecd9d215 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -281,6 +281,9 @@ choice BOARD_TYPE config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75 bool "Waveshare ESP32-S3-Touch-AMOLED-1.75" depends on IDF_TARGET_ESP32S3 + config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75C + bool "Waveshare ESP32-S3-Touch-AMOLED-1.75C" + depends on IDF_TARGET_ESP32S3 config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_83 bool "Waveshare ESP32-S3-Touch-LCD-1.83" depends on IDF_TARGET_ESP32S3 @@ -728,7 +731,7 @@ config USE_DEVICE_AEC bool "Enable Device-Side 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_ESP_KORVO2_V3 || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75 || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_83\ + || BOARD_TYPE_LICHUANG_DEV_S3 || 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_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-s3-touch-amoled-1.75/config.h b/main/boards/waveshare/esp32-s3-touch-amoled-1.75/config.h index 40ac5df6..9bfe0265 100644 --- a/main/boards/waveshare/esp32-s3-touch-amoled-1.75/config.h +++ b/main/boards/waveshare/esp32-s3-touch-amoled-1.75/config.h @@ -7,12 +7,25 @@ #define AUDIO_OUTPUT_SAMPLE_RATE 24000 #define AUDIO_INPUT_REFERENCE true - +#if CONFIG_BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75 #define AUDIO_I2S_GPIO_MCLK GPIO_NUM_42 #define AUDIO_I2S_GPIO_WS GPIO_NUM_45 #define AUDIO_I2S_GPIO_BCLK GPIO_NUM_9 #define AUDIO_I2S_GPIO_DIN GPIO_NUM_10 #define AUDIO_I2S_GPIO_DOUT GPIO_NUM_8 +#define EXAMPLE_PIN_NUM_LCD_RST GPIO_NUM_39 +#define PIN_NUM_TOUCH_RST GPIO_NUM_40 +#define PIN_NUM_TOUCH_INT GPIO_NUM_11 +#elif CONFIG_BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75C +#define AUDIO_I2S_GPIO_MCLK GPIO_NUM_16 +#define AUDIO_I2S_GPIO_WS GPIO_NUM_45 +#define AUDIO_I2S_GPIO_BCLK GPIO_NUM_9 +#define AUDIO_I2S_GPIO_DIN GPIO_NUM_10 +#define AUDIO_I2S_GPIO_DOUT GPIO_NUM_8 +#define EXAMPLE_PIN_NUM_LCD_RST GPIO_NUM_1 +#define PIN_NUM_TOUCH_RST GPIO_NUM_2 +#define PIN_NUM_TOUCH_INT GPIO_NUM_11 +#endif #define AUDIO_CODEC_PA_PIN GPIO_NUM_46 #define AUDIO_CODEC_I2C_SDA_PIN GPIO_NUM_15 @@ -29,7 +42,7 @@ #define EXAMPLE_PIN_NUM_LCD_DATA1 GPIO_NUM_5 #define EXAMPLE_PIN_NUM_LCD_DATA2 GPIO_NUM_6 #define EXAMPLE_PIN_NUM_LCD_DATA3 GPIO_NUM_7 -#define EXAMPLE_PIN_NUM_LCD_RST GPIO_NUM_39 + #define DISPLAY_WIDTH 466 #define DISPLAY_HEIGHT 466 #define DISPLAY_MIRROR_X false diff --git a/main/boards/waveshare/esp32-s3-touch-amoled-1.75/config.json b/main/boards/waveshare/esp32-s3-touch-amoled-1.75/config.json index 8bf447b0..86d87859 100644 --- a/main/boards/waveshare/esp32-s3-touch-amoled-1.75/config.json +++ b/main/boards/waveshare/esp32-s3-touch-amoled-1.75/config.json @@ -6,6 +6,15 @@ "name": "esp32-s3-touch-amoled-1.75", "sdkconfig_append": [ "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75=y", + "CONFIG_USE_DEVICE_AEC=y" + ] + }, + { + "name": "esp32-s3-touch-amoled-1.75c", + "sdkconfig_append": [ + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75C=y", "CONFIG_USE_DEVICE_AEC=y" ] } diff --git a/main/boards/waveshare/esp32-s3-touch-amoled-1.75/esp32-s3-touch-amoled-1.75.cc b/main/boards/waveshare/esp32-s3-touch-amoled-1.75/esp32-s3-touch-amoled-1.75.cc index 120fd345..ed24fda3 100644 --- a/main/boards/waveshare/esp32-s3-touch-amoled-1.75/esp32-s3-touch-amoled-1.75.cc +++ b/main/boards/waveshare/esp32-s3-touch-amoled-1.75/esp32-s3-touch-amoled-1.75.cc @@ -1,6 +1,6 @@ #include "wifi_board.h" #include "display/lcd_display.h" -#include "esp_lcd_sh8601.h" +#include "esp_lcd_co5300.h" #include "codecs/box_audio_codec.h" #include "application.h" @@ -58,7 +58,7 @@ public: #define LCD_OPCODE_READ_CMD (0x03ULL) #define LCD_OPCODE_WRITE_COLOR (0x32ULL) -static const sh8601_lcd_init_cmd_t vendor_specific_init[] = { +static const co5300_lcd_init_cmd_t vendor_specific_init[] = { // set display to qspi mode {0xFE, (uint8_t[]){0x20}, 1, 0}, {0x19, (uint8_t[]){0x10}, 1, 0}, @@ -223,13 +223,13 @@ private: #endif } - void InitializeSH8601Display() { + void InitializeDisplay() { esp_lcd_panel_io_handle_t panel_io = nullptr; esp_lcd_panel_handle_t panel = nullptr; // 液晶屏控制IO初始化 ESP_LOGD(TAG, "Install panel IO"); - esp_lcd_panel_io_spi_config_t io_config = SH8601_PANEL_IO_QSPI_CONFIG( + esp_lcd_panel_io_spi_config_t io_config = CO5300_PANEL_IO_QSPI_CONFIG( EXAMPLE_PIN_NUM_LCD_CS, nullptr, nullptr); @@ -237,9 +237,9 @@ private: // 初始化液晶屏驱动芯片 ESP_LOGD(TAG, "Install LCD driver"); - const sh8601_vendor_config_t vendor_config = { + const co5300_vendor_config_t vendor_config = { .init_cmds = &vendor_specific_init[0], - .init_cmds_size = sizeof(vendor_specific_init) / sizeof(sh8601_lcd_init_cmd_t), + .init_cmds_size = sizeof(vendor_specific_init) / sizeof(co5300_lcd_init_cmd_t), .flags = { .use_qspi_interface = 1, }}; @@ -249,7 +249,7 @@ private: panel_config.rgb_ele_order = LCD_RGB_ELEMENT_ORDER_RGB; panel_config.bits_per_pixel = 16; panel_config.vendor_config = (void* )&vendor_config; - ESP_ERROR_CHECK(esp_lcd_new_panel_sh8601(panel_io, &panel_config, &panel)); + ESP_ERROR_CHECK(esp_lcd_new_panel_co5300(panel_io, &panel_config, &panel)); esp_lcd_panel_set_gap(panel, 0x06, 0); esp_lcd_panel_reset(panel); esp_lcd_panel_init(panel); @@ -267,8 +267,8 @@ private: esp_lcd_touch_config_t tp_cfg = { .x_max = DISPLAY_WIDTH - 1, .y_max = DISPLAY_HEIGHT - 1, - .rst_gpio_num = GPIO_NUM_40, - .int_gpio_num = GPIO_NUM_11, + .rst_gpio_num = PIN_NUM_TOUCH_RST, + .int_gpio_num = PIN_NUM_TOUCH_INT, .levels = { .reset = 0, .interrupt = 0, @@ -309,10 +309,12 @@ public: WaveshareEsp32s3TouchAMOLED1inch75() : boot_button_(BOOT_BUTTON_GPIO) { InitializePowerSaveTimer(); InitializeCodecI2c(); +#if CONFIG_BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75 InitializeTca9554(); +#endif InitializeAxp2101(); InitializeSpi(); - InitializeSH8601Display(); + InitializeDisplay(); InitializeTouch(); InitializeButtons(); InitializeTools(); diff --git a/main/idf_component.yml b/main/idf_component.yml index 57cc468a..4bb061e7 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -1,6 +1,7 @@ ## IDF Component Manager Manifest File dependencies: waveshare/esp_lcd_sh8601: 1.0.2 + espressif/esp_lcd_co5300: ^2.0.3 espressif/esp_lcd_ili9341: ==1.2.0 espressif/esp_lcd_gc9a01: ==2.0.1 espressif/esp_lcd_st77916: ^1.0.1