关于TLV320AIC3106设置High Pass去除直流偏移
我使用TLV320AIC3106进行音频采集时出现直流偏移现象,因此我打算设置高通滤波器来去掉直流偏移。
我设置了 page0/register12 为0xA0,得到一个高通滤波。但是,我发现这个寄存器只能设置三种高通滤波,最小的经计算得到206Hz。
我希望保留50Hz~206Hz的音频,因此这种方式是不可行的。我打算使用page1来实现自定义的High Pass。我使用软件得到一个结果,如下:
我做了如下设置:
AIC3106_writeRegister(107, 0xC0); // page0/register 107 设置High Pass模式
AIC3106_writeRegister(0, 1);
AIC3106_writeRegister(65, 0x7F);
AIC3106_writeRegister(66, 0xA1);
AIC3106_writeRegister(67, 0x80);
AIC3106_writeRegister(68, 0x5F);
AIC3106_writeRegister(69, 0x7F);
AIC3106_writeRegister(70, 0x44);
AIC3106_writeRegister(71, 0x7F);
AIC3106_writeRegister(72, 0xA1);
AIC3106_writeRegister(73, 0x80);
AIC3106_writeRegister(74, 0x5F);
AIC3106_writeRegister(75, 0x7F);
AIC3106_writeRegister(76, 0x44);
AIC3106_writeRegister(0, 0);
但是,直流偏移没有被消除,我想知道如何正确的去自定义设置High Pass?
谢谢!
Hi,
你还要设置一下Page 0/Register 12,使能ADC的High Pass Filter,选三种模式中的一种就行了,它加载系数时就不是预置的了,而是你设置的了。
Hi Jacky :
我设置了Page 0/Register 12,但是发现不是我要的40Hz,而是Page 0/Register 12的设置起作用了。
我把page0/Register107 设置成0XC8,还是不行!我的配置如下,请问错误在哪里?
AIC3106_writeRegister(12, 0x00);
AIC3106_writeRegister(107, 0xC08);
AIC3106_writeRegister(AIC3106_REG_PAGESELECT, 1);
AIC3106_writeRegister(65, 0x7F);
AIC3106_writeRegister(66, 0xFF);
AIC3106_writeRegister(67, 0x80);
AIC3106_writeRegister(68, 0x01);
AIC3106_writeRegister(69, 0x7F);
AIC3106_writeRegister(70, 0x54);
AIC3106_writeRegister(71, 0x7F);
AIC3106_writeRegister(72, 0xFF);
AIC3106_writeRegister(73, 0x80);
AIC3106_writeRegister(74, 0x01);
AIC3106_writeRegister(75, 0x7F);
AIC3106_writeRegister(76, 0x54);
AIC3106_writeRegister(AIC3106_REG_PAGESELECT, 0);
AIC3106_writeRegister(12, 0x60);
谢谢!
Hi Jacky:
我测试了一下,结果和预期的不相符。 加载系数时是预置的了,而不是我在page2设置的。
我的修改如下:
AIC3106_writeRegister(12, 0x00);
AIC3106_writeRegister(107, 0xC08);
AIC3106_writeRegister(AIC3106_REG_PAGESELECT, 1);
AIC3106_writeRegister(65, 0x7F);
AIC3106_writeRegister(66, 0xFF);
AIC3106_writeRegister(67, 0x80);
AIC3106_writeRegister(68, 0x01);
AIC3106_writeRegister(69, 0x7F);
AIC3106_writeRegister(70, 0x54);
AIC3106_writeRegister(71, 0x7F);
AIC3106_writeRegister(72, 0xFF);
AIC3106_writeRegister(73, 0x80);
AIC3106_writeRegister(74, 0x01);
AIC3106_writeRegister(75, 0x7F);
AIC3106_writeRegister(76, 0x54);
AIC3106_writeRegister(AIC3106_REG_PAGESELECT, 0);
AIC3106_writeRegister(12, 0xF0);
是我的设置有问题吗?
谢谢!
Hi,
AIC3106_writeRegister(107, 0xC08)这个要设成0xC8,不是C08。另外要注意ADC的programmable filter只支持一阶的,只有N0、N1和D1系数,用工具计算时只能选butterworth1型的。
设置的时候先写page1的系数,再写page0的控制寄存器。
Hi Jacky:
Thank you very much!The problem has been solved!
Best Wish For You!
你好,我看到手册里有那个高通的公式,请问那个要怎么算啊 z是什么啊?