TI论坛
直播中

刘慧

7年用户 1691经验值
私信 关注
[问答]

使用TLV320AIC3106进行音频采集时出现直流偏移怎么解决?


  • 我使用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?

    谢谢!

回帖(3)

金晖

2024-10-24 10:14:14
你还要设置一下Page 0/Register 12,使能ADC的High Pass Filter,选三种模式中的一种就行了,它加载系数时就不是预置的了,而是你设置的了。
举报

龚旻

2024-10-24 10:14:28
AIC3106_writeRegister(107, 0xC08)这个要设成0xC8,不是C08。另外要注意ADC的programmable filter只支持一阶的,只有N0、N1和D1系数,用工具计算时只能选butterworth1型的。
设置的时候先写page1的系数,再写page0的控制寄存器。
举报

李鸿

2024-10-24 18:08:57
在使用TLV320AIC3106进行音频采集时,直流偏移是一个常见的问题。为了解决这个问题,你可以尝试以下几种方法:

1. 使用高通滤波器:你已经尝试了这种方法,但是发现最小的高通滤波器截止频率为206Hz,无法满足你的需求。你可以尝试使用其他类型的高通滤波器,例如数字高通滤波器,以获得更低的截止频率。

2. 使用低通滤波器:另一种方法是使用低通滤波器来去除高频噪声,这样可以保留50Hz~206Hz的音频。你可以在数字信号处理阶段实现低通滤波器,例如使用FIR滤波器或IIR滤波器。

3. 使用带通滤波器:带通滤波器可以同时去除低频和高频噪声,保留你所需的音频范围。你可以在数字信号处理阶段实现带通滤波器,例如使用FIR滤波器或IIR滤波器。

4. 硬件解决方案:如果软件解决方案无法满足你的需求,你可以考虑使用硬件解决方案。例如,你可以在音频输入端添加一个低通滤波器,以去除高频噪声。或者,你可以使用一个带有高通滤波器的麦克风,以减少直流偏移的影响。

5. 软件校准:你还可以尝试使用软件校准来消除直流偏移。例如,你可以在采集音频数据后,对每个样本进行减去直流偏移的操作。这种方法可能需要一些额外的计算,但它可以有效地消除直流偏移。

总之,解决直流偏移问题需要根据你的具体需求和硬件条件来选择合适的方法。你可以尝试上述方法,看看哪种方法最适合你的应用场景。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分