[Waveshare 1.75] ES7210 TDM 四槽输入需按 MMR 顺序供 AFE/WakeNet 使用

Author: nj-zhangrui-arvinCreated Aug 31, 2026Updated Aug 31, 2026

背景

Waveshare ESP32-S3-Touch-AMOLED-1.75 的 ES7210 使用四槽 TDM 输入。Waveshare 当前官方硬件参考明确标注该板实际串行槽位顺序为:

MIC1 / MIC3(ES8311 回放参考)/ MIC2 / MIC4(未连接)

其官方 1.75 Xiaozhi 语音实现则将 AFE 输入定义为 16 kHz、16-bit、三通道 MMR:

MIC1 / MIC2 / ES8311 回放参考(MIC3)

当前上游实现

当前 main/boards/waveshare/esp32-s3-touch-amoled-1.75/esp32-s3-touch-amoled-1.75.cc 仅向 BoxAudioCodec 传入 AUDIO_INPUT_REFERENCE。通用 BoxAudioCodec 虽初始化 ES7210 的四槽 TDM,但 input_reference=true 时逻辑输入通道数为 2,输入打开时也只请求前两个掩码;没有针对该板把四槽流转换成 AFE 所需的 MMR 三通道数据。

因此,MIC2 和回放参考的串行槽位/逻辑通道不一定能按该板 AFE 预期被消费,可能影响设备侧 AEC、WakeNet 与语音前端稳定性。

本地验证

我们仅对该 1.75 板型做了窄范围适配:读取四个 TDM 槽位,丢弃未连接的 MIC4,并重排为 MIC1 / MIC2 / MIC3(reference) 后送入 AFE。实机日志确认三通道 MMR 输入;在同一设备上,唤醒与后续识别表现明显改善。

这不是严格的量化基准,因而不主张直接以该观察判断通用音频代码有缺陷;但它与 Waveshare 当前官方 1.75 BSP/Xiaozhi 示例的板级约定一致。

建议

建议维护者评估是否为 waveshare-esp32-s3-touch-amoled-1.75 增加板型限定的音频布局适配:

  1. 保持其他使用 BoxAudioCodec 的板型不变;
  2. 对该板请求完整四槽 TDM;
  3. 仅在 AFE/AEC 路径将数据重排为 MIC1 / MIC2 / reference
  4. 明确 MIC4 未连接,并为该板增加启动日志/最小回归测试。

参考

如维护者认可方向,我可以整理为只影响 1.75 板型的最小 PR。