关于TLV320ADC3101采样回来的PCM码流做FFT变换之后的频谱问题
我现在用TLV320ADC3101芯片做语音的ADC转换,采样率为7.8K,采样精度是16位,采用出来的PCM码流进行播放的话,有比较大的背景噪声,用这段PCM码流做FFT变化,发现1/2*Fs这一块有很大的能量,通过mathlab对1/2*Fs这个能量进行滤波之后发现背景噪声没有了,能量频谱相当规则,我在怀疑是不是我的ADC配置有问题还是I2S总线传输有问题(之前配置I2S的时候没有一个bit的延时,导致数据错位,但是现在采样回来的数据没有错位,数据很不规律,但是都在某个值的附近,拿左声道来说,第一个16位是一千多,第二个十六位就是0,第三个十六位又是一千多,这样就产生了1/2*Fs这个频点的能量很集中,耳机听起来就干扰很大,但是自己对着话筒说话的时候声音可以听的很清楚),还是什么高频干扰嘛?附件里面是有背景噪声的ADC采样之后的FFT变化频谱图,而且这个频谱不仅仅是1/2*Fs对称,还是1/4*Fs对称。
这个问题困扰了我很久,启用了FIR和IIR滤波器之后也不能消除,但是采样之后的PCM码流在mathlab里面进行31阶的滤波之后这个1/2*Fs频段的能量就能消除,我现在在怀疑是不是ADC芯片产生的这个干扰了,还是采样率配置的太低的缘故?
你好:
你的意思是录音的时候在3.9K处有噪声?看matlab的频谱图是500hz啊?
根据你的描述,我觉得只能判断为在3.9K处有噪声,现在还不能说是1/2fs.因为你只用了一种采样率。
但是无论如何3.9k在audio band,不好滤掉。请问您能否提高fs至48K,看下还有没有噪声。按照你的说法,噪声应该在24K,这个时候人耳应该是听不到的。
对的,你的分析跟我想的一样,周五晚上我仔细想了一下,应该是我的时钟配置有问题,通过查看PCM的源数据,可以看到采样点每隔一个就是0,非零的值采样正确,是不是采样率配置没有满足最低8KHz的采样率造成的?现在的硬件设备的AUX的时钟是24MHz,而mcasp的时钟源是AUX的,就算TLV320ADC3101这个芯片的采样率提升上去了,I2S端的传输也没有办法完成,因为现在数据是16位宽的,没有办将BCLK配置为256KHz,请问TI有什么推荐的思路嘛?
为什么是在1/2*Fs有这么大的能量呢,我的判断是因为采样率是Fs,而刚好是隔一个点采到的数据为0,那么就是相当于有1/2*Fs这个频率的波形被采样进来了,所以通过FFT之后,能量会集中在1/2*Fs
你好:
能否请你描述一下你的时钟是怎么连接的?
Codec是做master还是slave? MCLK又是由谁提供的?
看起来你好想是丢失一些sample。
请阅读附件中的文档,确保的你的CLK连接,不会导致丢失一些sample。0434.Audio Serial Interface Configurations for Audio Codecs.pdf