适用开发板:ESP32-S3 Korvo 2 V3
工程:Korvo_Firmware/04.advanced.korvo_board_test
target:esp32s3
用途:收板后 首选验板(约 15~30 分钟)
学习时长:约 20 分钟 · 难度:★★☆☆☆
学习目标
完成本节后,你将能够:
- 使用综合测试工程快速验证 Korvo 开发板硬件完好性
- 了解 Korvo 板上各外设的连接关系
- 排查常见硬件故障(摄像头、音频、触摸等)
- 理解 LVGL 多页面导航的实现方式
1. 这个例子在干嘛
这是一个 一站式硬件测试工具——烧录后通过 LVGL 多页面界面逐一测试板上所有关键硬件。
类比:就像新买的手机会有一个「工程模式」可以测试屏幕、触摸、摄像头、喇叭一样,这个工程就是 Korvo 的工程模式。
测试覆盖:
┌─────────────────────────────────────────┐
│ korvo_board_test │
├─────────┬──────────┬──────────┬─────────┤
│ Camera │ Button │ Speech │ About │
│ DVP │ ADC 六键 │ 录音/播放 │ 版本 │
│ 预览 │ 触摸测试 │ 唤醒词 │ 板信息 │
└─────────┴──────────┴──────────┴─────────┘
P4C5 有对应版本,但 UI 和硬件完全不同,见 p4c5_board_test。
2. 启动时的自检
烧录上电后,工程会自动执行以下检测:
| 步骤 | 检测内容 | 失败表现 |
|---|---|---|
| 1 | I2C 总线扫描 | 串口报地址未找到 |
| 2 | ES8311 音频 codec | 红屏报错 |
| 3 | ES7210 麦克风 ADC | 串口警告 |
| 4 | TCA9554 I/O 扩展器 | 背光/PA 异常 |
| 5 | 进入主菜单 | 正常则显示多页导航 |
红屏 = 音频硬件异常:如果看到红屏,说明 ES8311/ES7210 通信失败,后续 Speech 功能受限,但 Camera 和 Button 仍可测试。
3. 编译烧录
cd Korvo_Firmware\04.advanced.korvo_board_test
idf.py set-target esp32s3
idf.py build flash monitor
使用 左侧 USB(CH9102) 下载。Speech 页若需唤醒模型,确认 SPIFFS/分区包含模型文件。
4. 测试页面详解
4.1 Camera 页
| 测试项 | 合格标准 | 不合格表现 |
|---|---|---|
| DVP 实时预览 | 画面清晰、帧率稳定 | 黑屏/花屏/无帧率 |
| 画面方向 | 与实际物理方向一致 | 上下或左右镜像 |
如果 Camera 不工作:检查 FPC 排线是否插紧、是否反插。
4.2 Button 页
| 测试项 | 合格标准 | 不合格表现 |
|---|---|---|
| 六键矩阵 | 每个按键按下都有 UI/串口反馈 | 某键无响应 |
| ADC 值 | 每个键的 ADC 值在预设范围内 | ADC 值异常 |
测试方法:依次按下 Korvo 板上的 6 个按键,观察 UI 高亮和串口输出。
底层原理:6 个按键通过不同阻值连接到 GPIO5 ADC,按不同键产生不同电压值,软件通过 ADC 读取电压区分键位。
4.3 Speech 页
| 测试项 | 合格标准 | 不合格表现 |
|---|---|---|
| 录音播放 | 录 → 放,能听到自己的声音 | 无声/杂音 |
| WakeNet 唤醒 | 说唤醒词有响应 | 无反应 |
前置条件:
- 红屏 = ES8311/ES7210 初始化失败,此页无法正常使用
- 唤醒模型需要在 SPIFFS 分区中(以工程配置为准)
4.4 About 页
显示固件版本号、板级信息、编译日期等,用于确认烧录了正确版本。
5. 推荐验板顺序
拿到新板后,按照以下顺序测试最高效:
Step 1: 上电 → 观察屏幕是否正常亮起(测试背光 + SPI)
Step 2: 触摸/按键 → 能否切换页面(测试触摸屏 + I2C)
Step 3: Camera 页 → 画面是否正常(测试 DVP 摄像头)
Step 4: Button 页 → 六个键逐一按(测试 ADC)
Step 5: Speech 页 → 非红屏则录放(测试 codec + 麦克风 + 喇叭)
Step 6: 串口 → 全程无 panic/reboot(测试系统稳定性)
6. 关键文件与代码解析
| 文件 | 作用 | 重点关注 |
|---|---|---|
main/app_main.cpp | 入口、硬件自检 | I2C 扫描 + 错误处理 |
main/page_manager.c | 页面切换管理 | LVGL 多页导航实现 |
main/page_camera.c | Camera 测试页 | DVP 取帧 + 显示 |
main/page_button.c | Button 测试页 | ADC 采样 + 阈值判断 |
main/page_speech.c | Speech 测试页 | 录音/播放/唤醒 |
main/app_camera.c | DVP 驱动 | 摄像头配置 |
main/app_adc.c | ADC 六键驱动 | 阈值数组 |
main/app_speech.c | 音频子系统 | ES8311 + ES7210 |
多页面导航实现(page_manager.c)
page_manager 管理方式:
├── 页面数组:[page_camera, page_button, page_speech, page_about]
├── 当前页面索引
├── 切换触发:触摸滑动 / 按键
└── 切换动画:LVGL 页面切换效果
7. 验收标准(快速检查清单)
| 检查项 | 合格 ✓ | 不合格 ✗ |
|---|---|---|
| 屏幕亮起,菜单正常 | ✓ | 白屏/花屏 |
| 触摸滑动切换页面 | ✓ | 无法切换 |
| Camera 有画面 | ✓ | 黑屏 |
| 六键均有响应 | ✓ | 某键无反应 |
| Speech 非红屏 | ✓ | 红屏报错 |
| 录放有声音 | ✓ | 无声 |
| 串口无循环 panic | ✓ | 反复重启 |
如果全部 ✓ → 板子硬件完好,可以开始学习其他例程!
8. 常见问题与排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 红屏 | ES8311/ES7210 I2C 通信失败 | 检查排线;对比原理图引脚 |
| Camera 黑屏 | FPC 排线松/反 | 重新插拔;确认方向 |
| Camera 黑屏 | Sensor 供电异常 | 检查 LDO 输出 |
| 某按键无反应 | ADC 阈值不匹配 | 串口打印实际 ADC 值,调整阈值 |
| WakeNet 无反应 | 模型文件缺失 | 检查 SPIFFS 分区和分区表 |
| WakeNet 无反应 | 麦克风未接好 | 检查 ES7210 和麦克风连线 |
| 触摸无效 | CST816S 未识别 | I2C 扫描检查地址 |
| 循环重启 | 内存不足 | 检查 PSRAM 配置 |
9. 动手改造建议
- 添加 Wi-Fi 测试页:增加一个页面,连接 Wi-Fi 并显示 IP 和 RSSI
- 添加传感器页:如果外接了温湿度传感器,增加显示页面
- 导出测试报告:将所有测试结果通过串口以 JSON 格式输出
- 学习多页面架构:
page_manager.c是一个很好的 LVGL 多页面管理参考
10. 下一步
验板通过后,按照学习指南开始你的开发之旅:
| 方向 | 推荐起点 | 说明 |
|---|---|---|
| 显示入门 | spi_lcd_touch | LVGL 移植基础 |
| 网络入门 | wifi_station | Wi-Fi 连接 |
| 完整学习路线 | Korvo 学习指南 | 系统化学习 |
酷世DIY · Kevincoooool