KDocs 研发资料库
  • 音频技术应用文档入口汇总
  • 杰理WINDOWS环境安装及其他事项
  • LINUX安装和编译
  • Linux环境编译SDK教程(ubuntu18.04)
  • 音频类补丁汇总表
  • 认证资料获取汇总(最新资料后台会更新)
  • 《Hi-Res申请指南v1.0》
  • FreeRTOS 开源协议版本
  • uCOS 开源协议版本信息
  • 各个模块关键资料汇总
  • 软件调试方法
  • Makefile编译
  • 提bug的规范
  • 常规设备使用指导
  • 对外特别发布开发注意点信息汇总
  • AD697X软件问题整理
  • AC700N软件问题整理
  • AC701X耳机软件问题整理
  • 951&961软件问题整理
  • AC104X软件问题整理
  • AC128N问题整理文档
  • 可视化工具调试问题整理
  • 耳机资料汇总
  • AC704N、 AC705N相关应用
  • AC695N&AC696N&AC608N音箱问题整理
  • JL701N音箱问题整理
  • AC692X软件问题整理
  • AC706N音箱问题整理
  • JL701N音箱问题整理(可视化工具SDK)
  • JL703N音箱问题整理
  • JL709N(JL689N)音箱问题整理
  • JL7094系列-入门到进阶开发指导
  • AC210N音箱问题整理
  • 无线麦系列版本支持指南
  • AW32N无线麦问题整理
  • lAD697X&JL701X 无线麦软件共性问题整理
  • AC706N无线麦问题整理
  • AW36N无线麦问题整理
  • AC710X无线麦问题整理
  • 唤醒源获取及唤醒IO设置
  • 电源
  • LVD
  • 长按复位配置方法
  • 低功耗应用
  • TIMER
  • UART
  • SPI
  • 内部FLASH空间添加用户自定义区域
  • IIC
  • GPIO
  • MCPWM
  • SD&U盘
  • 时钟&晶振
  • GPCNT
  • IO口crossbar映射功能
  • 文件系统使用总结
  • 复用应用
  • LINEIN_AUX相关应用
  • IIS音频接口应用
  • SPDIF模式相关(HDMI_ARC、光纤、同轴)
  • PDM LINK
  • 外设相关应用
  • 蓝牙相关
  • 杰理蓝牙距离调试文档
  • TWS耳机配对方式使用及生产把控指南
  • GFP谷歌快连及其认证流程指引
  • 蓝牙发射器(bt_emitter)相关
  • BLE应用
  • 关于提升BLE传输速率说明
  • BLE测试数据
  • MUSIC 模式相关应用
  • MIDI音乐实现
  • PC相关应用
  • FM相关应用
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20250107
  • fm应用详细设计说明书
  • 杰理FM硬件指南-20230315
  • ADC模块
  • AUDIO相关应用
  • 新Tools的音效调试使用
  • 混响应用使用说明
  • 音效调式
  • 音箱耳机低音小音量增强实现方法
  • DAC输出功率调试
  • DAC性能测试指南
  • 针对各类底噪、电流声分析流程
  • 录音相关应用
  • OPUS编解码相关
  • RTC相关应用
  • 升级相关
  • UI相关应用
  • 通话调试流程指南
  • 通话相关应用
  • 省电容mic使用手册
  • 如何测试验证手表通话系统的语音失真 V1.0
  • AC695X_AC696X_AD697X 常见通话问题处理参考资料
  • 通话调试问题确定步骤
  • 内置触摸调试指南
  • 低功耗内置触摸介绍V2.2
  • 触摸相关文档
  • AC697X、AC698X内置触摸调试及整改方法V1.0
  • 产测相关应用
  • AC63X BLE DUT测试介绍
  • 兆华序列使用简易说明
  • JL_1T2蓝牙测试盒音频文件更换说明
  • ENC相关应用入口汇总
  • ANC相关应用入口汇总
  • JL DMS通话调试手册-V3.9.4
  • ANC-ENC结构设计要点-20240407
  • 半入耳式ANC耳机器件选型与结构设计指南V1.0
  • JL 耳道自适应调试指南
  • ANC相关问题处理
  • ANC调试文档
  • 评估蓝牙耳机通话上行降噪性能的方法 V1.0 (2)
  • FCC 或者 BQB 认证相关应用
  • BQB profile 测试中常遇到的问题点汇总
  • 蓝牙参数整理20210811
  • 杰理科技认证问题参考
  • 无线音频产品开发指南
  • 无线麦系列从入门到进阶开发指导
  • 量产烧录相关说明
  • 一拖八烧录器远程过程调用说明
  • 量产相关建议
  • EffectTool(eq)调试工具说明文档
  • AC897AD697系列的EQ调试方法-V3
  • 杰理调音指南-20220622
  • 音效模块总结
  • 简要调音步骤指引(可视化)
  • 耳机充电与通信调试指南
  • 充电仓硬件调试指南
  • 充电仓软件问题整理
  • AC951常用说明
  • AC951_AC961_开发板使用说明V1.0
  • 彩屏仓AC982 入门指导及FAQ
  • 蓝牙音频APP相关应用
  • 手机APP的简介和开发流程
  • 蓝牙音频系列-硬件设计指南
  • 静电测试及整改方法-20220706
  • TWS耳机底噪整改指南V1.2
  • 杰理蓝牙距离调试文档
  • 蓝牙RF硬件设计与调试V1.1-20250219
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20241228
  • 音效调试指南
  • 无线话筒K歌音箱标准开发流程
  • 杰理科技 700N TWS耳机产品标准-202303
  • 杰理科技 701N 广播产品标准-202303
  • JL-HAT ANC高效产测自适应
  • 无线话筒测试板使用介绍
  • 一拖八频偏校准使用说明
  • 领夹麦产测工具使用介绍
  • Dongle量产测试说明
  • Dongle+Tws或头戴式 SDK通过工具绑定配对功能说明文档
  • 双麦ENC产测宏配置验证方法 V1.0
  • JL耳机方案麦克风声学测试指令_V1.0
  • JL耳机方案麦克风声学测试指令_V2.0
  • JL_ENC自动测试命令_V0.0.1
  • JL蓝牙测试盒用例说明
  • LDAC自测环境搭建_ubuntu
  • 延迟小板使用手册
  • 杰理库文件的制作及添加实现过程
  • 关于 AC635N&AC636N系列免晶振兼容性补丁 说明
  • 关于 AC63系列VM兼容性修复补丁_20250224 说明
  • 关于 AC632N &AE632N_ 蓝牙& 低功耗兼容性修复补丁 说明
  • AD698N和AC638N电压优化补丁V3说明
  • 关于 AC635N&AC636N漏电和E&G版兼容联合补丁 说明
  • AD698N和AC638N电压优化补丁V2说明
  • 702相关应用
  • 2024-4-30 发布歌词显示SDK开发注意事项
  • BQB RF & FCC 认证测试固件问题汇总及源码
  • BQB profile 测试中常遇到的问题点汇总
  • 进dut测试模式方法及固件
  • 704-频偏修改bin文件合集
  • 701手表BQB PROFILE认证注意事项
  • 认证的干扰规避整改
  • 海外CRA认证报告生成说明
  • JL700N可视化工具问题处理文档
  • JL701X可视化工具问题处理文档
  • JL701N_earphone_release_v1.6.0_ANC 低功耗问题补丁
  • JL708X可视化工具问题处理文档
  • JL709N可视化工具问题处理文档
  • JLstudio可视化工具使用说明
  • 一拖二-串口_蓝牙_app在线EQ、通话参数及调试方式和内置触摸调试
  • 可视化JL701M_DONGLE_SDK添加MIC为发射源
  • 可视化JL701M_DONGLE_SDK添加按键切换usb audio与MIC发射源
  • JL701M_DONGLE_SDK_1.0.0_dongle输入linein输出dac
  • 701可视化_a2dp_to_le_demo说明
  • 耳机系列demo汇总
  • JL7018F&JL7006F_7003F AUX IIS
  • 一键连接应用
  • 普通SDK动态开关一拖二功能
  • 蓝牙分析仪(EllisysBluetoothAnalyzer)抓包例程
  • TWS配对常见应用
  • APP自定义按键的demo
  • AC700N 播歌双EQ DEMO示例及说明
  • AC698V164 MIC与蓝牙音乐共同输出DAC demo
  • 添加第三方算法以及多算法授权流程
  • 空间音频配置方法
  • 普通高低电平TWS耳机控制通讯
  • 入耳检测状态更新demo解析
  • 资源优化(非可视化的SDK)
  • 资源优化(可视化SDK)
  • 翻译耳机、语音识别应用demo
  • 耳机抗干扰问题排查和优化
  • AC698D2 抗干扰优化
  • AC696X软件问题整理
  • AC695X软件问题整理
  • AC695X软件问题整理_1722249702
  • AC608X软件问题整理
  • JL701N_2T1_DUPLEX 应用软件问题汇总
  • le_audio_1.0.0_patch05 以及之前的版本IRkey 功能异常修改
  • AC706N-le_audio-200SDK有线_无线麦录音demo
  • jl701n_le_audio_v200patch02 IO串口升级修改串口单次发送字节长度的修改办法
  • 703创建IIS 输入dac输出音频流demo
  • 703将媒体流音频同时上传PC_mic录音demo实现
  • 703四路IIS输入输出demo
  • 底噪调试
  • AW328A烧录说明
  • 文档合集
  • AC706N_wireless_mic_release_PATCH_20240712 补丁 说明
  • AC706N_wireless_mic_release_PATCH_20240726 补丁 说明
  • AC706N_wireless_mic_release_V1.0.0、1.0.1、1.0.2 补丁 说明
  • AC706N_wireless_mic_release_V1.1.2 中的2T1应用 RX端不绑定配对,TX端实现绑定配对的修改方法
  • 各系列省晶振实现方法
  • iis tx rx说明文档
  • spdif信号
  • 蓝牙电话本
  • 安卓手机同步时间补丁
  • CDC配置
  • PC模式下增加Teams唤起功能
  • 杰理HDMIARC开发实现过程
  • AC701N patch06之前的版本用第三方算法节点实现新版本的pcm delay节点功能
  • (K歌音箱)各SDK音效配置相关说明
  • 长文件录音
  • 点阵屏歌词字库相关(蓝牙歌词,普通歌词)
  • 字模提取工具说明
  • 音箱可视化彩屏-入门到进阶开发指导
  • 彩屏LVGL UI设计及工具使用
  • 使用内部UI框架进行UI调试的系列步骤
  • AD101C使用强制升级工具spi 烧录不了问题处理(测试版本)
  • AD161扩展灯板说明文档
  • 歌词显示器开发注意项
  • 使用硬件数字增益控制通话下行音量(可视化)
  • 杰理小牛产测资料
  • ENC配置说明
  • 通话调试流程指引
  • ANC相关功能demo
  • 无线麦硬件资料汇总
  • 无线麦相关应用
  • 无线麦复杂功能补丁包汇总
  • 无线话筒形态SDK程序&开发经验&问题点分享
  • 双模式结合应用问题汇总
  • 无线麦距离优化案例
  • 无线麦系列中的双工形态(duplex)演变开发对讲机方案开发资料
  • 音箱入门到进阶指导文档(编写中)
  • 蓝牙耳机品控和生产技巧
  • 982过_欠压标志获取异常
  • 如何获取最新涂鸦SDK及库文件
  • 无线话筒K歌音响-调音标准流程
  • 无线话筒产测流程

JL ANC_产测设备通信协议v2.3.5

📎 原始文档:https://www.kdocs.cn/l/cnyi07eDAx6I JL ANC 产测设备通信协

议v2.3.5

珠海市杰理科技股份有限公司

Zhuhai Jieli Technology Co.,LTD

版权所有,未经许可,禁止外传

修改记录

版本更新日期描述
V2.1.720220728初始版本
V2.1.820220823添加anc_coeff.bin anc_gains.bin读写流程
V2.1.920220920完善设置耳机ANC结构的说明(FF/FB/HYBIRD)
V2.2.020230703更新配置文件读写描述错误的问题
V2.3.020240105新增多滤波器命令流程
V2.3.120240118多滤波器修复示例错误,补充场景切换命令,蓝牙SPP与有线uart不同接线方式命令内容不一致的说明
V2.3.320240914支持JL708N、 JL709N
V2.3.420250226新增透传命令格式,支持MIC增益补偿功能
V2.3.520250710更新JL710N 的芯片版本号(0X7、 0XA7)

目 录
一、 各芯片系列支持的产测校准方式............................................................. 1
二、 数据格式: (小端格式) .............................................................................. 1
三、 an c_ gain s_ t结构体...................................................................................2
(一) AD697N/AC897N/AC699N/AD698N如下结构.................................................................................. 2
(二) AC700N/JL701N 如下结构............................................................................................................. 2
(三) JL708N/JL709N 如下结构............................................................................................................. 4
四、 命令表.......................................................................................................... 8
五、 产测方式 1.0/2.0流程........................................................................... 17
(四) 产测方式 1.0- 遵循命令表相关协议...................................................................................... 17
(五) 产测方式2.0- 遵循命令表相关协议...................................................................................... 17
六、 滤波器调节注意点.................................................................................... 18
(一)滤波器读写..................................................................................................................................... 18
(二)Js。n文件解读(获取原有耳机滤波器类型及参数) ................................................................ 19
1. 单滤波器Js。n说明................................................................................................................ 19
2. 多滤波器Js。n说明................................................................................................................ 21
七、 发送ANC配置文件到小机....................................................................... 23
(一) 配置文件的数据结构................................................................................................................... 23
(二) 具体流程....................................................................................................................................... 23
1. an c_ c。eff.bin ........................................................................................................................ 23
2. an c_ g ain s.bin ........................................................................................................................ 23
八、 产测方式3.0- 多滤波器流程.............................................................. 25
(一) 数据结构....................................................................................................................................... 25
(二) 多滤波器协议命令使用注意事项............................................................................................... 27
(三) 多场景滤波器流程....................................................................................................................... 29
九、ANC 透传命令(格式) ..............................................................................31
(一) 数据结构(小端格式) ................................................................................................................... 31
(二) 命令表........................................................................................................................................... 31
十、FAQ ................................................................................................................ 34

一、各芯片系列支持的产测校准方式

产测方式支持芯片/SDK 系列备注
产测 1.0AC897N/AD697N支持调增益,外部噪声训练滤波器
产测2.0AC700N支持调增益/滤波器
AC701N
产测3.0AC701N (ac701n_earphone_release_v1 .6.0 以后)(可视化 1.0.0 bugfix_05_04 以后)支持调增益/滤波器(Version 0x4)
支持多场景滤波器(Version 0xA4)
JL708N支持调增益/滤波器(Version 0x5)
支持多场景滤波器(Version 0xA5)
JL709N支持调增益/滤波器(Version 0x6)
支持多场景滤波器(Version 0xA6)
JL710N支持调增益/滤波器(Version 0x7)
支持多场景滤波器(Version 0xA7)

二、数据格式: (小端格式)

帧格式

MAGIC0MAGIC1IDLEN (u 16)DATACRC16
1byte1byte2byte2byteN byte2byte
0xAA0x55序号数据段长度数据CRC校验

DATA段格式

CMD命令携带内容
1byteN-1 byte

注意:CRC16 需校验MAGIC0+MAGIC1+ID+LEN+DATA 的数据,CRC-16/XMODEM X16+X12+X5+1 ID不能为0,从机未响应时重发数据包ID相同,发送下一个数据包则ID 累加从机回复时 ID段为主机发送的 ID

三、anc_gains_t结构体

当调用以下命令时:交互数据内容为struct anc_gain_t 结构体,不同CPU 系列结构体内容有差异;

0x2B 工具写入增益(所有参数)
0x2C 工具读取增益(所有参数)

(一)AD697N/AC897N/AC699N/AD698N如下结构

image

  1. typedef struct {​
  2. u8 dac_gain ; //dac增益, default:8 ,range: [0: 15]
  3. u8 ref_mic_gain ; //参考mic增益default:6 ,range [0: 19]
  4. u8 err_mic_gain ; //误差mic增益default:6 ,range [0: 19]
  5. u8 order ; //滤波器阶数
  6. u8 trans_hpf_sel; //通透高通滤波器
  7. u8 trans_lpf_sel; //通透低通滤波器
  8. u8 trans_order ; //通透模式滤波器阶数default:1 ,range [1:4]
  9. u8 trans_advance_mode; //高级通透模式使能default:0 ,range [0-3]
    [10.](10. int)[ int](10. int) ff_gain; //降噪模式增益default:-8096,range[-32768:32767]
    [11.](11. int)[ int](11. int) trans_gain; //通透模式增益default:7096,range[-32768:32767]
    [12.](12. int)[ int](12. int) fb_gain; //FB增益default:-8096,range[-32768:32767]
  10. u32 sample_rate; //采样率
  11. u32 trans_sample_rate; //通透模式采样率default:48000range [ 12000 ,24000 ,48000 ,96000]
  12. ​} anc_gain_t ; 16.

(二)AC700N/JL701N 如下结构

image

  1. typedef struct {​
  2. //cfg
  3. u 16 version ; //当前结构体版本号= 0x7001
    image
  4. u8 dac_gain ; //dac模拟增益 range 0-15; default 13
    imageimage
  5. u8 fade_step ; //淡入淡出步进 range 0-15; default 1
  6. u32 alogm; //ANC算法因素
  7. u32 trans_alogm; //通透算法因素
  8. float l_ffgain ; //ANCL FF增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
  9. float l_fbgain ; //ANCL FB增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
  10. float l_transgain ; //ANCL 通透增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
  11. float l_cmpgain ; //ANCL 音 乐 补 偿 增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
  12. float r_ffgain ; //ANCR FF增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
  13. float r_fbgain ; //ANCR FB增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
    image
  14. float r_transgain ; //ANCR 通透增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
  15. float r_cmpgain ; //ANCR 音 乐 补 偿 增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
  16. u8 drcff_zero_det; //DRCFF过零检测使能range 0-1; default 1 ;
  17. u8 drcff_dat_mode; //DRCFF_DAT模式 range 0-3; default 0 ;
  18. u8 drcff_lpf_sel; //DRCFF_LPF档位 range 0-3; default 0 ;
  19. u8 drcfb_zero_det; //DRCFB过零检测使 range 0-1; default 1 ;
  20. u8 drcfb_dat_mode; //DRCFB_DAT模式 range 0-3; default 0 ;
  21. u8 drcfb_lpf_sel; //DRCFB_LPF档位 range 0-3; default 0 ; 31.
  22. u 16 drcff_lthr ; //DRCFF_LOW 阈值 range 0-32767; default 0 ;
  23. u 16 drcff_hthr ; //DRCFF_HIGH 阈值 range 0-32767; default 32767;
  24. s16 drcff_lgain ; //DRCFF_LOW增益 range 0-32767; default 0 ;
  25. s16 drcff_hgain ; //DRCFF_HIGH增益 range 0-32767; default 1024;
  26. s16 drcff_norgain ; //DRCFF_NOR增益 range 0-32767; default 1024; 37.
  27. u 16 drcfb_lthr ; //DRCFB_LOW 阈值 range 0-32767; default 0 ;
  28. u 16 drcfb_hthr ; //DRCFB_HIGH 阈值 range 0-32767; default 32767;
  29. s16 drcfb_lgain ; //DRCFB_LOW增益 range 0-32767; default 0 ;
  30. s16 drcfb_hgain ; //DRCFB_HIGH增益 range 0-32767; default 1024;
  31. s16 drcfb_norgain ; //DRCFB_NOR增益 range 0-32767; default 1024; 43.
  32. u 16 drctrans_lthr ; //DRCTRANS_LOW 阈值 range 0-32767; default 0 ;
  33. u 16 drctrans_hthr ; //DRCTRANS_HIGH 阈值range 0-32767; default 32767;
  34. s16 drctrans_lgain ; //DRCTRANS_LOW增益 range 0-32767; default 0 ;
  35. s16 drctrans_hgain ; //DRCTRANS_HIGH增益range 0-32767; default 1024;
  36. s16 drctrans_norgain ; //DRCTRANS_NOR增益 range 0-32767; default 1024; 49.
  37. u8 ahs_dly ; //AHS_DLY range 0-15; default 1
  38. u8 ahs_tap ; //AHS_TAP range 0-255; default 100
  39. u8 ahs_wn_shift; //AHS_WN_SHIFT range 0-15; default 9
  40. u8 ahs_wn_sub ; //AHS_WN_SUB range 0-1; default 1
  41. u 16 ahs_shift; //AHS_SHIFT range 0-65536; default 210;
    image
  42. u 16 ahs_u ;
  43. s16 ahs_gain ;
    //AHS步进 range 0-65536; default 4000
    //AHS增益 range-32767-32767;default-1024;
  44. ​} anc_gain_param_t ; //子结构,总大小 100byte 58.
  45. /ANCIF配置区滤波器系数gains/
  46. typedef struct {​
  47. anc_gain_param_t gains;
  48. u8 reserve [236-100] ; //236 + 20byte (header)
  49. ​} anc_gain_t ; //总结构,总大小236byte

(三)JL708N/JL709N 如下结构

image

  1. //DCC结构
  2. typedef struct {​
  3. u8 norm_dc_par ; // range 0-15; default 0
  4. u8 pwr_dc_par ; // range 0-15; default 2
  5. u8 amp 1_dc_par ; // range 0-15; default 0
  6. u8 amp2_dc_par ; // range 0-15; default 6
  7. u 16 pwr_thr ; // range 0-65535; default 12000
  8. u 16 amp_thr ; // range 0-65535; default 12000 9.
  9. u8 adj_dc_par 1 ; // range 0-15; default 0 // allow writing at any time
  10. u8 adj_dc_par2 ; // range 0-15; default 6
  11. u8 adj_incr_step ; // range 0-7; default 0
  12. u8 adj_upd_sample; // range 0-7; default 0
  13. ​} anc_core_dcc_t ; 15.
  14. //DRC结构
  15. typedef struct {​
  16. u 16 threshold; //drc threshold range 0-1023; default 531
  17. u8 ratio; //drc ratio range 4-255; default 255
  18. u8 mkg ; //drc makeup-gain range 0-6; default 0
  19. u8 knee; //drc kneewidth range 4-255; default 64
  20. u8 att_time; //drc attack time range 0-19; default 3
    imageimage u8 l_fbmic_gain ; //ANCL FBmic增益 range 0-4; default 0
  21. u8 r_ffmic_gain ; //ANCR FFmic增益 range 0-4; default 0 ;
    u8 r_fbmic_gain ; //ANCR FBmic增益 range 0-4; default 0 ;
  22. u8 cmp_en ; //音乐补偿使能 range 0-1; default 1
  23. u8 drc_en ; //DRC使能 range 0-7; default 0 u8 ahs_en ; //AHS使能 range 0-1; default 0
  24. u8 gain_sign; //ANC各类增益的符号 range 0-255; default 0 u8 noise_lvl; //训练的噪声等级 range 0-255; default 0

u8 ff_alogm; //ANC FF算法因素 range 0-7; default 5
u8 cmp_alogm; //ANC CMP算法因素 range 0-7; default 5
image 36.
image 43. u8 fb_alogm; //ANC FB算法因素 range 4-7; default 5
image 45. u8 trans_alogm; //通透算法因素 range 0-7; default 5
image 46.
imageimage 58. anc_core_drc_t drc_top_trans; //8 byte
59. anc_core_drc_t drc_core_ff; //8 byte
60. anc_core_drc_t drc_core_fb; //8 byte
61. anc_core_drc_t drc_core_trans; //8 byte
62. anc_core_drc_t drc_dac_mux; //8 byte 63.
64. anc_core_dcc_t dcc_ff; //12 byte
65. anc_core_dcc_t dcc_fb; //12 byte 66.
67. u8 ahs_dly ; //AHS_DLY range 0-15; default 1 ;

68.u8 ahs_tap ; //AHS_TAP range 0-255; default 100;
69.u8 ahs_wn_shift; //AHS_WN_SHIFT range 0-15; default 9 ;
70.u8 ahs_wn_sub ; //AHS_WN_SUB range 0-1; default 1 ;
71.u 16 ahs_shift; //AHS_SHIFT range 0-65536; default 210;
72.u 16 ahs_u ; //AHS步进 range 0-65536; default 4000;
73.s16 ahs_gain ; //AHS增益 range-32767-32767;default-1024;
74.u8 ahs_nlms_sel; //AHS_NLMS range 0-1; default 0 ;
75.u8 developer_mode; //GAIN开发者模式 range 0-1; default 0 ;

image 32.
image 34.
image 38.
image 40.
image 42.
image 44.
47. float l_ffgain ; //ANCL FF增益 range 0.0316 ( -30dB) -31.622 (+30dB); default 1.0 (0dB)
image 57. anc_core_drc_t drc_top_fb; //8 byte
76.
77. float audio_drc_thr ; //Audio DRC 阈值 range-6.0-0; default-6.0dB; 78.
79. u8 dcc_mode; //DCC模式 range 0-2; default 0 ;
80. u8 adaptive_ref_en ; //耳道自适应-金机曲线参考使能
81. u8 mic_cmp_gain_en ; //MIC 补偿值使能控制 range 0-1; default 0 ;
82. u8 reserve_ 1 ; //预留位
83.
84. float adaptive_ref_fb_f; //FB参考F最深点位置中心值 range 80-200; default 135
85. float adaptive_ref_fb_g ; //FB参考G最深点深度 range 12-22; default 18
image 86. float adaptive_ref_fb_q ; //FB参考Q最深点降噪宽度 range 0.4-1.2 ; default 0.6 87.
88. float l_ffmic_cmp_gain ;
89. //ANCL FFmic 补偿增益(产测使用) , range 0.0316 (-30dB) -31.622 (+30dB); default 1.0 (0dB)
90. float l_fbmic_cmp_gain ;
91. //ANCL FBmic 补偿增益(产测使用) , range 0.0316 (-30dB) -31.622 (+30dB); default 1.0 (0dB)
92. float r_ffmic_cmp_gain ;
93. //ANCR FFmic 补偿增益(产测使用) , range 0.0316 (-30dB) -31.622 (+30dB); default 1.0 (0dB)
94. float r_fbmic_cmp_gain ;
95. //ANCR FBmic 补偿增益(产测使用) , range 0.0316 (-30dB) -31.622 (+30dB); default 1.0 (0dB) 96.
97. //相关性检测HD param
98. u8 hd_en ; //啸叫检测使能 range 0-1; default 1 ;
99. u8 hd_corr_thr ; //相关性检测阈值 range 0-255; default 232;
100. u 16 hd_corr_gain ; //相关性预设增益 range 0-1024 default 512;
101. u8 hd_corr_dly ; //相关性检测延时 range 2-30; default 30; 102.
103. //功率检测全频带,增益可预设
104. u8 hd_pwr_rate; //功率检测回音处理前后比例 range 0-3; default 2 ;
105. u8 hd_pwr_ctl_gain_en ; //功率检测是否使用预设的增益使能 range 0-1; default 0 ;
106. u8 hd_pwr_ctl_ahsrst_en ;//功率检测是否复位AHS range 0-1; default 1 ;
107. u 16 hd_pwr_thr ; //功率检测阈值设置,增益自动 range 0-32767; default 18000;
108. u 16 hd_pwr_ctl_gain ; //功率检测预设增益 range 0-16384; default 1638; 109.
110. //可选带宽增益自动调节
111. u8 hd_pwr_ref_ctl_en ; //参考功率检测自动调增益使能 range 0-1; default 0 ;
112. u8 hd_pwr_err_ctl_en ; //误差功率检测自动调增益使能 range 0-1; default 0 ;
113. u 16 hd_pwr_ref_ctl_hthr ; //参考功率检测H_THR ,触发中断 range 0-32767; default 2000;
114. u 16 hd_pwr_ref_ctl_lthr 1 ; //参考功率检测L1_THR range 0-32767; default 1000;
115. u 16 hd_pwr_ref_ctl_lthr2 ; //参考功率检测L2_THR ,小于L1_THR range 0-32767; default 200; 116.
117. u 16 hd_pwr_err_ctl_hthr ; //误差功率检测H_THR ,触发中断 range 0-32767; default 2000;
118. u 16 hd_pwr_err_ctl_lthr 1 ; //误差功率检测L1_THR range 0-32767; default 1000;
119. u 16 hd_pwr_err_ctl_lthr2 ; //误差功率检测L2_THR ,小于L1_THR range 0-32767; default 200;
image

四、命令表

命令表0x04 获取版本号格式为:V1.0.0
0x13 ANC关
0x14 ANC 降噪模式
0x15 ANC通透模式
0x20 开始读取系数
0x21 连续读系数
0x22 开始写入系数
0x23 连续写系数
0x24 写入系数完成
0x29 通过ID设置增益参数(读取单个增益参数)
0x2A 通过ID读取增益参数(写入单个增益参数)
0x2B 工具写入增益(所有参数,转接板不解释数据结构)
0x2C 工具读取增益(所有参数,转接板不解释数据结构)
0x2D 让耳机进入BYPASS模式,带一个参数
0x2E 获取耳机的ANC结构(FF/FB/HYB )
0x2F 设置耳机的ANC结构,混合溃才能切
0x30 获取耳机系数内容大小,返回4byte
0x31 让耳机进入单独静音训练
0x32 单独静音训练结束 mic->pc, 0x31命令执行成功后,转接板会在耳机静音训练完成后会回0x32命令
0x33 静音训练结束后,获取训练信息命令
0x34 开始读文件,携带文件ID ,返回文件长度
0x35 读取文件数据,携带地址及长度
0x36 开始写文件,携带文件ID及文件长度
0x37 写入文件数据,携带地址及长度
0x38 写入文件结束
0x39 获取耳机芯片版本
0x3A 让耳机进入通透训练
0x3B 单独通透训练结束 mic->pc, 0x3A命令执行成功后,转接板会在耳机静音训练完成后会回0x3B命令
0x3E 获取耳机通道设置
0x3F 发送密码给小机
0x43 获取ANC最大滤波器个数
0x55 ANC 多场景设置
0xFE 执行失败
0xFF 未知命令
错误号0x00 没有错误
0x01 耳机不在线
0x02 耳机端返回失败
0x03 处于训练阶段,MIC 直通状态,不允许发命令给耳机
0x04 读取系数时耳机没有训练系数
0x05 写系数时长度异常
0x06 参数长度异常
0x07 版本匹配异常,请更新转接板固件
0x08 读文件失败
0x09 写文件失败
训练结果0x01 执行成功
0x80
0x80
0x80
0x80
0x80
0x80

1、 获取版本号,第一个命令应该获取版本号,如果版本不兼容提示升级 PC SEND: CMD = 0x04
成功返回:CMD = 0x04,携带版本号字符串(V2.1.0)

2、 设置ANC 降噪关闭

PC SEND: CMD = 0x013
成功返回:CMD = 0x013

3、 设置ANC 降噪开启

PC SEND: CMD = 0x014
成功返回:CMD = 0x014

4、 设置ANC通透模式

PC SEND: CMD = 0x015
成功返回:CMD = 0x015

AC700N/AC701N 系数结构如下:

主结构anc_coeff_t (注意数据格式为 小端格式)

U16U16U8*
versioncntdat [0 ]

Version: 表示当前耳机是属于哪个芯片版本,通过0x39 命令获得。
Cnt: 表示当前结构有多少类滤波器, 比如发送左FF+左FF+右FF+右FB, cnt = 4
Dat: 表示数据包,不定长;dat[0 ]的结构如下:

U16U16U16
idoffsetlen
idoffsetlen
···
idoffsetlen
(U8*)Iir_dat ···

各类滤波器id如下:
image Offset: 表示该id滤波器需要在(u8*)iir_dat 滤波器基础上偏移多少byte 的位置
Len: 表示该id滤波器的总长度(byte)以左FF+左FB 为例,各 10 阶 IIR滤波器(double;顺序b0 ,b1 ,b2 ,a1 ,a2),此时的cnt = 2;结构如下

Version (0x3)Cnt (0x2)Id (0x0)Offset (0x0)Len (0x190)
Id (0x1)Offset (0x190)Len (0x190)(double)b0(double)b1
(double)b2(double)a1(double)a2该类共计 400byte (L_FF_IIR) ···
(double)b0(double)b1(double)b2(double)a1(double)a2
该类滤波器共计400byte(L_FB_IIR) ···

注意事项:数据格式为小端格式,每类IIR滤波器长度不可更改,默认 10 阶(400byte),最大支持20 阶(800byte),根据读取小机的滤波器长度决定。
AC701N 多场景滤波器数据结构参考《六、多滤波器流程;(一)数据结构》,需使用 0x34-0x38命令读写系数;

5、 开始读取系数(不支持多场景滤波器)

PC SEND: CMD = 0x20
成功返回:CMD = 0x20,携带4byte 系数长度
错误返回: CMD = 0xFE,携带错误号
6、 连续读取系数(每包读取数据长度不超过512) (不支持多场景滤波器) PC SEND: CMD = 0x21,携带4byte偏移量及4byte读取长度
成功返回:CMD = 0x21,携带读的数据
错误返回: CMD = 0xFE,携带错误号

7、 开始写入系数(不支持多场景滤波器)

PC SEND: CMD = 0x22,携带4byte写入长度
成功返回:CMD = 0x22
错误返回: CMD = 0xFE,携带错误号
8、 连续写入系数(每包写入数据长度不超过512) (不支持多场景滤波器) PC SEND: CMD = 0x23,携带4byte偏移量及nbyte 的要写的数据
成功返回:CMD = 0x23

9、 写入系数完成(不支持多场景滤波器)

PC SEND: CMD = 0x24
成功返回:CMD = 0x24
错误返回: CMD = 0xFE,携带错误号
AD697N/AC897N/AC699N/AD698N 如下 ID设置
image AC700N 如下 ID设置://注意增益为float,上位机显示单位(dB),发送给小机需转成float (基准 0dB = 1.00f )
image ID---ANC_GAIN_SIGN_SET:是各类增益的符号(size(u8)),对应位置 1表示取反增益。一般开发环节已经设置好。 以下是各类增益的对应位置
image

10、 设置增益参数(单个设置)

PC SEND: CMD = 0x29, 4 字节 id(id号参考上图),4 字节值
成功返回:CMD = 0x29
错误返回: CMD = 0xFE,携带错误号
例如:
① 设置左FF 的增益0dB , id号 = 0x00 00 00 14(大端格式),则目标增益 gain = 10^ (0 dB/20) = 1.0f;
② 根据IEEE 754 浮点计算标准, 1.0f在16进制的存储形式为0X3F800000(大端
格式)
③ 由于样机软件架构为小端格式, 以上设置增益完整命令为
AA 55 01 00 09 00 29 14 00 00 00 00 00 80 3F 6F 7C 其中DATA段 “29 14 00 00 00 00 00 80 3F”
“29”表示 当前命令CMD;“14 00 00 00”表示4 字节 id;“00 00 80 3F”表示当前 id设置的值。
注意:id号对应的左/右声道,是指芯片端引出的DAC 引脚
1 在TWS方案中,不是对应实际样机左右耳,需根据"0x3E "命令获取当前耳机有效的通道,下发对应通道id 的命令。
2 在头戴式/挂脖方案中,则是对应实际左右喇叭, 同样可以通过 “0X3E”命令获取当前耳机有效的通道。

11、 读取增益参数(单个读取)

PC SEND: CMD = 0x2A, 4 字节 id(id号参考上图)
成功返回:CMD = 0x2A, 4 字节值
错误返回: CMD = 0xFE,携带错误号

12、 设置增益参数(所有参数一起设置)

PC SEND: CMD = 0x2B, anc_gain_t结构体
成功返回:CMD = 0x2B
错误返回: CMD = 0xFE,携带错误号
注:anc_gain_t 结构体内容,参考 <<三、anc_gain_t 结构体>>
13、 读取增益参数(所有参数一起读取) PC SEND: CMD = 0x2C
成功返回:CMD = 0x2C, anc_gain_t结构体
错误返回: CMD = 0xFE,携带错误号

14、 设置耳机bypass模式

PC SEND: CMD = 0x2D, bypass_mode(1byte)暂时没有意义
成功返回:CMD = 0x2D
错误返回: CMD = 0xFE,携带错误号
imageimageimage 15、 获取耳机ANC结构,FF/FB/HYBRID PC SEND: CMD = 0x2E
成功返回:CMD = 0x2E,结构值 1byte(上图)
错误返回: CMD = 0xFE,携带错误号
16、 设置耳机ANC结构,FF/FB/HYBRID ,发什么就使能什么,剩下的都会关闭。(掉电不保存,仅测试用)
PC SEND: CMD = 0x2F,结构值 1byte(上图)
成功返回:CMD = 0x2F
错误返回: CMD = 0xFE,携带错误号

17、 获取耳机系数大小

PC SEND: CMD = 0x30
成功返回:CMD = 0x30,耳机系数内容大小(4byte)
错误返回: CMD = 0xFE,携带错误号

18、 让耳机进入单独静音训练

PC发送命令:0x31
MIC执行命令成功时反馈:0x31
MIC执行命令失败时反馈:0xfe + 错误号
训练结果反馈:训练成功->0x32 + 0x01
训练失败->0x32 + 0x80|(失败原因,详见命令表)
(训练结果反馈时长8-12s)

19、 获取静音训练信息

PC发送命令:0x33
MIC执行命令成功时反馈:
0x33 + sz_nadap + sz_adap + sz_mute + fz_nadap + fz_adap + fz_mute MIC执行命令失败时反馈:0xfe + 错误号

20、 读文件开始

PC SEND: 0x34 + 文件id (4byte)
成功返回: 0x34 + 文件长度(4byte)
错误返回: 0xfe + 错误号

21、 读文件数据(每包读取数据长度不超过512)

PC SEND: CMD = 0x35, + 读文件偏移量(4byte)+ 读文件长度(4byte)
成功返回: CMD = 0x35,携带读的数据
错误返回: CMD = 0xFE,携带错误号

22、 写文件开始

PC SEND: CMD = 0x36, + 文件id(4byte)+ 文件长度(4byte)
成功返回: CMD = 0x36
错误返回: CMD = 0xFE,携带错误号

23、 写文件数据(每包写入数据长度不超过512)

PC SEND: CMD = 0x37, + 写文件偏移量(4byte)+ 文件数据
成功返回: CMD = 0x37
错误返回: CMD = 0xFE,携带错误号

24、 写文件结束

PC SEND: CMD = 0x38,
成功返回: CMD = 0x38
错误返回: CMD = 0xFE,携带错误号

  1. //ANC芯片版本定义
2.#defineANC VERSION BR300x01image
//AD697N/AC897N
3.#defineANC VERSION BR30C0x02//AC699N/AD698N
4.#defineANC VERSION BR360x03image
//AC700N
5.#defineANC VERSION BR280x04//JL701N/BR40
6.#defineANC VERSION BR28 MULT0xA4image
//JL701N 多滤波器
7.#defineANC VERSION BR500x05//JL708N
8.#defineANC VERSION BR50 MULT0xA5image
//JL708N 多滤波器
9.#defineANC VERSION BR520x06//JL709N
10.#defineANC VERSION BR52 MULT0xA6image
//JL709N 多滤波器

imageimageimageimageimage

25、 获取耳机芯片版本

PC SEND: CMD = 0x39,
成功返回:CMD = 0x39,芯片版本(如上代码宏定义)
错误返回: CMD = 0xFE,携带错误号
26、 让耳机进入单独通透训练
PC发送命令:0x3A + 参数(4byte int 型)
MIC执行命令成功时反馈:0x3A
MIC执行命令失败时反馈:0xfe + 错误号
训练结果反馈:训练成功->0x3B + 0x01
训练失败->0x3B + 0x80|(失败原因,详见命令表)
(训练结果反馈时长8-12s)
如需要获取通透训练收敛参数,请发送0x33命令获取,具体命令说明参考第 19 点。
image 27、 获取耳机ANC通道 PC SEND: CMD = 0x3E
成功返回:CMD = 0x3E,结构值 1byte(上图)
23、 PC和设备密码配对
PC SEND: CMD = 0x3F + 密码字符串
成功返回: CMD = 0x3F
错误返回: CMD = 0xFE,携带错误号
24、 获取耳机最大滤波器个数 PC SEND: CMD = 0x43
成功返回: CMD = 0x43,滤波器个数
错误返回: CMD = 0xFE,携带错误号
25、ANC 多场景设置 当前使用的场景(仅支持蓝牙SPP)
PC SEND: CMD = 0x55, + 场景ID(1byte)
成功返回: CMD = 0x55
错误返回: CMD = 0xFE,携带错误号
(支持有线串口、 同时支持蓝牙SPP)
PC SEND: CMD = 0xFD 0x90 0x55, + 场景ID(1byte)
成功返回: CMD = 0xFD 0x90 0x55
错误返回: CMD = 0xFD 0x90 0xFE,携带错误号

五、产测方式 1.0/2.0流程

(四)产测方式 1.0- 遵循命令表相关协议

支持系列AC897N/AD697N,
1、 先读取软件版本号,命令0x04
2、 读取耳机增益参数,命令0x2C
3、 静音训练,发送命令0x31,外部喇叭静音,并等待静音训练结束。(步骤可选)
4、 通透训练,发送命令0x3A,外部喇叭静音,并等待通透训练结束。(步骤可选)
5、 设置ANC 降噪关闭,命令0X13,外部播放扫频信号,测试PNC性能
6、 设置ANC 降噪开启,命令0X14 ,外部播放扫频信号,测试ANC性能
7、 判断ANC性能 pass或者fail,失败则再调整增益参数(命令0x29),跳到6 重新测试

(五)产测方式2.0- 遵循命令表相关协议

支持系列AC700N/JL701N/JL708N/JL709N
1、 先读取软件版本号,命令0x04
2、 获取耳机结构,命令0x2E
3、 获取耳机通道(左、右、左+右),命令0x3E,
(注意:左通道的要对应设这左增益/滤波器,右通道要对应设置右增益/滤波器,这里左右针对芯片级DAC输出引脚,TWS左右两只耳机会都用左或者都用右,仅有头戴式或挂脖耳机会使用左+右)
4、 读取耳机增益参数,命令0x2C
5、 修改增益参数(可用命令0x29或者0x2B)(步骤可选)
6、 输入密码,读取系数文件(密码命令0x3F , 默认字符串’123456’,读取系数命令0x20 0x21) (步骤可选)
7、 修改系数文件(命令0x22 0x23 0x24)(步骤可选)
8、 设置ANC 降噪关闭,命令0X13,外部播放扫频信号,测试PNC性能
9、 设置ANC 降噪开启,命令0X14 ,外部播放扫频信号,测试ANC性能
10、 判断pass或者fail,失败则再到步骤5,调整增益参数或者系数文件

六、滤波器调节注意点

(一)滤波器读写

(1)读样机滤波器时,需设置密码
使用命令0x3F设置对应密码,默认为字符串‘123456’,否则会返回失败。
(2)采样率信息获取
通过0x2C命令可以读取anc_gains.bin 的anc_gain_t结构体参数,
其中结构体成员alogm ANC算法因素 对应降噪采样率,对应关系如下图

alogmAnc sample rate
4187500
5375000
6750000
71500000

(3)滤波器类型/Fre/Q值/Gain 与IIR滤波器(b0 ,b1 ,b2 ,a1 ,a2)的对应关系参考 https://blog.csdn.net/hunterhuang2013/article/details/64443718
(4)滤波器长度设置,根据读取滤波器的长度,设置对应滤波器的长度.(目前暂不支持修改,由于使用的采样率不同也会导致FF和TRANSPARENCY 使用的滤波器长度不同)
支持全滤波器读写(如:左 10 阶 FF+FB+CMP+TRANSPARENCY, cnt = 4)

Version (0x3)Cnt (0x4)Id (0x0)Offset (0x0)Len (0x190)
Id (0x1)Offset (0x190)Len (0x190)Id (0x2)Offset (0x320)
Len (0x190)Id (0x3)Offset (0x4B0)Len (0x190)(double)b0
(double)b1(double)b2(double)a1(double)a2···
滤波器共计4 * 400byte (L_FF_IIR + L_FB_IIR + L_TRANS_IIR + L_CMP_IIR) ···

支持单片滤波器写 (如只写 10 阶 ANC_L_FF_IIR, cnt = 1 , offset = 0)

Version (0x3)Cnt (0x1)Id (0x0)Offset (0x0)Len (0x190)
(double)b0(double)b1(double)b2(double)a1(double)a2
滤波器共计400byte(L_FF_IIR) ···

(5)如果不需要使用过多滤波器,可以将多余的滤波器设置为bypass类型
bypass类型 IIR参数( b0 = 1.0 , b1 = b2 = a1 = a2 = 0.0)
比如从小机读回来L_FF滤波器长度为20 阶(800byte),只需使用5 阶,那么可以将其余 15阶设置为bypass类型
(6)Double 类型转 16进制传输使用的是标准的 IEEE协议,需注意小机使用为小端格式。

(二)Json文件解读(获取原有耳机滤波器类型及参数)

1.单滤波器Json说明

image (1)如何获取json文件。
将耳机连接杰理anc_designer,加载样机对应的界面参数后,在滤波器设置界面右键选择保存json格式。

(2)json信息解读

●确认ANC通道
根据命令0x3E获取的ANC_CH,读取对应的 left/ right滤波器参数。如图为FF前馈的滤波器信息,ANC_L_CH对应ff.left, ANC_R_CH对应 ff.right, (为方便展示,滤波器已折叠)
image

●滤波器参数信息

json文件显示滤波器个数(包含"enable " : flase不使能的滤波器)为小机实际使用的滤波器个数, 如图所示,右边的 json 文件滤波器参数信息与左边的 ANC_DESIGNER滤波器参数一一对应。
image ●增益信息(此增益同为量产增益校准使用的增益)
image

●采样率信息

image

2.多滤波器Json说明

多滤波器与单滤波器的差异仅图下所示,场景内部参数意义与单滤波器相同
image ;

七、 发送ANC配置文件到小机

(一)配置文件的数据结构

前20byte 为头信息,可用于校验文件是正确性,组成如下
image 读到正确的信息后,将对应的文件数据内容 c。eff[0 ],下发到小机。

(二)具体流程

1.anc_c。eff.bin

方法 1:将c。eff[0 ],长度为gr。up_len- 10,调用命令0x22 0x23 0x24发送到小机;
与 四、滤波器调节注意点- (一)滤波器读写 流程一样。
方法2:将c。eff[0 ],长度为gr。up_len- 10,调用命令0x36 0x37 0x38发送到小机;其中anc_c。eff.bin 的文件ID 为0x0 与 四、滤波器调节注意点- (一)滤波器读写 流程一样。

2.anc_gains.bin

将c。eff[0 ],长度为gr。up_len- 10,调用命令0x36 0x37 0x38发送到小机,其中anc_gains.bin 的文件ID 为0x2
Tips: 流程可参考ANC_DESNIGER 发送增益配置文件到样机、 发送滤波器系数文件到样机的功能。
image

八、产测方式3.0- 多滤波器流程

支持系列JL701N/JL708N/JL709N;
与第三章:命令表部分差异如下:

(一)数据结构

anc_gains.bin保持原有结构不变
anc_coeff.bin文件多滤波器结构更改如下:

(1)滤波器结构(单位byte) ,数据格式为小端格式
Version (2)Sence_cnt (2)Scene_num1 (2)ID_cnt (2)
ID_head1 (6)ID_head2 (6)ID_head…Data (S1_H1)
Data (S1_H2)Data (S1_H )Scene_num…ID_cnt (6)
ID_head1 (6)ID_head2 (6)ID_head…Data (S H1)
Data (S H2)Data (S H )

image

  1. //ANC芯片版本 - 多滤波器数据结构版本信息
  2. #define ANC_VERSION_BR28_MULT 0xA4 //JL701N 多滤波器
  3. #define ANC_VERSION_BR50_MULT 0xA5 //JL708N 多滤波器
  4. #define ANC_VERSION_BR52_MULT 0xA6 //JL709N 多滤波器
结构成员:

● Version (u 16) : 滤波器数据结构版本信息
● Sence_cnt (u8):场景数目
● ID_cnt (u8): 每个场景的 ID段数
● Scene_num: 第几个场景,后面接着这个场景的 ID_head
● ID_head: 每个ID 的数据头
● Data(S1_H1): 表示场景 1,第1段ID 的具体滤波器数据

(2) ID_head(单位byte)
Id (2)Offset (2)Len (2)

各类滤波器Id如下:

  1. typedef enum {​
2.//OLD单滤波器ID 0x0-0x4
3.//多滤波器ID
4.image
ANC_L_FF_FGQ=0x6 ,//左FF滤波器FGQ
5.ANC_L_FB_FGQ = 0x7 , //左FB滤波器FGQ

image ANC_L_CMP_FGQ = 0x8 , //左音乐补偿滤波器FGQ
7. ANC_L_TRANS_FGQ = 0x9 , //左通透滤波器FGQ ANC_L_FF_PARM = 0xA , //左FF参数ID
9. ANC_L_FB_PARM = 0xB , //左FB参数ID ANC_L_CMP_PARM = 0xC , //左音乐补偿参数ID
11. ANC_L_TRANS_PARM = 0xD , //左通透参数ID
13. //OLD 单滤波器ID 0x10-0x14
15. ANC_R_FF_FGQ = 0x16 , //右FF滤波器FGQ ANC_R_FB_FGQ = 0x17 , //右FB滤波器FGQ
ANC_R_TRANS_FGQ = 0x19 , //右通透滤波器FGQ
ANC_R_FB_PARM = 0x1B , //右FB参数ID
ANC_R_TRANS_PARM = 0x1D , //右通透参数ID
image 12.
image 17. ANC_R_CMP_FGQ = 0x18 , //右音乐补偿滤波器FGQ
image 19. ANC_R_FF_PARM = 0x1A , //右FF参数ID
image 21. ANC_R_CMP_PARM = 0x1C , //右音乐补偿参数ID
image 23. ​} ANC_config_seg_id_t ;
image 6.
image 8.
image 10.
image 14. //多滤波器ID
image 16.
image 18.
image 20.
image 22.
Head成员:
● Id (u8):表示FF/FB/CMP/TRANS 等滤波器ID(如ANC_ *_ **FGQ、ANC *_ **_PARM);
● Offset(u 16):表示当前ID数据指针,相对数据起始指针start_p(DATA_S1_H1 的起始位置)的偏移量;
● Len (u 16): 表示当前ID 数据长度;

(3)参数ID(Data段,单位Byte) , ID 包括 0x9-0xC , 0x19-0x1C

Global Gain (4)
● Global Gain (float):表示当前ID 总增益,有正负符号
配置层用dB表达,传给小机转成倍数float;
正负符号:
调试阶段,使用ANC_DESIGNER工具, 勾选 “增益反向”,则为负号,否则为正号
第三方/自研产测阶段:小机开始读到什么增益符号就使用什么增益符号示例:如配置0dB ,勾选“增益反相”,Global Gain = (10^(0 dB/20)) * (-1)= -1.0f(16进制小端表示 00 00 80 BF)

(4)滤波器FGQ(Data段,单位Byte) , ID 包括 0x5-0x8 , 0x15-0x18
Type (1)Fre (4)Gain (4)Q (4)
Type (1)Fre (4)Gain (4)Q (4)
…
滤波器FGQ成员:

Type (u8):滤波器类型,High/Low Shelf、 High/Low Pass、 Band pass;
Fre (float): 滤波器频率f;
Gain (float):滤波器增益g ,单位dB;
Q (float):滤波器Q值;
案例(ANC_FF 方案,拥有两个场景,(场景 1:FF/TRANS 各2个滤波器) , (场景:FF/TRANS 3个滤波器),数据结构分布如下:
image

(二)多滤波器协议命令使用注意事项

1、 通用命令 - 模式切换
● 原有流程:单滤波器 version ID支持
■ 发送一个切模式命令0x13/0x14/0x15,则ANC切到对应模式
● 多滤波器 version ID流程:
■ 新增切场景命令0x55:用于切换目标ANC场景,需要在切模式之前发送对应场景序号;
■ 发送一个切模式命令0x13/0x14/0x15,则ANC切到对应模式;
2、 增益相关命令 - 增益读/写,增益符号读写
● 原有流程:单滤波器 version ID支持
■ 方式一:直接读/写整个文件anc_gains.bin/读取json
■ 方式二:命令0X29/0X2A 使用增益 ID读/写增益, 使用增益符号 ID 读/

写 增益符号
● 多滤波器 version ID流程

支持滤波器文件读写时, 同时获取增益以及增益符号信息;
■ 方式一:从文件读取,anc_gains.bin 读/写非滤波器增益以及增益符号的信息。anc_coeff.bin读取 滤波器增益以及增益符号信息。
■ 方式二
1 先发送场景切换的命令0X55,切换到目标场景;
2 使用增益ID,读写目标场景增益;(增益取绝对值),与旧流程一致
3 使用增益符号ID,读写目标场景增益符号,与旧流程一致
4 新增(增益+增益符号)ID,支持一起读写目标场景增益+增益符号;(增益有正负符号,正号表示对应gain_sign 位域 为0, 负号为 1)
■ 新增:工具读取整个文件anc_coeff.bin(时间相对比较长),建议使用json 文件(包含滤波器以及滤波器增益+增益符号信息)给上位机。
■ 增益相关ID如下
imageimageimageimageimage

  1. //增益符号ID (仅带符号)
  2. #define ANC_GAIN_SIGN_SET 0x55 //设置ANC各类增益的符号 3.
  3. //增益ID(不带符号,仅绝对值)
  4. #define ANC_FFGAIN_SET 0x14 //设置ANC左声道FF增益
  5. #define ANC_FBGAIN_SET 0x1f //设置ANC左声道FB增益
  6. #define ANC_TRANS_GAIN_SET 0x44 //设置ANC左声道通透增益
  7. #define ANC_CMP_GAIN_SET 0x57 //设置ANC左声道CMP增益
  8. #define ANC_RFF_GAIN_SET 0x58 //设置ANC右声道FF增益
  9. #define ANC_RFB_GAIN_SET 0x59 //设置ANC右声道FB增益
  10. #define ANC_RTRANS_GAIN_SET 0x5A //设置ANC右声道通透增益
  11. #define ANC_RCMP_GAIN_SET 0x5B //设置ANC右声道CMP增益 13.
  12. //新增增益+增益符号ID
  13. #define ANC_LFF_GAIN_S_SET 0x8F //设置ANC左声道FF增益与符号
  14. #define ANC_LFB_GAIN_S_SET 0x90 //设置ANC左声道FB增益与符号
  15. #define ANC_LTRANS_GAIN_S_SET 0x91 //设置ANC左声道通透增益与符号
  16. #define ANC_LCMP_GAIN_S_SET 0x92 //设置ANC左声道CMP增益与符号
20.#defineANC RFF GAIN S SET0x93image
//设置ANC右声道FF增益与符号
21.#defineANC RFB GAIN S SET0x94//设置ANC右声道FB增益与符号
22.#defineANC RTRANS GAIN S SET0x95image
//设置ANC右声道通透增益与符号
23.#defineANC RCMP GAIN S SET0x96//设置ANC右声道CMP增益与符号

imageimage

3、 滤波器相关命令

1 . 新增文件ID:
image 2. FILE_ID_COEFF = 0 , //单滤波器 系数文件ID(原有滤波器文件ID) 3.
4. FILE_ID_COEFF_FGQ = 8 , //多滤波器 系数文件-FGQ ID号
5. FILE_ID_COEFF_FGQ_PART = 9 , //多滤波器 部分系数文件-FGQ ID号,

(1)滤波器读

● 原有命令:单滤波器 version ID支持
■ 方式一:通过ID FILE_ID_COEFF 读取整个anc_coeff.bin文件,不支持部分读参数;
■ 方式二:从json读取;
● 多滤波器 version ID 流程:(需使用读文件命令组合0x34-0x35 ,不支持 0x20-0x21)
■方式一:通过新增文件ID FILE_ID_COEFF_FGQ读取整个anc_coeff.bin ,不支持部分读参数
■ 方式二:从json读取。

(2)滤波器写

● 原有命令:单滤波器 version ID支持
■ 方式一: 修改全部滤波器, 文件 ID FILE_ID_COEFF: 直接发送 anc_coeff.bin文件。
■ 方式二:单独修改某项滤波器(如FF滤波器),文件ID FILE_ID_COEFF,发送单项滤波器,小机收到之后,替换anc_coeff.bin 目标ID段的内容; (仅支持每次修改一项滤波器,不支持多项滤波器一起写;)
● 多滤波器 version ID 流程(需使用写文件命令组合0x36-0x38 ,不支持 0x22-0x24):
■ 修改全部滤波器(包括多个场景的 FF/FB/CMP/TRANS),新增文件 ID FILE_ID_COEFF_FGQ:直接发送anc_coeff.bin文件
■ 部分滤波器参数修改,用于覆盖原有滤波器文件的部分参数,减少数据传输; 新增部分文件 ID FILE_ID_COEFF_FGQ_PART, 数据结构与 FILE_ID_COEFF_FGQ一致,使用需注意以下两点
1 仅支持部分写单个场景的一项或者多项滤波器,如FF 或者 FF+FB ,耳机会自动匹配重组,不支持多个场景一起写;
2 仅支持部分修改原有文件已经存在的滤波器,如新增场景,则必须使用FILE_ID_COEFF_FGQ(工具点击: 同步所有参数到小机)

(三)多场景滤波器流程

1、 先读取软件版本号,命令0x04

imageimage 2、 获 取 耳 机 芯 片 版 本, 命 令 0x39 , 以 JL701N 为 例, 多 滤 波 器 获 取 BR28_ANC_VERSION_MULT 0XA4(后续多场景滤波器相关版本为(0XA0 | 芯片JL***N 版本号),即0XA4-0XAF,如JL708N 为0XA5)

  1. //ANC芯片版本 - 多滤波器数据结构版本信息
2.#defineANC VERSION BR28 MULT0xA4//JL701Nimage
多滤波器
3.#defineANC VERSION BR50 MULT0xA5//JL708N多滤波器
4.#defineANC VERSION BR52 MULT0xA6//JL709Nimage
多滤波器

imageimage 3、 获取耳机结构,命令0x2E
4、 获取耳机通道(左、右、左+右),命令0x3E,
(注意:左通道的要对应设这左增益/滤波器,右通道要对应设置右增益/滤波器,这里左右针对芯片级DAC输出引脚,TWS左右两只耳机会都用左或者都用右,仅有头戴式或挂脖耳机会使用左+右)
5、 输入密码,读取系数文件(包含所有场景的滤波器以及滤波器总增益)(密码命令0x3F , 默认字符串’123456’,读取系数命令0x34 0x35) (步骤可选)
6、 读取耳机参数(命令0x2C,如需获取耳机增益以及增益符号,使用前需设置ANC 场景命令0x55,则可以得到对应场景下的增益/符号)
7、 设置当前使用的ANC场景ID(命令0x55)
(1)设置之后就一直在当前ANC场景,更换场景测试/校准,需重新设置
(2)场景ID一般由用户指定,受限于当前滤波器文件有多少场景,设置超出范围的 ID 会报错。
8、 修改单个增益参数(可用命令0x29 ,所修改增益/增益符号为当前ANC场景的)(步骤可选)
9、 修改系数文件(包含滤波器以及滤波器总增益)(命令0x36 0x37 0x38)(步骤可选)
10、 设置ANC 降噪关闭,命令0X13,外部播放扫频信号,测试PNC性能
11、 设置ANC 降噪开启,命令0X14 ,外部播放扫频信号,测试ANC性能
12、 判断pass或者fail,失败则再到步骤5,调整增益参数或者系数文件
13、 测试下一个场景则回到步骤8,发送目标场景号

九、ANC 透传命令(格式)

(一)数据结构(小端格式)

帧格式
MAGIC0MAGIC1IDLEN (u 16)DATACRC16
1byte1byte2byte2byteN byte2byte
0xAA0x55序号数据段长度数据CRC校验

DATA段格式(小机回复格式相同)

PRE_CMD命令携带内容
3byteN-1 byte
0xFD 0x90 CMD

案例:如 “FF/FB 增益补偿使能” 命令,并发送参数“使能=1”,则命令为 AA 55 02 00 04 00 FD 90 5F 01 46 6B 黄色为ID , 蓝色 为 CRC校验码

注意:
1、 新增PRE_CMD:0xFD 0x90 表示为透传命令ID

(二)命令表

步骤CMD命令
10、 280x55切不同组的ANC滤波器(多场景滤波器)
12、 140X5FFF/FB 增益补偿使能
0x60FF/FB 增益补偿值设置
0x61FF/FB 增益补偿值读取
0x62FF/FB 增益补偿值清0
0x63增益修改保存到flash
1、 切不同组的ANC滤波器(多场景滤波器)

PC SEND: CMD = 0x55, + 场景ID(1byte)
成功返回: CMD = 0x55
错误返回: CMD = 0xFE,携带错误号

2、MIC增益补偿功能:

1)功能描述:用于替代传统的产测ANC增益校准,直接作用于MIC; FF MIC增益补偿会作用于所有滤波器场景下ANC模式、通透模式的FF gain;
FB MIC增益补偿会作用于所有滤波器场景下的ANC模式、通透模式的FB gain 以及 CMP gain(音乐补偿)
2)仅支持多场景滤波器模式; 3)命令说明:
1.FF/FB 增益补偿使能
PC SEND: CMD = 0x5F,携带en (u8) , 1 使能,0 失能
成功返回: CMD = 0x5F
错误返回: CMD = 0xFE,携带错误号
image

  1. //增益ID
  2. #define ANC_L_FFMIC_CMP_GAIN_SET 0xA1 //ANCL FFmic 补偿增益(产测使用)
  3. #define ANC_L_FBMIC_CMP_GAIN_SET 0xA2 //ANCL FBmic 补偿增益(产测使用)
    2.FF/FB 增益补偿值设置(下发数据格式,线性值 = 10^(dB/20)) PC SEND: CMD = 0x60,携带增益ID (u8)、 设置值(float)
    成功返回: CMD = 0x60
    错误返回: CMD = 0xFE,携带错误号
3.FF/FB 增益补偿值读取

PC SEND: CMD = 0x61,携带增益ID (u8)
成功返回: CMD = 0x61,读取值(float)
错误返回: CMD = 0xFE,携带错误号
4.FF/FB 增益补偿值清0 PC SEND: CMD = 0x62
成功返回: CMD = 0x62
错误返回: CMD = 0xFE,携带错误号
5.增益修改保存到flash PC SEND: CMD = 0x63
成功返回: CMD = 0x63
错误返回: CMD = 0xFE,携带错误号

十、FAQ

1.不支持分包处理;

(1)每一包需结构完整,不支持分包处理,一发一回。