#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" // 仅 LCD/Touch 硬件初始化,不启动 LVGL。 // 双模式固件中 CONFIG_BAJI_BADGE_MODE 只是"支持电子吧唧"的编译开关, // 不能用它判断当前运行模式;AI/EAF/配网路径必须避免初始化 LVGL。 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 ESP_LOGI(TAG, "硬件初始化完成,跳过 LVGL,等待上层显示管线接管"); } #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); // 电子吧唧模式才启动 LVGL + SquareLine UI。 lvgl_lcd_init(); ESP_LOGI(TAG, "LVGL 初始化完成"); // SquareLine UI 初始化 ui_init(); ESP_LOGI(TAG, "UI 初始化完成"); // 等待首帧渲染完成 vTaskDelay(pdMS_TO_TICKS(100)); // 点亮背光 pwm_init(); ESP_LOGI(TAG, "背光已点亮,dzbj 显示模块初始化完成"); } #endif // CONFIG_BAJI_BADGE_MODE