全志科技
直播中

王伟

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

怎样通过配置高通滤波寄存器滤掉800hz的噪声呢

  • 客户使用DMIC录音,想通过配置高通滤波寄存器,滤掉800hz的噪声
    与高通滤波相关的寄存器:
    HPF_EN_CTR: 0x38
    HPF_COEF_REG: 0x3c
    HPF_GAIN_REG: 0x40

回帖(1)

吴少杰

2021-12-29 12:14:48
解决方案
只需要更改HPF_COEF_REG中的值即可,假如效果没有达到预期,还请找出噪声来源,从源头上解决。

coef值与截止频率的关系是Fc=fs*(1-coef)/2π,其中fs是采样频率。
coef的值是3.24格式,也就是有效位是27bit,3个整数位,24个小数位,默认值为0x00FFAA45,换算成10进制就是0.99869,当采样频率是48k时,默认设置的截止频率Fc=48k *(1-0.99869)/2π = 10Hz。
下面演示如何通过配置HPF_COEF_REG寄存器滤掉100hz的正弦波。
使用audiocodec播放100hz正弦波。

HPF_COEF_REG使用默认值,DMIC使用采样频率16k录音,保存文件为100hz_default.wav。

截止频率为100Hz的话,经计算得出coef值为0.96075,因此HPF_COEF_REG修改为0x00f5f1db,DMIC使用采样频率16k录音,保存文件为100hz_setHPF.wav。

两者的音频波形如下,可见100hz_setHPF的波形中,录回正弦波的db值比100hz_default更小。

因为驱动中并没有对该寄存器进行操作,所以目前只有硬改寄存器的方式进行配置,之后会考虑在dts中添加截止频率的配置项。
举报

更多回帖

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