#include "sdkconfig.h" #include "dzbj_init.h" #include "dzbj_gpio.h" #include "lcd.h" #include "pages_pwm.h" #ifdef CONFIG_BAJI_BADGE_MODE #include "ui/ui.h" #endif #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_log.h" #define TAG "DZBJ" // 仅硬件+LVGL 初始化(不加载 SquareLine UI,不点亮背光) // // Phase 10: 数字人 EAF 模式(CONFIG_BAJI_BADGE_MODE=n)下跳过 LVGL 初始化 // 让 esp_emote_gfx 接管 panel_handle,避免双框架冲突 void dzbj_hw_display_init(i2c_master_bus_handle_t i2c_bus) { ESP_LOGI(TAG, "开始初始化显示硬件..."); // 1. LCD 硬件初始化(QSPI ST77916)—— 共享 lcd_init(); ESP_LOGI(TAG, "LCD 硬件初始化完成"); #if DZBJ_ENABLE_TOUCH // 2. 传入 I2C 总线句柄(与音频编解码器共享) lcd_set_i2c_bus(i2c_bus); // 3. 触摸控制器初始化(CST816S) touch_init(); #else (void)i2c_bus; ESP_LOGI(TAG, "屏幕触摸已禁用 (DZBJ_ENABLE_TOUCH=0)"); #endif #ifdef CONFIG_BAJI_BADGE_MODE // 4. LVGL 初始化(仅吧唧模式) lvgl_lcd_init(); ESP_LOGI(TAG, "LVGL 初始化完成"); #else // Phase 10: 数字人 EAF 模式下不初始化 LVGL // esp_emote_gfx 会在 ai_chat_screen_init 中接管 panel_handle ESP_LOGI(TAG, "数字人 EAF 模式: 跳过 LVGL 初始化,等待 esp_emote_gfx 接管"); #endif } #ifdef CONFIG_BAJI_BADGE_MODE // 完整初始化(硬件+LVGL + SquareLine UI + 背光)—— 仅吧唧模式 void dzbj_display_init(i2c_master_bus_handle_t i2c_bus) { dzbj_hw_display_init(i2c_bus); // SquareLine UI 初始化 ui_init(); ESP_LOGI(TAG, "UI 初始化完成"); // 等待首帧渲染完成 vTaskDelay(pdMS_TO_TICKS(100)); // 点亮背光 pwm_init(); ESP_LOGI(TAG, "背光已点亮,dzbj 显示模块初始化完成"); } #endif // CONFIG_BAJI_BADGE_MODE