杰理可视化SDK开发-配置ANC主动降噪功能模块教程

前言

现在为止也开发了许多杰理TWS蓝牙耳机、音响项目SDK的案子,在调试案子时不断的向前辈们学习到了很多关于蓝牙音响、蓝牙TWS耳机专业的知识。想在这里做一个学习汇总,方便各位同行和对杰理芯片SDK感兴趣的小伙伴们学习;

本章详细讲解ANC主动降噪模块配置教程

本文针对TWS蓝牙耳机ANC主动降噪模块进行一个详细讲解配置教程,讲解内容本博主围绕着杰理文档进行整合为:

1、什么是ANC?

2、ANC工作原理?

3、根据硬件原理图在可视化JL studio中如何配置ANC?

4、软件上ANC相关代码讲解

5、ANC相关代码配置根据flash容量配置起始地址

6、调试ANC效果步骤

1、什么是ANC?

ANC( Active Noise Cancellation) 中文称呼:主动降噪,使用耳机内的麦克风采集环境的中低频噪声,经过算法实时运算,并喇叭发射出与噪声相位、振幅相同(理想情况)的声波来抵消噪声;

ANC类型:

单麦类型为FF/FB,双麦类型(HYBIRD);

ANC降噪效果HYBIRD = FF +FB;

ANC模式:

降噪、通透、关闭:分别为对应ANC3个模式,可根据实际开启对应模式

2、ANC工作原理

FF 麦(前馈麦克风,Feedforward Mic)

物理位置:耳机外侧,直接暴露在环境噪声中。

作用:采集 外部环境噪声(如引擎声、风噪等)。

降噪原理:FF 麦拾取噪声 → ANC 滤波器生成 反向声波 → 通过扬声器播放,在耳内与原始噪声 相消干涉。

优点是响应快,对高频噪声效果好,但对佩戴状态和角度较敏感。

FB 麦(反馈麦克风,Feedback Mic)

物理位置:耳机内侧,紧贴耳道或扬声器附近。

作用:采集 耳道内的残余噪声(实际听到的噪声与反相声波叠加后的剩余部分)。

降噪原理:将残余噪声作为 误差信号 反馈回系统,动态修正滤波器系数,形成闭环控制。

优点是能补偿佩戴泄漏,低频稳定性好,但对高频受限且存在延时导致的高频啸叫风险。

(Hybrid ANC)混合降噪中的组合使用

杰理 SDK 支持 混合降噪(Hybrid ANC),即同时使用 FF + FB 麦克风,两者协同:

FF 麦克风处理 宽频外部噪声FB

麦克风补偿 低频残余并适应佩戴变化

3、在可视化JL studioa 中如何配置ANC模式

配置说明:

左声道FFMIC、左声道FBMIC、右声道FFMIC、右声道FBMIC:

ANC MIC的通道配置,根据原理图,配置对应的ANC MIC;

TWS一般仅需配置 左声道FFMIC、左声道FBMIC;头戴式/挂脖耳机需配置左/右声道,多余的MIC配置选择MIC; NULL

TALK MIC:

根据原理图和实际功能设计,配置TALK MIC对应的ADC 通道,一般供ANC_EXT算法使用;

ADC MIC配置:

4、软件上ANC相关代码讲解

cpp 复制代码
/* ANC 模式定义 */
typedef enum {
    ANC_OFF = 1,			/*关闭模式*/
    ANC_ON = 2,				/*降噪模式*/
    ANC_TRANSPARENCY = 3,	/*通透模式*/
} ANC_mode_t;

/* ANC模式切换(下一个模式) */
void anc_mode_next(void);

/*
    ANC模式切换(切换到指定模式),并配置是否播放提示音
    param: mode 指定模式ANC_mode_t
           tone_play 0: 不播放提示音;1: 播放提示音
*/
void anc_mode_switch(u8 mode, u8 tone_play);

/*
    ANC状态获取
    return 0: idle(初始化/OFF); 1: busy(ANC/通透/训练)
 */
u8 anc_status_get(void);

/* 
    获取当前ANC模式 
    return ANC_mode_t
*/
u8 anc_mode_get(void);
/* 
    ANC切模式繁忙标志
    return 0:空闲; 1:切模式中
*/
u8 anc_mode_switch_lock_get(void);

ANC功能模块主要配置的文件在" audio_anc.c "和" audio_anc.h "这两个文件中里面有anc的初始化、ANC配置参数填充、ANC提示音播放、ANC增益淡入淡出等功能设置;

现在带着小伙伴一起代码追踪一下:

1、触摸按键触发时我们可以设置发送如下进入ANC模式的消息(如下图所示):有ANC模式循环切换、ANC降噪开启、ANC降噪关闭、ANC通透模式开启;通常使用ANC模式循环切换消息接口:APP_MSG_ANC_SWITCH;

2、ANC模式提示音播放(如下图所示)

5、ANC相关代码配置根据flash容量配置起始地址

根据SDK版本不同,更换4M芯片、8M芯片或16兆芯片后,有些SDK会根据FLASH空间容量自动切换ANC相关代码配置起始地址,有些SDK需要我们手动在" isd_config_rule.c "文件中进行设置;如不进行设置那么编译会报资源不够、代码段空间不够、容量等类似问题;

6、调试ANC效果步骤

1、在JL studio中打开" FW编辑、在线调音 "功能

2、将代码固件编译之后烧录到耳机端拿给声学工程师调试ANC效果;调试软件为:" ANC DESIGNER "

3、调试完成ANC主动降噪效果之后会有两个文件分别为:

anc_gains.bin: 存放增益/采样率等其他ANC硬件配置(多场景滤波器,不存放Total gain);anc_coeff.bin: 存放降噪/通透滤波器(多场景滤波器,存放 Total gain)。

将这两个新的anc_gains.bin和anc_coeff.bin文件替换SDK路径下的旧文件,这样就更新好了最新调试的ANC降噪效果


制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!

相关推荐
玩转4G物联网7 小时前
FS800DTU 新品上线|免费使用 DMP 设备管理平台,支持远程批量配置 & OTA 升级
物联网·网络协议·tcp/ip·云平台·核心板·fs800dtu·iot管理平台
残影飞雪7 小时前
ESP32-C5下载烧录固件失败报错的原因
单片机·嵌入式硬件
鉴生Eric8 小时前
IoT基础设施产品商的未来:回归本质的三层能力
物联网
搞全栈小苏8 小时前
SIMetrix_simplis8.4安装教程——附安装包
stm32·单片机·嵌入式硬件·电力电子
MetrixAeroCore8 小时前
畜牧牛羊定位耳标物联网卡纽扣电池供电与休眠唤醒策略优化
物联网
qq_573967829 小时前
STM32控制器
stm32·单片机·嵌入式硬件
liguojun20259 小时前
智慧文体旅系统选哪家?豆米跳跳十年技术沉淀支持源码交付
java·大数据·人工智能·物联网·1024程序员节
某林21210 小时前
履带小车底盘stm32F103RCT6开发
人工智能·stm32·单片机·嵌入式硬件·架构·人机交互·ros2
sramdram11 小时前
低功耗MCU微控制器在动态血糖仪(CGM)中的应用方案
单片机·嵌入式硬件·mcu·mcu微控制器
Dlrb121111 小时前
ARM--IMX6ULL的SDK学习,BSP开发工程管理,以及链接脚本与Makefile的编写
单片机·嵌入式硬件·arm·sdk·链接脚本·i.mx6ull·cortex-a7