开始前适用开发板:ESP32-S3 Korvo · 开发框架:ESP-IDF
适用开发板:Korvo S3 · 工程
04.advanced.usb_extended_display· targetesp32s3
学习时长:约 30 分钟 · 难度:★★★★☆
学习目标
完成本节后,你将能够:
- 理解 USB 复合设备(显示 + HID 触摸 + UAC 音频)的架构
- 掌握 PC 发送 JPEG 帧 → 板子解码显示的工作原理
- 了解触摸坐标 → HID 触摸屏报告回传 PC 的机制
- 理解 UAC(USB Audio Class)音频输出的基本概念
1. 这个例子在干嘛
通过 USB 将开发板变成 PC 的扩展显示器 + 触摸屏 + 音箱,三合一。
生活类比:便携显示器——USB 一线连接 PC,既显示画面,又支持触摸操作,还能播放声音。
┌─────────────────────────────────────────────┐
│ PC │
│ 上位机软件 → 屏幕区域 → JPEG 编码 │
│ │
│ [USB 下行: JPEG 帧数据] │
│ [USB 上行: HID 触摸报告] │
│ [USB 下行: UAC 音频数据] │
└──────────────┬──────────────────────────────┘
│ USB 线
┌──────────────┴──────────────────────────────┐
│ Korvo S3 │
│ │
│ JPEG 接收 → 软件解码 → RGB565 → SPI LCD 显示 │
│ 触摸屏 → 坐标读取 → HID 报告 → 回传 PC │
│ UAC 音频 → I2S → ES8311 → 扬声器播放 │
└─────────────────────────────────────────────┘
三个 USB 功能
| USB 功能 | 方向 | 协议 | 说明 |
|---|---|---|---|
| 显示 | PC → 板子 | Bulk(自定义) | JPEG 帧数据 |
| 触摸 | 板子 → PC | HID Touch | 坐标报告 |
| 音频 | PC → 板子 | UAC | PCM 音频 |
2. 前置条件
需要 PC 端 配套上位机软件(随开发板资料提供),负责:
- 捕获 PC 屏幕区域
- JPEG 编码后通过 USB 发送
- 接收 HID 触摸报告映射为系统触摸事件
- 将音频输出路由到 USB Audio 设备
3. 编译烧录
cd Korvo_Firmware\04.advanced.usb_extended_display
idf.py set-target esp32s3
idf.py build flash monitor
4. 使用步骤
- USB 线连 PC
- 等待 PC 识别 USB 设备(可能需安装驱动)
- 运行 PC 上位机软件
- 选择 Korvo 设备
- 屏幕显示 PC 画面
- 触摸屏幕 → PC 对应位置响应
- PC 音频选择 USB 设备 → 扬声器播放
5. 运行现象
| 阶段 | 屏幕 | 串口 |
|---|---|---|
| 启动 | 等待 USB 连接 | USB init, endpoints ready |
| PC 连接 | 显示 PC 画面 | JPEG decode started |
| 触摸 | 画面局部被触摸高亮 | HID report sent: x=120 y=80 |
| 音频 | — | UAC stream active |
6. 性能参考
| 指标 | Korvo(SPI 240×280) | P4C5(MIPI 480×800) |
|---|---|---|
| JPEG 解码 | 软件解码 | 硬件解码 |
| 刷新率 | 10~15 fps | 20~30 fps |
| 延迟 | 明显 | 较低 |
| 体验 | 状态副屏 | 实用扩展屏 |
7. 常见问题与排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| PC 不识别 | USB 口连接错误 | 确认 USB 口(非 UART) |
| PC 不识别 | 驱动问题 | Windows 安装 WinUSB 驱动 |
| 画面延迟大 | SPI 带宽限制 | 降低 JPEG 质量;分辨率匹配屏幕 |
| 触摸不准 | 坐标映射范围不匹配 | 校准 HID 报告的 X/Y 范围 |
| 触摸无反应 | HID 描述符错误 | 检查 Touch Report Descriptor |
| 无声音 | PC 未选 USB 音频设备 | 系统设置 → 音频输出 → 选 USB |
| 音频断续 | USB 带宽不足 | 降低音频采样率 |
8. 动手改造建议
- 系统监控副屏:PC 端只发系统信息(CPU/内存/温度),板子显示仪表盘
- MQTT 通知屏:不连 PC,改为 Wi-Fi 接收 MQTT 消息显示通知
- 视频会议副屏:显示参会者列表或聊天记录
- P4C5 版升级:MIPI 大屏 + 硬件 JPEG 解码体验更好,见 P4C5 USB 扩展屏
9. 知识延伸
- USB 复合设备:一个 USB 设备可同时包含多个功能(HID + CDC + UAC),各自独立工作
- HID 触摸屏 vs 鼠标:触摸屏用绝对坐标(像素位置),鼠标用相对位移(偏移量)
- UAC:USB Audio Class,PC 无需安装驱动即可识别为音频设备
- JPEG 压缩的权衡:质量高 → 画面清晰但帧大延迟高;质量低 → 模糊但流畅
10. 下一步
| 方向 | 推荐例程 | 说明 |
|---|---|---|
| USB 键盘 | USB HID Keyboard | HID 入门 |
| USB 鼠标 | USB HID Mouse | 另一种 HID |
| USB 串口 | USB CDC | 虚拟串口 |
| P4C5 大屏版 | P4C5 USB 扩展屏 | 更好体验 |
酷世DIY · Kevincoooool