BES蓝牙耳机开发--基础ANC调试
在目前蓝牙耳机的功能开发中,ANC主动降噪技术已成为提升产品竞争力的核心配置,最近在调试带ANC主动降噪功能的蓝牙耳机,恒玄BES系列蓝牙耳机SDK凭借成熟的ANC功能与完善的调试工具, 成为了开发ANC耳机的主流选择,开发者可以快速开发设计出优越的ANC效果。本篇文章简单介绍了BES恒玄SDK中基础ANC功能的配置方法、ANC调试工具的简单使用方法,并以恒玄BES2700耳机SDK为例,演示了SDK中基础ANC功能的调试方法,不同SDK功能流程上可能有些差异,整体流程思路供参考。
ANC配置
ANC 功能配置
ANC相关功能宏定义可以在项目target.mk文件中进行配置。如下图,ANC总开关由ANC_APP宏进行配置开启。
export ANC_APP ?= 1
根据项目情况开启下面的ANC CONFIG,以下主要开启了以下功能:
- 前馈后馈开关开启
export ANC_FF_ENABLED ?= 1
export ANC_FB_ENABLED ?= 1
分别表示ANC前馈和反馈滤波器是否开启,根据项目来填写; - 硬件音乐补偿配置
export AUDIO_ANC_FB_MC_HW ?= 1
根据项目需要开启硬件FB的音乐补偿功能;通过MC滤波器生成一个补偿信号,抵消FB滤波器对音乐信号的干扰。 - FLASH音频分区配置
export AUDIO_SECTION_SUPPT ?= 1
表示FLASH中是否开辟一块独立的音频区,用于存储ANC系数,工具写入的ANC系数需要固定写在这个独立的音频区,因此这里需要写1。(非常重要)
4.其他配置
如下图还可以可根据项目需要配置ANC高级功能、辅助降噪、麦克风校准等功能,基础调试阶段可保持默认关闭。

ANC MIC通道配置
在项目tgt_hardware.h 文件中配置ANC MIC通道及ANC VMIC供电的选择,这里是需要根据项目硬件原理图设计的引脚配置来匹配,填入正确的通道映射关系。

ANC调试工具使用介绍
这里不得不吐槽一下恒玄BES调试ANC的工具版本很多,不同版本的工具界面及配置都会略有差异,但其操作逻辑基本是一致的,以下工具界面为例
设置界面

工具打开之后首先进入的是配置界面,主要配置步骤有:
- 选择芯片与工具的通信连接方式:这里芯片与工具通信连接的方式主要有:uart、usb、Android以及无线spp、第三方tcspp方式等,推荐调试时使用uart的方式或Android连接的方式。
- programmer bin路径选择:如果使用的是有线的连接方式则需要选择programmer bin,比如使用uart连接的方式,在这种方式下需要将耳机烧录串口线引出,并在bin_file_path选项中选择芯片原厂提供的programmer bin文件,这个bin文件不是跑我们实际写的代码,而是BES提供的ANC调试功能的固件bin文件,这个文件可以在调试工具根目录下的cfg文件夹中找到。
- 芯片功能配置:配置所使用的chipset、flash大小、ANC前后馈功能以及配置存储ANC系数的独立音频区的地址(这些配置需要与SDK代码中target.mk里面的配置一致)。
- 硬件配置:有些板卡硬件设计在工作时需要拉高一些GPIO引脚才可以正常工作,这时候就需要在gpio_cfg设置项中填入需要拉高的GPIO脚;硬件配置还包括下面的麦克风供电配置(这里需要注意的是工具与耳机连接运行时会自动打开所有的VMIC)
- 麦克风通道配置:这里填入的通道需要与代码中target.mk里面设置的麦克风通道保持一致。
以上配置完成后则可以点击save进入调试界面了。
调试界面
进入调试界面就可以对各个通道的配置及滤波器进行调试了,工具连接上耳机之后可以实时调节FF、FB、TT、MC等通道的滤波器参数、增益、相位等,用户可以实时试听降噪效果。
调试完成可以直接点击burn将ANC COEFF参数写入到耳机配置FLASH的AUDIO_SECTION分区中;也可以不写入,点击Generate Target.c生成参数的.c文件,将里面的参数复制到代码区域中。

生成的参数复制到代码中,这里我们参数中配置了两个模式,可以将这两个模式的参数放到代码anc coef list数组中,这样ANC参数便准备就绪了。

ANC参数调用
ANC参数调试完成之后接下去就是代码中ANC参数的调用了。
这里我们可以看到我们anc模式的枚举,这里我们定义了MODE1是降噪模式,MODE2为通透模式(也可以自定义为其他比如强降噪、弱降噪等等,与调试写入的MODE参数一致即可)。

这里比较关键的是通过anc表单中的app_anc_coef_index_cfg设置,配置每个模式使用的滤波器和参数索引。比如下图,MODE1为降噪模式,FF和FB都打开使用且使用的是coef_mode参数0的配置;MODE2为通透模式,这里只用到了FF,配置使用参数1的配置。

此时调用app_anc_switch()函数或app_anc_loop_switch()函数切换模式即可完成不同ANC模式的切换。

462

被折叠的 条评论
为什么被折叠?



