TLV320AIC3106 播放有杂音
你好,各位TI工程师
本人在使用aic3106来播放pcm纯音频数据时出现“滴滴”杂音,该杂音大概一秒多有产生一次。
开发板类型:DM8168 EVM
音频Codec:TLV320AIC3106
音频数据:纯PCM 8K Stereo 16Bit 正玄波Sine
播放: aplay -c 2 -D default -f S16_LE -r 8000 -d 30 8K_Stereo_16B_Sine_30s.pcm
本人采样时钟、位时钟等测量到的结果都是正常的...
请问下各位,有没遇到该问题?是什么原因导致该问题的?
谢谢
你好:
如果不播放会有杂音吗?AIC3106 mute 住还会有吗?你的I2S格式是否和你配置的一样?
你好:
1、本人测试了8K 16K 32K 44K 48K,(都是Stereo 16Bit Sine),结果发现只有44没有“滴滴”的声音,因此本人认为I2S格式应该不是问题点。
2、你说的I2S格式,是想测试DIN Pin 输出的数据是否符合I2S吧?但是,通过I2C查看到其实它使用的格式是DSP Mode,这个跟I2S是不一样的。
3、通过设置Mute(或PCM全为0)时,播放出来,没有任何声音,当然也不会存在之前“滴滴”的杂音。
期待你的回复,谢谢。
祝好。
你好:
我觉得这个滴滴声可能是采样率不吻合所致。你说在播放44.1K的时候没有。是不是你配置的采样时钟为44.1KHz?
你好:
对于”我觉得这个滴滴声可能是采样率不吻合所致“,我其实也已经验证过了,应该不是采样率的问题,下面是我验证的过程(如8K),
首先使用aplay进行播放的,采样率参数是正确的(-r 8000);
接着查看声卡参数信息,其结果跟我设置的是一致的(显示8000);
再接着通过I2C查看相关的寄存器,其寄存器值跟我设置的也一致(fs(ref)=48, nDAC=6);
最后,通过示波器来测量采样率时钟,其时钟采样结果跟我设置的大体一致(9K~10K)(之所以说大体一致,有一点误差,但跟我设置的时钟很接近,如对于设置44K(无杂音),测量得到大概的值是42K左右)
因此,我认为采样率设置不对造成的原因很小很小,应该是其他原因导致的。
如果你需要什么实际的测量数据的话,我可以及时发给你,该问题困扰一段时间了,希望你能帮助我查到问题的根本。
谢谢!
祝好
此外,我有个请求,假若您那边有DM8168_EVM的demo板的话,你可以试试音频播放,看是否也存在该问题?
你好:
在DM平台,Codec是主MCLK是外部的晶振提供,当你改变采样率的时候,你内部的PLL的配置也要重新配置,我觉得是AIC3106的晶振刚好是44.1K的倍数,所以你用8K的时候,也会采用那个晶振的配置。
你检查下寄存器的配置。你的时钟偏差的比较大,建议检查下。一般不会偏差那么多的,还有就是可能是软件版本问题,建议找个新的版本。
你好:
1、你说的软件版本问题指的是否是EZSDK?
2、如你说的AIC3106的晶振刚好是44.1K的倍数,麻烦告诉下多少,我去看看
3、各个采样率的对应的MCLK的理论值是多少?设置PLL怎么设置(我之前看过,但不是很明白,请指导,此外从register 3发现只有在44K时才会去enable PLL,其他采样率如8K、16、32等都是Disable PLL的)?求解...
谢谢
还有个疑问
4、个人认为一般在应用层上进行不同音频采样率播放时,底层的驱动应该自动地相关地的寄存器来设置的,但是按你说的,如果是真的话,该驱动是否就是存在问题而需要去改?
你好:
是这样的。建议你检查下驱动。MCLK应该是22.5792M, 你改驱动的时候MCLK可能没有改。
你好:
首先抱歉,如此晚回复您;
然后的是,我会依照您的意见是看下MCLK的实际设置值,此外,我在硬件原理图看到的MCLK的值是跟您说的22.5792M不一样的,原理图上显示的是24.576M,为什么会不一样啊?Note:依照的原理图来源文件参见《netradimm_Schematics_revc.pdf》
谢谢,祝好。
你好:
这个是根据你的采样率来决定的,24.576M是48K的512倍,如果是22.5792M,那是44.1K的512倍。
你好:
在这首先再次感谢您能这么快地回复帮助我,对于您的回复,关于”这个是根据你的采样率来决定的,24.576M是48K的512倍,如果是22.5792M,那是44.1K的512倍。“,我有以下疑问:
1、当播放8K、16K、32K音频PCM数据时,我利用示波器进行测量,发现MCLK都是24.576MHZ左右的,而不像您说的不一样的采样率对应不一样的MCLK;
2、通过AIC音频驱动的打印看来,sysclk一直都是12288的(本人理解这sysclk是mclk的一半,如果我的理解对的话,相应地,这个系统时钟sysclk也从另外一面来说明mclk并不随采样率变化而变化,实际上其一直保持不变)
3、关于您说的倍数512,据我所知,该你倍数还可以是128*fs、256*fs,请问下您该AIC是512倍的是在哪个文档体现的啊?
本人对这些了解不很深,如理解有错,麻烦您能指正,谢谢,祝好。
你好:
由于AIC3106内部有PLL,所以就算输入的MCLK是一样的,但是通过修改AIC3106内部的寄存器的值,可以得到想要的时钟,而这个时钟的正确与否就需要你检查下你的寄存器配置了。我说的512fs只是一个例子,如果是整数倍就比较好设置PLL的值。
你好:
aic的PLL在各个寄存器设置值都是对的,这点我可以很确定,好奇的是,你们的DM8168EVM板播放sine就没这样的声道?或者你们可以试试,这问题应该是存在的,因为我所了解到的EVM板进行我类似的测试都有该问题。希望你能确认下,谢谢,祝好。
你好:
如果确认不是Codec的问题,那就要找主控的问题。DM8168的技术支持在DSP&ARM版块。
你好:
1、其实我还想进一步确认在codec,所以我想问下codec有没有AD->DA的模式(不经过i2s、cpu等)?
2、主控?mascp?
谢谢,祝好。
你好:
1.AIC3104没有你需要的模式,如果你要测环路,你可以把Dout和Din连在一起,就可以知道是Codec的问题还是你主控的问题。
2.主控就是指DM8168,因为是你的DM8168通过I2C配置codec的。