JL ANC_产测设备通信协议v2.3.5
📎 原始文档:https://www.kdocs.cn/l/cnyi07eDAx6I JL ANC 产测设备通信协
议v2.3.5
珠海市杰理科技股份有限公司
Zhuhai Jieli Technology Co.,LTD
版权所有,未经许可,禁止外传
修改记录
| 版本 | 更新日期 | 描述 |
|---|---|---|
| V2.1.7 | 20220728 | 初始版本 |
| V2.1.8 | 20220823 | 添加anc_coeff.bin anc_gains.bin读写流程 |
| V2.1.9 | 20220920 | 完善设置耳机ANC结构的说明(FF/FB/HYBIRD) |
| V2.2.0 | 20230703 | 更新配置文件读写描述错误的问题 |
| V2.3.0 | 20240105 | 新增多滤波器命令流程 |
| V2.3.1 | 20240118 | 多滤波器修复示例错误,补充场景切换命令,蓝牙SPP与有线uart不同接线方式命令内容不一致的说明 |
| V2.3.3 | 20240914 | 支持JL708N、 JL709N |
| V2.3.4 | 20250226 | 新增透传命令格式,支持MIC增益补偿功能 |
| V2.3.5 | 20250710 | 更新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.0 | AC897N/AD697N | 支持调增益,外部噪声训练滤波器 |
| 产测2.0 | AC700N | 支持调增益/滤波器 |
| AC701N | ||
| 产测3.0 | AC701N (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) |
二、数据格式: (小端格式)
帧格式
| MAGIC0 | MAGIC1 | ID | LEN (u 16) | DATA | CRC16 |
|---|---|---|---|---|---|
| 1byte | 1byte | 2byte | 2byte | N byte | 2byte |
| 0xAA | 0x55 | 序号 | 数据段长度 | 数据 | CRC校验 |
DATA段格式
| CMD | 命令携带内容 |
|---|---|
| 1byte | N-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如下结构

- typedef struct {
- u8 dac_gain ; //dac增益, default:8 ,range: [0: 15]
- u8 ref_mic_gain ; //参考mic增益default:6 ,range [0: 19]
- u8 err_mic_gain ; //误差mic增益default:6 ,range [0: 19]
- u8 order ; //滤波器阶数
- u8 trans_hpf_sel; //通透高通滤波器
- u8 trans_lpf_sel; //通透低通滤波器
- u8 trans_order ; //通透模式滤波器阶数default:1 ,range [1:4]
- 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] - u32 sample_rate; //采样率
- u32 trans_sample_rate; //通透模式采样率default:48000range [ 12000 ,24000 ,48000 ,96000]
- } anc_gain_t ; 16.
(二)AC700N/JL701N 如下结构

- typedef struct {
- //cfg
- u 16 version ; //当前结构体版本号= 0x7001

- u8 dac_gain ; //dac模拟增益 range 0-15; default 13


- u8 fade_step ; //淡入淡出步进 range 0-15; default 1
- u32 alogm; //ANC算法因素
- u32 trans_alogm; //通透算法因素
- float l_ffgain ; //ANCL FF增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
- float l_fbgain ; //ANCL FB增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
- float l_transgain ; //ANCL 通透增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
- float l_cmpgain ; //ANCL 音 乐 补 偿 增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
- float r_ffgain ; //ANCR FF增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
- float r_fbgain ; //ANCR FB增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)

- float r_transgain ; //ANCR 通透增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
- float r_cmpgain ; //ANCR 音 乐 补 偿 增益 range 0.0316 (-30db) -31.622 (+30db); default 1.0 (0db)
- u8 drcff_zero_det; //DRCFF过零检测使能range 0-1; default 1 ;
- u8 drcff_dat_mode; //DRCFF_DAT模式 range 0-3; default 0 ;
- u8 drcff_lpf_sel; //DRCFF_LPF档位 range 0-3; default 0 ;
- u8 drcfb_zero_det; //DRCFB过零检测使 range 0-1; default 1 ;
- u8 drcfb_dat_mode; //DRCFB_DAT模式 range 0-3; default 0 ;
- u8 drcfb_lpf_sel; //DRCFB_LPF档位 range 0-3; default 0 ; 31.
- u 16 drcff_lthr ; //DRCFF_LOW 阈值 range 0-32767; default 0 ;
- u 16 drcff_hthr ; //DRCFF_HIGH 阈值 range 0-32767; default 32767;
- s16 drcff_lgain ; //DRCFF_LOW增益 range 0-32767; default 0 ;
- s16 drcff_hgain ; //DRCFF_HIGH增益 range 0-32767; default 1024;
- s16 drcff_norgain ; //DRCFF_NOR增益 range 0-32767; default 1024; 37.
- u 16 drcfb_lthr ; //DRCFB_LOW 阈值 range 0-32767; default 0 ;
- u 16 drcfb_hthr ; //DRCFB_HIGH 阈值 range 0-32767; default 32767;
- s16 drcfb_lgain ; //DRCFB_LOW增益 range 0-32767; default 0 ;
- s16 drcfb_hgain ; //DRCFB_HIGH增益 range 0-32767; default 1024;
- s16 drcfb_norgain ; //DRCFB_NOR增益 range 0-32767; default 1024; 43.
- u 16 drctrans_lthr ; //DRCTRANS_LOW 阈值 range 0-32767; default 0 ;
- u 16 drctrans_hthr ; //DRCTRANS_HIGH 阈值range 0-32767; default 32767;
- s16 drctrans_lgain ; //DRCTRANS_LOW增益 range 0-32767; default 0 ;
- s16 drctrans_hgain ; //DRCTRANS_HIGH增益range 0-32767; default 1024;
- s16 drctrans_norgain ; //DRCTRANS_NOR增益 range 0-32767; default 1024; 49.
- u8 ahs_dly ; //AHS_DLY range 0-15; default 1
- u8 ahs_tap ; //AHS_TAP range 0-255; default 100
- u8 ahs_wn_shift; //AHS_WN_SHIFT range 0-15; default 9
- u8 ahs_wn_sub ; //AHS_WN_SUB range 0-1; default 1
- u 16 ahs_shift; //AHS_SHIFT range 0-65536; default 210;

- u 16 ahs_u ;
- s16 ahs_gain ;
//AHS步进 range 0-65536; default 4000
//AHS增益 range-32767-32767;default-1024; - } anc_gain_param_t ; //子结构,总大小 100byte 58.
- /ANCIF配置区滤波器系数gains/
- typedef struct {
- anc_gain_param_t gains;
- u8 reserve [236-100] ; //236 + 20byte (header)
- } anc_gain_t ; //总结构,总大小236byte
(三)JL708N/JL709N 如下结构

- //DCC结构
- typedef struct {
- u8 norm_dc_par ; // range 0-15; default 0
- u8 pwr_dc_par ; // range 0-15; default 2
- u8 amp 1_dc_par ; // range 0-15; default 0
- u8 amp2_dc_par ; // range 0-15; default 6
- u 16 pwr_thr ; // range 0-65535; default 12000
- u 16 amp_thr ; // range 0-65535; default 12000 9.
- u8 adj_dc_par 1 ; // range 0-15; default 0 // allow writing at any time
- u8 adj_dc_par2 ; // range 0-15; default 6
- u8 adj_incr_step ; // range 0-7; default 0
- u8 adj_upd_sample; // range 0-7; default 0
- } anc_core_dcc_t ; 15.
- //DRC结构
- typedef struct {
- u 16 threshold; //drc threshold range 0-1023; default 531
- u8 ratio; //drc ratio range 4-255; default 255
- u8 mkg ; //drc makeup-gain range 0-6; default 0
- u8 knee; //drc kneewidth range 4-255; default 64
- u8 att_time; //drc attack time range 0-19; default 3

u8 l_fbmic_gain ; //ANCL FBmic增益 range 0-4; default 0 - u8 r_ffmic_gain ; //ANCR FFmic增益 range 0-4; default 0 ;
u8 r_fbmic_gain ; //ANCR FBmic增益 range 0-4; default 0 ; - u8 cmp_en ; //音乐补偿使能 range 0-1; default 1
- u8 drc_en ; //DRC使能 range 0-7; default 0 u8 ahs_en ; //AHS使能 range 0-1; default 0
- 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
36.
43. u8 fb_alogm; //ANC FB算法因素 range 4-7; default 5
45. u8 trans_alogm; //通透算法因素 range 0-7; default 5
46.
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 ; |
32.
34.
38.
40.
42.
44.
47. float l_ffgain ; //ANCL FF增益 range 0.0316 ( -30dB) -31.622 (+30dB); default 1.0 (0dB)
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
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;
四、命令表
| 命令表 | 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 (注意数据格式为 小端格式)
| U16 | U16 | U8* |
|---|---|---|
| version | cnt | dat [0 ] |
Version: 表示当前耳机是属于哪个芯片版本,通过0x39 命令获得。
Cnt: 表示当前结构有多少类滤波器, 比如发送左FF+左FF+右FF+右FB, cnt = 4
Dat: 表示数据包,不定长;dat[0 ]的结构如下:
| U16 | U16 | U16 | |
|---|---|---|---|
| id | offset | len | |
| id | offset | len | |
| ··· | |||
| id | offset | len | |
| (U8*)Iir_dat ··· |
各类滤波器id如下:
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设置
AC700N 如下 ID设置://注意增益为float,上位机显示单位(dB),发送给小机需转成float (基准 0dB = 1.00f )
ID---ANC_GAIN_SIGN_SET:是各类增益的符号(size(u8)),对应位置 1表示取反增益。一般开发环节已经设置好。 以下是各类增益的对应位置
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,携带错误号

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,携带错误号
- //ANC芯片版本定义
| 2. | #define | ANC VERSION BR30 | 0x01 | ![]() //AD697N/AC897N |
|---|---|---|---|---|
| 3. | #define | ANC VERSION BR30C | 0x02 | //AC699N/AD698N |
| 4. | #define | ANC VERSION BR36 | 0x03 | ![]() //AC700N |
| 5. | #define | ANC VERSION BR28 | 0x04 | //JL701N/BR40 |
| 6. | #define | ANC VERSION BR28 MULT | 0xA4 | ![]() //JL701N 多滤波器 |
| 7. | #define | ANC VERSION BR50 | 0x05 | //JL708N |
| 8. | #define | ANC VERSION BR50 MULT | 0xA5 | ![]() //JL708N 多滤波器 |
| 9. | #define | ANC VERSION BR52 | 0x06 | //JL709N |
| 10. | #define | ANC VERSION BR52 MULT | 0xA6 | ![]() //JL709N 多滤波器 |





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 点。
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算法因素 对应降噪采样率,对应关系如下图
| alogm | Anc sample rate |
|---|---|
| 4 | 187500 |
| 5 | 375000 |
| 6 | 750000 |
| 7 | 1500000 |
(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说明
(1)如何获取json文件。
将耳机连接杰理anc_designer,加载样机对应的界面参数后,在滤波器设置界面右键选择保存json格式。
(2)json信息解读
●确认ANC通道
根据命令0x3E获取的ANC_CH,读取对应的 left/ right滤波器参数。如图为FF前馈的滤波器信息,ANC_L_CH对应ff.left, ANC_R_CH对应 ff.right, (为方便展示,滤波器已折叠)
●滤波器参数信息
json文件显示滤波器个数(包含"enable " : flase不使能的滤波器)为小机实际使用的滤波器个数, 如图所示,右边的 json 文件滤波器参数信息与左边的 ANC_DESIGNER滤波器参数一一对应。
●增益信息(此增益同为量产增益校准使用的增益)
●采样率信息

2.多滤波器Json说明
多滤波器与单滤波器的差异仅图下所示,场景内部参数意义与单滤波器相同
;
七、 发送ANC配置文件到小机
(一)配置文件的数据结构
前20byte 为头信息,可用于校验文件是正确性,组成如下
读到正确的信息后,将对应的文件数据内容 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 发送增益配置文件到样机、 发送滤波器系数文件到样机的功能。
八、产测方式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 ) |

- //ANC芯片版本 - 多滤波器数据结构版本信息
- #define ANC_VERSION_BR28_MULT 0xA4 //JL701N 多滤波器
- #define ANC_VERSION_BR50_MULT 0xA5 //JL708N 多滤波器
- #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如下:
- typedef enum {
| 2. | //OLD单滤波器ID 0x0-0x4 |
|---|---|
| 3. | //多滤波器ID |
| 4. | ![]() ANC_L_FF_FGQ=0x6 ,//左FF滤波器FGQ |
| 5. | ANC_L_FB_FGQ = 0x7 , //左FB滤波器FGQ |
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
12.
17. ANC_R_CMP_FGQ = 0x18 , //右音乐补偿滤波器FGQ
19. ANC_R_FF_PARM = 0x1A , //右FF参数ID
21. ANC_R_CMP_PARM = 0x1C , //右音乐补偿参数ID
23. } ANC_config_seg_id_t ;
6.
8.
10.
14. //多滤波器ID
16.
18.
20.
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个滤波器),数据结构分布如下:
(二)多滤波器协议命令使用注意事项
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如下




- //增益符号ID (仅带符号)
- #define ANC_GAIN_SIGN_SET 0x55 //设置ANC各类增益的符号 3.
- //增益ID(不带符号,仅绝对值)
- #define ANC_FFGAIN_SET 0x14 //设置ANC左声道FF增益
- #define ANC_FBGAIN_SET 0x1f //设置ANC左声道FB增益
- #define ANC_TRANS_GAIN_SET 0x44 //设置ANC左声道通透增益
- #define ANC_CMP_GAIN_SET 0x57 //设置ANC左声道CMP增益
- #define ANC_RFF_GAIN_SET 0x58 //设置ANC右声道FF增益
- #define ANC_RFB_GAIN_SET 0x59 //设置ANC右声道FB增益
- #define ANC_RTRANS_GAIN_SET 0x5A //设置ANC右声道通透增益
- #define ANC_RCMP_GAIN_SET 0x5B //设置ANC右声道CMP增益 13.
- //新增增益+增益符号ID
- #define ANC_LFF_GAIN_S_SET 0x8F //设置ANC左声道FF增益与符号
- #define ANC_LFB_GAIN_S_SET 0x90 //设置ANC左声道FB增益与符号
- #define ANC_LTRANS_GAIN_S_SET 0x91 //设置ANC左声道通透增益与符号
- #define ANC_LCMP_GAIN_S_SET 0x92 //设置ANC左声道CMP增益与符号
| 20. | #define | ANC RFF GAIN S SET | 0x93 | ![]() //设置ANC右声道FF增益与符号 |
|---|---|---|---|---|
| 21. | #define | ANC RFB GAIN S SET | 0x94 | //设置ANC右声道FB增益与符号 |
| 22. | #define | ANC RTRANS GAIN S SET | 0x95 | ![]() //设置ANC右声道通透增益与符号 |
| 23. | #define | ANC RCMP GAIN S SET | 0x96 | //设置ANC右声道CMP增益与符号 |


3、 滤波器相关命令
1 . 新增文件ID:
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

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

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 透传命令(格式)
(一)数据结构(小端格式)
帧格式
| MAGIC0 | MAGIC1 | ID | LEN (u 16) | DATA | CRC16 |
|---|---|---|---|---|---|
| 1byte | 1byte | 2byte | 2byte | N byte | 2byte |
| 0xAA | 0x55 | 序号 | 数据段长度 | 数据 | CRC校验 |
DATA段格式(小机回复格式相同)
| PRE_CMD | 命令携带内容 |
|---|---|
| 3byte | N-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、 28 | 0x55 | 切不同组的ANC滤波器(多场景滤波器) |
| 12、 14 | 0X5F | FF/FB 增益补偿使能 |
| 0x60 | FF/FB 增益补偿值设置 | |
| 0x61 | FF/FB 增益补偿值读取 | |
| 0x62 | FF/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,携带错误号
- //增益ID
- #define ANC_L_FFMIC_CMP_GAIN_SET 0xA1 //ANCL FFmic 补偿增益(产测使用)
- #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)每一包需结构完整,不支持分包处理,一发一回。









