Rdzleo c24a9bc162 feat: 集成 dzbj LVGL 显示模块 + 配网模式内存优化
阶段1: 将 dzbj 项目的 LVGL 8.3.11 LCD 显示集成到 AI小智 主项目,
开机显示 ScreenHome 界面,同时优化配网模式下的内存使用,
确保 WiFi+BLE+LVGL 三者共存运行。

## 新增功能

### dzbj 显示模块集成
- 新增 main/dzbj/ 目录,移植 LCD 驱动(ST77916 QSPI)、触摸驱动(CST816S)、
  LVGL 初始化和 SquareLine Studio UI 界面
- I2C 总线共享:dzbj 触摸控制器复用主项目的 I2C_NUM_1 总线
- GPIO 冲突解决:LED(GPIO21)、Touch1(GPIO1)、Touch4(GPIO7) 改为 NC,
  电池 ADC 从 GPIO6 改为 GPIO3
- 添加 LVGL、esp_lcd_st77916、esp_lcd_touch_cst816s 等组件依赖
- managed_components 纳入版本管理

### 配网模式轻量化启动
- BoxAudioCodec: 新增 output_only 模式,仅创建 I2S TX 通道(省 ~13KB DMA)
  跳过 ES7210 ADC 初始化(省 ~2-4KB)
- AudioCodec: 新增 StartOutputOnly() 方法,仅启用扬声器输出
- Application: 配网模式跳过 Opus 编码器、输入重采样器、协议初始化、
  天气位置检测等网络业务
- 板级构造函数: 配网模式跳过电池检测、IMU传感器、PowerSaveTimer

### WifiBoard 配网流程修复
- NeedsProvisioning() 静态方法: 读取 NVS force_ap 和 SSID 列表,
  用于提前判断配网模式
- force_ap 竞态修复: 构造函数不再清零 force_ap,改在 StartNetwork() 清零,
  确保 NeedsProvisioning() 能正确读到 force_ap=1
- Application 缓存 provisioning_mode_ 成员变量,避免重复读 NVS

### BLE 配网重启修复
- 配网成功后用 esp_timer 延迟重启替代 xTaskCreate,
  避免内存紧张时任务创建失败导致设备不重启
- 注释掉 WiFi 连接成功后的 MAC 地址发送步骤

### sdkconfig 内存优化
- BT_ALLOCATION_FROM_SPIRAM_FIRST=y (BLE 动态分配优先 PSRAM)
- SPIRAM_MALLOC_RESERVE_INTERNAL=32768
- NVS_ALLOCATE_CACHE_IN_SPIRAM=y
- WiFi 静态缓冲区数量优化 (RX=10, TX=8)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 17:07:51 +08:00

1 line
1.7 KiB
JSON

{"version": "1.0", "algorithm": "sha256", "created_at": "2025-05-21T16:22:44.538744+00:00", "files": [{"path": "CMakeLists.txt", "size": 189, "hash": "d9e6afb7ee86418f0e7b00bc2130d0004cb2a19ffb33f33dd73fa2e95c307d25"}, {"path": "CHANGELOG.md", "size": 412, "hash": "3a0ee035cb4e3784eaba660eca2e713deeff7d145531fb0f7ffd8ce6e8938682"}, {"path": "idf_component.yml", "size": 459, "hash": "18cc04f5fc379b6279678983b0ea054e335f1636292ff856c9aa896b4b4037e0"}, {"path": "README.md", "size": 6085, "hash": "ff1ea508952e6d3ce099dad268a15d6c6ad25cc62de6d9e1776551b22d59b07a"}, {"path": "esp_lcd_st77916.c", "size": 21442, "hash": "a9124ac8a582d32fee40f60e6e5be747253ace5bc458d0e21972a84a416570ff"}, {"path": "license.txt", "size": 11358, "hash": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30"}, {"path": "include/esp_lcd_st77916.h", "size": 4954, "hash": "21f444cdc25ed1ceec379fe91fb5fd09d31ef179a946c9a7bd6f67d2e3599bfa"}, {"path": "test_apps/CMakeLists.txt", "size": 317, "hash": "cae0178540c6a4a24b56f590eb1f6bf4a85707bd521d9908b3abfc4aed8364b0"}, {"path": "test_apps/pytest_esp_lcd_st77916.py", "size": 300, "hash": "6513b1e4ab20df1aca721edef3485c23da4c0bc34920537ede6c1203ddd4f16a"}, {"path": "test_apps/sdkconfig.defaults", "size": 257, "hash": "b3f9660085595b907f7411e205468220c2dfb867de4de5d7fb3cbb406651dcab"}, {"path": "test_apps/main/CMakeLists.txt", "size": 54, "hash": "263db0b3aae2eae64e526904e06d12a8a5afc3ffe424bcb5992ac015c523c2b2"}, {"path": "test_apps/main/idf_component.yml", "size": 159, "hash": "fb0f2c2300bb6f5f80412b27393d83281fc13ed1a6fa8577e6b9f0f8af0d39f7"}, {"path": "test_apps/main/test_esp_lcd_st77916.c", "size": 7408, "hash": "220671da6d27e35fdf2e864ce0d26648e7974b32cff9afdd8f4c6715d24f9086"}]}