潮声隔雨深 · 2022年01月02日

全志R329如何使用DMIC的高通滤波寄存器滤掉低频噪声?

请问全志R329如何使用DMIC的高通滤波寄存器滤掉低频噪声?

1 个回答 得票排序 · 时间排序
极术小姐姐 · 2022年01月04日
本回答来源全志R329如何使用DMIC的高通滤波寄存器滤掉低频噪声?

问题描述

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

解决方案

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

image.png

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正弦波。

image.png

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

image.png

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

image.png

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

image.png

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

你的回答
关注数
1
收藏数
0
浏览数
3645
极术小姐姐
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息