将一路 USB 音频接入 STM32H743 主机端口,起初可稳定以 48kHz 采样率正常传输约 5 秒,随后音频数据就彻底卡死。
帧起始信号依旧正常触发中断,官方中断驱动里的`AudioHost_IsoDataReadyISR()`音频等时数据就绪中断也会持续调用;DMA 处于运行状态,但后续每次传输的始终是相同的 96 字节数据:即便我清空接收缓冲区,缓冲区很快又会被重复的旧数据重新填满。我重新初始化管道等一系列操作,都无法恢复音频流。
只要处理`AudioHost_IsoDataReadyISR()`中断的过程稍有延迟,就会立刻出现一模一样的重复旧数据卡死问题。
代码基于 ST 官方示例自行编写,音频正常播放数秒无问题;拔掉麦克风再重新插上,音频又能短暂流畅运行数秒,之后依旧卡死。
当处理`AudioHost_IsoDataReadyISR()`中断出现时序偏差时,有没有可行的方案,无需整机复位就能恢复音频流媒体传输?
|
|