从标题看,问题集中在 EG800A 外挂 Flash 读取 MP3 数据并通过 CODEC 播放时,出现 DMA 读取失败。
建议优先按以下方向排查:
-
外挂 Flash 总线稳定性
- 降低 SPI/QSPI 读写速率后复测。
- 检查 Flash 供电、地线、CLK/CS/DATA 走线及上拉/下拉配置。
- 播放过程中避免同时进行 Flash 擦写、频繁文件打开关闭等操作。
-
DMA 缓冲区配置
- 确认 DMA 读取 buffer 未被提前释放或重复占用。
- buffer 地址、长度需满足 SDK/驱动对 DMA 对齐和内存区域的要求。
- 避免使用栈上临时大 buffer 作为 DMA 数据源。
-
音频数据流压力
- MP3 解码、Flash 读取、CODEC 输出建议采用环形缓冲。
- 若 Flash 读取速度波动,可能导致音频播放端取数失败。
- 可先用较低码率 MP3 或 WAV 文件对比验证。
-
CODEC 与音频接口配置
- 确认 I2S/PCM 参数与 CODEC 配置一致,包括采样率、位宽、主从模式、左右声道格式。
- 播放瞬间若 CODEC 或功放拉低电源,也可能间接导致 Flash/DMA 异常。
-
定位建议
- 先确认同一 MP3 文件放在内部文件系统是否正常播放。
- 若内部正常、外挂 Flash 异常,重点查 Flash 驱动、DMA buffer、SPI 时序。
- 若内部也异常,重点查 MP3 解码和 CODEC/I2S 配置。
如需进一步定位,请补充:使用的开发方式、外挂 Flash 型号、CODEC 型号、完整报错日志、Flash 读写接口配置、音频播放相关代码片段。
本回答仅供参考。若问题已解决,可标记为
解决方案 ;若仍有疑问,请等待官方技术人员回复,最终请以专业解答为准。

