1 问题描述
Rcar H3 协处理器通过12S协议传输音频数据到外置DSP,然后经过功放输出到喇叭,播放的过程能听到正常的旋律但是伴随有杂音。而主处理器侧的音频通过TDM到DSP播放正常。
2 问题调查
2.1 协处理器输出的数据有问题?
① 驱动配置:发送一段数据,通过示波器抓I2S数据,校验发现发出的数据值没有问题。
② 时钟和干扰:I2S波形还是不错的,时钟信号稳定,SDA 和WS信号都不错,未发现I2S信号被干扰
2.2 外置DSP接收到的数据和发送的不一致?
① DSP侧将接收到的数据dump出来,和发送的数据对比。 条件限制,未能实施。
② 发送1Khz 纯音,采集输出的后的数据进行傅里叶变换,频谱应该是一条直线(audacity处理音频数据)。 条件限制,未能实施。
2.3 外置DSP数据处理有问题?
① 检查两侧的I2S协议一致。
② DSP的其他配置,外部team开发,一直没有得到准确结论
③断开协处理器和DSP之间的I2S物理连接,使用I2S转AUX的小板将I2S数据外接出来播放。
借了连个小板,在AUX输出插上耳机,都没有声音输出…无语。但是关键来了,明明DSP和协处理器的I2S物理连接已经断开了,喇叭依旧发出了那种杂声,好了基本可以确定是干扰。
2.4 查找干扰
断开I2S的物理连接,播放音频,DSP侧I2S的data pin上没有信号,接着检查了DSP的另外两路TDM输入,data pin上有信号,说明杂声是TDM收到I2S信号干扰产生的,进一步分析是I2S的data信号。
3 解决方案
根据DSP的指导书优化I2S布线
4 小结
如果I2S传输的数据中有一个bit丢掉,那么最终听到的声音会完全不同。
通过I2S播放音频,虽然有杂声但是能听到正确的音频旋律,基于这点基本可以确定DSP收到了正确的 音频数据,而且处理的也没问题。