记一次调试WM8978音频IC过程

有个DIY项目中用到一个音频ADC&DAC芯片WM8978,在第二次调板的时候发现和买回来的模块出来的结果差别很大,在输入5KHz信号时stm32单片机采集,然后通过自己写的python程序显示波形和功率谱,自己板子DOUT出来的数据波形杂乱无章,将I2S_DOUT直接输出到I2S_DIN时喇叭出来的声音也是一片噪音(类似电视机无信号那种雪花噪音),而将这个信号输出到模块板的时候python显示的波形很正常,直连状态喇叭输出不再是雪花噪音是清晰的信号输出。起初怀疑是焊接问题,这个芯片是qfn32封装,而且是它引脚打磨得光亮(不是那种上锡的光亮倒像是不锈钢那种),不易上锡,最后焊接了几个板也解决不了问题。后来无意用手摸了一下I2S的走线发现喇叭输出突然变正常,按压芯片,不行,按压周围的器件,不行,用手触摸了一下LRCK,可以。突然想起前段时间用示波器观察到I2S_LRCK的波形高低电平上叠加有其他的高频干扰信号(也可能是走线太长导致,这里MCLK,BCLK的频率都比较高fs=48k,MCLK=256fs,长导线分布电容的影响已经让MCLK变‘’正弦波‘’了,但对LRCK来说,布局不好可能导线的感性影响比较厉害,容易出现过冲或者振荡(这里仅仅是猜测)),最后不得已在LRCK引脚接口处并一只100p电容,问题基本解决了,当然高速数字电路减少这些情况发生一般是通过合理布局来实现但,是绝不会在信号线上并电容的,而我这里并仅仅做权宜之计。

另:从手册上看似乎这个Codec的ADC Filter无法自由设置,HPF可以配置但LPF为固定0.5Fs,这就不太合适了,算法对信号的SNR要求高,混频输出的信号含有比较大的谐波分量,如果由单片机来滤波显然会拖慢扫频速度,目前参考日本DIY板子TLV320AIC3204这个Codec含有一个可配置的Filter,可以实现一个较理想的BPF。

你可能感兴趣的:(ham,radio)