HI:
我做了一个音频采集系统,使用omapl138主芯片,使用aic3106芯片采集音频。但是采集到的音频出现直流偏移现象,
而且同一个板子上的两个MIC的偏移量还不一样;甚至在不一样的开发板上直流偏移量也不一样。
偏移量在30~100之间(16位采样,范围是-32768~32767),对应-50db到-60db之间,这对我造成了困扰,希望消除这个偏移量,
是硬件问题还是软件问题?应该如何去解决呢?最好能全部消除,如果不行减弱到-70db以下也可以
谢谢!
Jacky Wang(QD):
Hi,
这个你先确认一下CPU I2S接口的数据格式是否与Codec的设置是一致的。除了直流偏置外,MIC录音回来的声音听上去是正常的吗?
yan liu2:
回复 Jacky Wang(QD):
Hi Jacky Wang(QD):
数据格式是一致的,MIC的声音也是正常的(除了直流偏移,采集的音频是没问题的)。刚刚发现Codec焊接工艺似乎影响了直流偏置的大小,
但不能完全消除直流偏置。我不能确认是软件还是硬件问题
我现在有几个问题比较困惑:
1、 在工业级方面,直流偏置是否可以完全消除?如果不能,可接受范围大概是多少?
2、 为了消除/降低直流偏移,软件和硬件上应该注意哪些方面?
谢谢!
Jacky Wang(QD):
回复 yan liu2:
Hi,
这个录回来的直流偏置正常来讲应该是非常小的,除非确实是外部电路或其他因素干扰到芯片的输入引脚上了。这种情况下要完全去除的话可以加一段high pass filter在EQ中,截止频率设成10Hz~20Hz。
yan liu2:
回复 Jacky Wang(QD):
Hi Jacky:
你的意思是打开AIC3106的high pass filter吗?但是如何把截止频率设成10Hz~20Hz呢?
AIC3106的寄存器设置如下:
D7–D6 R/W 00 Left ADC Highpass Filter Control 00: Left ADC highpass filter disabled 01: Left ADC highpass filter –3-dB frequency = 0.0045 × ADC fS 10: Left ADC highpass filter –3-dB frequency = 0.0125 × ADC fS 11: Left ADC highpass filter –3-dB frequency = 0.025 × ADC fS
我的采样为48K/96K,设置成48K那么frequency = 0.0045 × 48K = 206 ,这个频率太高了,
会滤掉一些我需要的声音信号~
谢谢!
Jacky Wang(QD):
回复 yan liu2:
Hi,
那你可以用客制化的设置,参考EVM User's Guide的说明:
Filter系数计算可以用我们的计算工具,在下面链接下载:
http://www.ti.com/tool/coefficient-calc
yan liu2:
回复 yan liu2:
Hi Jacky:
非常感谢!你的方案是OK的,
但是我在TI官网搜索EVM User's Guide没有找到,你能发我一个文档链接吗?
谢谢!
Jacky Wang(QD):
回复 yan liu2:
Hi,
请参考下面的链接:
http://www.ti.com/lit/ug/slau209a/slau209a.pdf
http://www.ti.com/tool/tlv320aic3106evm-k
yan liu2:
回复 Jacky Wang(QD):
Hi Jacky:
Thank you again!!!
我在使用 Filter系数计算工具配置高通滤波器,遇到两个问题:
1、 我的采样率是24bit,我把resolution设为24,得到的N0,N1,D1也是24位数据,但是寄存器只有16位,我该如何设置呢?
2、 我对AIC3106进行了配置,但是没有起到作用,配置如下:
AIC3106_writeRegister(107, 0xC0); AIC3106_writeRegister(AIC3106_REG_PAGESELECT, 1);
AIC3106_writeRegister(65, 0x7E); AIC3106_writeRegister(66, 0x32); AIC3106_writeRegister(67, 0x81); AIC3106_writeRegister(68, 0xCE); AIC3106_writeRegister(69, 0x7C); AIC3106_writeRegister(70, 0x66);
AIC3106_writeRegister(71, 0x7E); AIC3106_writeRegister(72, 0x32); AIC3106_writeRegister(73, 0x81); AIC3106_writeRegister(74, 0xCE); AIC3106_writeRegister(75, 0x7C); AIC3106_writeRegister(76, 0x66);
不知道原因在哪?需要对register 12进行配置吗?该如何配置?
谢谢!
Jacky Wang(QD):
回复 yan liu2:
Hi,
AIC3106只支持16bit的系数,所以你要选成16bit的,虽然你I2S上送的是24bit的。
客制化EQ占用的是Page1/Register1~Register20(Left Channel),Page1/Register27~Register46,跟ADC预置的High Pass Filter占用的寄存器地址不一样,不冲突。
yan liu2:
回复 Jacky Wang(QD):
Hi Jacky:
我对寄存器做了设置,但是没有起到作用,直流偏移没有消除。
设置参数如下:
AIC3106_writeRegister(107, 0xC0); //Programmable Coefficients are used when ADC High Pass is enabled.
AIC3106_writeRegister(0, 1); //切换到page1
AIC3106_writeRegister(65, 0x7F); //N0设置 AIC3106_writeRegister(66, 0xFF); AIC3106_writeRegister(67, 0x80); //N1设置 AIC3106_writeRegister(68, 0x01); AIC3106_writeRegister(69, 0x7F); //D1设置 AIC3106_writeRegister(70, 0xA1);
相同方式对right channel进行设置
AIC3106_writeRegister(0, 0); //返回到page0
之后,我担心是 ADC High Pass is not enabled,我打开了page0/register 12 ,但是我发现我在page1设置的High Pass仍然没有其作用,
我查看的tlv320aic3106的文档,但是没有理解如何去使用实现High Pass,请你帮助分析一下
谢谢!