From d963e120db449b3cc98ef6ea1d21218361e4d80c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=9D=B0?= <51323906+tangjie133@users.noreply.github.com> Date: Wed, 14 Jan 2026 17:11:25 +0800 Subject: [PATCH] Fix abnormal screen and camera display on DF K10 when running on Box (#1648) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 解决屏幕和摄像头无法初始化问题 * 修改摄像头时钟 * change readme * chang config --- main/boards/df-k10/README.md | 18 +++++++++++++++++- main/boards/df-k10/config.h | 2 +- main/boards/df-k10/config.json | 6 +++++- main/boards/df-k10/df_k10_board.cc | 11 ++++++++--- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/main/boards/df-k10/README.md b/main/boards/df-k10/README.md index 310257b0..9bbc2784 100644 --- a/main/boards/df-k10/README.md +++ b/main/boards/df-k10/README.md @@ -30,8 +30,24 @@ Xiaozhi Assistant -> Board Type -> DFRobot 行空板 K10 Component config -> ESP PSRAM -> SPI RAM config -> Mode (QUAD/OCT) -> Octal Mode PSRAM ``` +**使能摄像头缓冲区大小端交换:** + +``` +Xiaozhi Assistant -> Camera Configuration -> Enable software camera buffer endianness swapping +``` + +**配置摄像头:** + +``` +Component config -> Espressif Camera Sensors Configurations -> Camera Sensor Configuration -> Select and Set Camera Sensor -> GC2145 -> Select default output format for DVP interface (RGB565 800x600 20fps, DVP 8-bit, 20M input) -> RGB565 800x600 20fps, DVP 8-bit, 20M input + +``` + **编译:** ```bash idf.py build -``` \ No newline at end of file +``` + + + diff --git a/main/boards/df-k10/config.h b/main/boards/df-k10/config.h index 5f8ad773..85705633 100644 --- a/main/boards/df-k10/config.h +++ b/main/boards/df-k10/config.h @@ -71,6 +71,6 @@ #define CAMERA_PIN_HREF HREF_GPIO_NUM #define CAMERA_PIN_PCLK PCLK_GPIO_NUM -#define XCLK_FREQ_HZ 20000000 +#define XCLK_FREQ_HZ 6000000 #endif // _BOARD_CONFIG_H_ diff --git a/main/boards/df-k10/config.json b/main/boards/df-k10/config.json index 55137d40..d6de6fe1 100644 --- a/main/boards/df-k10/config.json +++ b/main/boards/df-k10/config.json @@ -4,7 +4,11 @@ { "name": "df-k10", "sdkconfig_append": [ - "CONFIG_SPIRAM_MODE_OCT=y" + "CONFIG_SPIRAM_MODE_OCT=y", + "CONFIG_CAMERA_GC2145=y", + "CONFIG_CAMERA_GC2145_AUTO_DETECT_DVP_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_GC2145_DVP_RGB565_800X600_20FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y" ] } ] diff --git a/main/boards/df-k10/df_k10_board.cc b/main/boards/df-k10/df_k10_board.cc index de344b2b..43b41357 100644 --- a/main/boards/df-k10/df_k10_board.cc +++ b/main/boards/df-k10/df_k10_board.cc @@ -84,12 +84,17 @@ private: if (ret != ESP_OK) { ESP_LOGE(TAG, "Print state failed: %s", esp_err_to_name(ret)); } - ret = esp_io_expander_set_dir(io_expander, IO_EXPANDER_PIN_NUM_0, - IO_EXPANDER_OUTPUT); + + ret = esp_io_expander_set_dir(io_expander, IO_EXPANDER_PIN_NUM_0 | IO_EXPANDER_PIN_NUM_1, IO_EXPANDER_OUTPUT); if (ret != ESP_OK) { ESP_LOGE(TAG, "Set direction failed: %s", esp_err_to_name(ret)); } - ret = esp_io_expander_set_level(io_expander, 0, 1); + ret = esp_io_expander_set_level(io_expander, IO_EXPANDER_PIN_NUM_0 | IO_EXPANDER_PIN_NUM_1, 0); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Set level failed: %s", esp_err_to_name(ret)); + } + vTaskDelay(100 / portTICK_PERIOD_MS); + ret = esp_io_expander_set_level(io_expander, IO_EXPANDER_PIN_NUM_0 | IO_EXPANDER_PIN_NUM_1, 1); if (ret != ESP_OK) { ESP_LOGE(TAG, "Set level failed: %s", esp_err_to_name(ret)); }