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歌音响-调音标准流程
  • 无线话筒产测流程

702相关应用

📎 原始文档:https://www.kdocs.cn/l/ccnIGhEwR8NX 702相关应用

文档简介

该文档主要描述 AC702N开发相关的使用说明和注意事项,收集并持续更新开发调试过程中的相关疑问和解答,对SDK介绍文档做一个补充说明,为用户进行二次开发提供参考。
由于版本较多,如本文档有与SDK包内文档或代码注释说明冲突,以后者为标准。

一、芯片和工程特性

D0芯片相较于常规的芯片代码存储在 FLASH,SDK 代码的存储介质是 ROM 介质。因为代码已经固化到 ROM,不可编辑,只可通过配置 efuse 位来进行控制。适合程序固定不变的应用场合。
D0芯片没有flash,断电后无法保存TWS配对信息,如需长时间仓储,要把自动配对打开,或者使用按键配对,避免因为长时间存放、电池没电导致TWS掉配对和不配对
D2芯片增加了一个外置 flash,依托于 ROM 内代码资源可以被 FLASH 代码调用的特性,可以组成断点工程【ROM+FLASH】。则相对比与需要配置工具进行配置的 ROM 工程,增加更多的可修改性,可反复擦写,灵活性很强,适合做开发用途。
注意:并非所有的功能都可以通过断点方式增加,能插断点的前提条件是能找到要插断点位置的地址,其次,断点的数量是有限的 ,过于复杂的功能无法通过断点方式实现。

二、芯片型号和SDK选用说明

  1. AC702N芯片本版识别

  2. 芯片丝印: 第一排:logo
    第二排:批次号+芯片版本(字母‘C’就是C版芯片,字母‘B’就是B版芯片)
    第三排:芯片型号+flash/OTP(数字是0则为OTP芯片;数字是2则是2M的falsh的芯片)
    imageimage

  3. 例如: (1)丝印为BP19869C- AC7023D0则这个芯片是C版的OTP芯片。
    (2)丝印为BP1F978TKC- AC7023D2则这个芯片是C版的2M带flash的芯片。
    (3)丝印为BP14183TKB- AC7023D2则这个芯片是B版的2M带flash的芯片。

  4. SDK包的选择 版本发布约定: v1.x.x 只用于b版 v2.x.x 只用于c版
    例:


SDK
对应芯片
B版
(带flash版本)
C版
(OTP版本)
C版
(带flash版本)
AC702N_FLASH_SDK_v1.0.2
【配置存在flash,可以重复更新】
Y××
AC702N_FLASH_SDK_v2.0.0
【配置存在flash,可以重复更新】
××Y
AC702N_FLASH_SDK_v2.0.1
【配置存在flash,可以重复更新】
××Y
AC702N_FLASH_SDK_v2.1.0
【配置存在flash,可以重复更新】
××Y
AC702N_release_v1.0.4
【配置存在flash,可以重复更新】
Y××
AC702N_release_v2.0.2
【配置存在efuse,不可重复更新】
×Y特殊
AC702N_release_v2.0.3
【配置存在efuse,不可重复更新】
×Y×

备注:
"×"表示不支持,
"Y"表示支持;
”特殊“表示该程序能够烧录到C版(带 flash)的芯片,但是烧录后,该芯片成OTP的芯片,不再支持flash重新烧录。
注意:C版芯片带flash使用AC702N_FLASH_SDK_v2.x.x的SDK,
OTP芯片使用AC702N_release_v2.x.x的SDK

1、AC702N芯片的B版芯片可使用的SDK版本:
AC702N_release_v1.x.x ( 版本支持B版芯片的flash版本,但release_V1.x.x 版本没有代码,仅支持配置工具选配功能。flash 版本支持重复更新(升级或烧录))

AC702N_FLASH_SDK_v1.x.x( 版本支持B版芯片的flash版本,带有部分代码,可修改部分功能。flash 版本支持重复更新(升级或烧录))

注意:B版芯片没有OTP版本,全都是带flash的。

2、AC702N芯片的C版OTP芯片可使用的SDK版本:
AC702N_release_v2.x.x
注意:
1、release_V2.x.x 版本若使用到带flash版本的C版芯片上,只能当OTP使用,不支持重复更新(升级或烧录修改功能)
2、release_v2.0.2支持蓝牙名称修改(需要测试盒版本为 V1.2.9 及以上),OTP/flash版本的C版芯片都支持修改,但修改次数有限制,规则如下:
可被修改的蓝牙名称efuse长度是16个byte,第一次烧写的蓝牙名称会被算2倍长度,之后再更新就是挨着写多少就多少,所以第一次名字尽量短,就可以写多次。

三、升级烧录说明

  1. +烧录器的注意事项

  2. 不能使用B版-flash的程序去烧录C版带flash的芯片,烧录时会报错,并且烧录后的芯片不能重烧,该芯片无法使用了。

  3. 使用C版-OTP的程序,能够烧录进去C版带fLash的芯片,但是烧录后该芯片没有用到flash。相当烧录后变成OTP的芯片,该芯片无法重新烧录。

  4. 重点注意事项 ① C版OTP芯片,只能使用C版OTP的程序烧录。
    ② C版带flash的芯片,目前SDK已发布,请务必使用芯片对应的软件版本开发。

  5. 程序升级注意事项

  6. 702空片第一次烧写需要使用烧写器烧写任意程序版本的 fw 文件,进行芯片初始化才能够正常启动,(D2芯片需要完成第一次烧写后才能使用强升工具升级);

  7. 空片直接上电跑的是默认rom程序,是一个无按键,无关机时间的的tws方案,蓝牙名是BT_music;

  8. 702目前暂无SD卡升级和无线升级,只支持测试盒串口有线升级;

  9. 测试盒升级常见错误; image

  10. 测试盒升级报错10,检查chip_name、pid、vid image 重点检查VID,公版程序默认是0.01,demo程序一般是2.00,用户需要自行统一到相同VID
    image 6.串口升级使用任意io升级时,不支持升级过程中耳机断电重新升级;
    重要:
    702系列芯片第一次烧写必须要通过烧录器烧写(一拖二、一拖八)!!!
    有些版本用flashSDK即使未使用烧录器烧过,使用强升工具升级也显示成功,但因为没过烧录器,实际运行的是ROM里的默认程序,是一个无按键,无关机时间的的tws方案,蓝牙名是:BT_music

四、开发说明

  1. D0工程 D0工程使用对应SDK包内配置工具开发,配置前请检查依赖的软件包确保更新到最新版本
    imageimageimage 配置工具详细使用说明请参考对应SDK包内文档《AC702N_配置工具说明.pdf》

2. D2工程

D2工程有两种:
① 配置工具版本:
SDK命名为AC702N_release_v1.0.x,使用方式同D0工程一样,可以反复烧写。工程配置项可视化,操作上手简单;
② 代码版本:
即flashSDK,SDK命名为AC702N_FLASH_SDK_v1.0.x或v2.0.x,该工程开放部分常用文件和接口,用户开发操作相对配置工具工程更灵活。目前D2芯片使用的基本是C版flashSDK。以下对D2工程介绍主要是围绕C版代码版本最新的flashSDK展开。

D2flashSDK开发使用与其他系列芯片的标准SDK基本一样,基本设置在板级文件更改;
image 与D0配置工具相比,D2flashSDK配置工具只保留提示音修改功能;
image 原D0工程配置工具内的配置项需在代对应板级文件.c文件修改,代码内配置项有详细注释说明,所有板级都约定使用虚拟 efuse 进行功能配置,只有部分配置项(声道、频偏)存储在物理efuse 进行数据固化处理。
image SDK 配置起效优先级 efuse 配置>板级配置>board_ac702x_default_cfg.h
注意:board_ac702x_default_cfg.h 该文件为默认配置,不建议修改

3. 板级选择相关补充

  1. 根据型号或方案(SD、TWS、lighting)选择对应板级
  2. 7029A、7025F暂时没有对应板级,可选7026A板级关SD卡功能后使用

五、常用功能使用说明

  1. 蓝牙名

1.1 D0工程蓝牙名修改说明

SDK版本 release_v2.0.2支持蓝牙名称修改(需要测试盒版本为 V1.2.9 及以上)
① 配置工具加载原来的配置文件;
② 修改蓝牙名;
③ 保存配置文件;
④ 双击download.bat生成.ufw文件;
⑤ 使用测试盒串口升级,升级完成后取出重启即使用新蓝牙名;
注意事项:
1. 存储蓝牙名的efuse空间为16byte,因此修改新旧蓝牙名长度总和不能超过16字符,蓝牙名可修改次数由蓝牙名长度决定; 2. 现版本D0芯片因修复蓝牙名获取异常需要,实际蓝牙名可使用空间可能少于16byte; 3. 蓝牙名修改原理为把上一次写入的efuse内容全部烧为0,然后在上一次蓝牙名后面重新扫入新的蓝牙名到物理efuse,该过程不可逆;

1.2 D2flashSDK蓝牙名修改说明

D2芯片蓝牙名存储在flash中,可视为不限次数擦写修改,修改蓝牙名位置:对应板级.c文件.bt_name中
image 补充:
a. 16 个字符的蓝牙名长度不够,支持修改更长蓝牙名:
参考下图添加如下代码进行修改 32 个字符的蓝牙名修改

#include "user_cfg.h" 
extern BT_CONFIG rom_bt_cfg;
const u8 bt_vm_name[] = "BT_NAME_VM";
memcpy(rom_bt_cfg.edr_name, bt_vm_name, sizeof(bt_vm_name));

image b. D2flash支持动态修改蓝牙名:
imageimage 1.3 D0芯片升级蓝牙名,升级成功后手机搜索蓝牙名变地址
已修复
请升级到最新版本SDK,或将最新版本SDK的ota.bin文件替换到当前工程下载目录。

  1. 按键

2.1 按键类型

702按键的类型主要有:IOKEY,ADKEY,TOUCHKEY;
按键类型详细介绍参考对应SDK包内文档《AC702N_SDK_介绍.pdf》

2.2 按键配置

a.设置按键类型,按键类型设置位置:对应板级.c文件的.key_type配置项
如果不是TOUCHKEY,需要在板级.h关闭TOUCHKEY按键使能
image

    KEY_TYPE_CFG_IO_KEY = 0,     //IO按键
    KEY_TYPE_CFG_AD_KEY,         //AD按键
    KEY_TYPE_CFG_TOUCH_KEY,     //内置触摸
    KEY_TYPE_CFG_NONE = 0b11,   //不烧efuse, 无按键

b. 如果需要修改按键扫描驱动参数则需要在对应的板级关闭使用默认的固定按键扫描参数的 宏定义
TCFG_USE_DEFAULT_KEY_SCAN_PARA,并且在对应按键文件配置 ex_xxkey_scan_para 参数调试按键效果:
imageimage c. 修改按键事件列表,对应板级.c文件ex_key_table
image d. 如需对按键事件做更深入的功能修改,请在key_event_deal.c对应事件case内进行修改;

2.3 多按键设置

设置多个按键导致系统越界死机解决方法:
imageimage

2.4 触摸按键相关补充

(1)触摸按键调试工具:
image 触摸按键调试请参考对应SDK包内文档《AC702N_内置触摸调试工具帮助文档.pdf》

(2)滑动触摸
该功能已开发完成,后续版本AC702N_FLASH_SDK_v2.2.0发布,当前开发可使用beta版本
image demo链接: 【金山文档】 AC702N_FLASH_SDK_v2.2.0_beta(支持滑动触摸) AC702N_FLASH_SDK_v2.2.0_beta(支持滑动触摸).zip

(3)触摸按键和io按键共用
使用 AC702N_FLASH_SDK_v2.2.0_beta版本,板级选用io按键,在io按键初始化后手动添加触摸按键初始化
image

补充:
1. 702虽然有多个触摸通道,但AC702N_FLASH_SDK_v2.2.0之前版本驱动只支持单个触摸按键,故不支持设置多个触摸按键,只能两个通道2选1。 2. AC702N_FLASH_SDK_v2.2.0_beta版本目前只支持滑动触摸功能,驱动消息统一使用 key0 ,暂不支持将两路触摸通道做成两个单独的触摸按键。

(4)开智能充电仓出仓概率触摸失效
修改方法:删除了没有需求的【在仓长按10s取消配对】的功能,精简充电流程,提高对充电仓的兼容性( 2.2.0后公版已修复该问题)
image

diff --git a/apps/earphone/override/app.c b/apps/earphone/override/app.c
index ef50388..42bd21c 100644
--- a/apps/earphone/override/app.c
+++ b/apps/earphone/override/app.c
@@ -332,6 +332,20 @@ void app_poweron_check_skip(int update)
 #endif/* #ifndef CFG_PERFORMANCE_TEST */
 }
 
+void charge_ldo5v_in_deal_part_skip(void)
+{
+    ex_sdk_printf(" %s>>>>>>>>>>>\n", __func__);
+    if (get_cfg_touchkey_enable()) {
+#if (TCFG_LP_TOUCH_KEY_ENABLE)
+        extern void rom_lp_touch_key_charge_mode_enter();
+        rom_lp_touch_key_charge_mode_enter();
+#endif
+    }
+
+}
+
+
+
 #include "user_cfg.h"
 
 #undef __this
diff --git a/apps/earphone/override/override.c b/apps/earphone/override/override.c
index 61b0250..57fa9d8 100644
--- a/apps/earphone/override/override.c
+++ b/apps/earphone/override/override.c
@@ -391,6 +391,14 @@ const BP_ST break_point_table[BREAKPOINT_MAX_NUM] = {
     {BREAKPOINT_INSERT_MODE, (void *)0x166774, charge_full_detect_insert},
 #endif
 
+// 删除【在仓长按10s取消配对】的功能
+    {
+        .mode = BREAKPOINT_PART_REWRITE_MODE,
+        .part_rewrite_target_addr = (void *)0x1702b4,
+        .part_rewrite_fun = charge_ldo5v_in_deal_part_skip,
+        .part_rewrite_fun_return_addr = (void *)0x1702ce,
+    },
+
 #if TCFG_TEST_BOX_ANY_IO_UPDATE
 #if TCFG_POWER_ON_NEED_KEY
     /* 任意IO串口升级唤醒直接开机 */

2.5 红外遥控irkey

image demo链接: 【金山文档】 AC702N_FLASH_SDK_v2.1.0_添加irkey_20230722 https://kdocs.cn/l/cmbMPInVyqCp

2.6 多击按键相关补充

(1)flashSDK连击被过滤
image app层为了rom设计做了特殊处理
实际上SDK支持五击和六击事件,功能可直接添加在user_app_event_prepare_handler

(2)OTP芯片操作≥5击会触发的是三击功能

OTP芯片出厂时该功能已固化,不可修改

2.7 长按复位相关补充

(1)关闭长按复位功能
在需要关闭的地方调用long_reset0_disable()即可,参考lighting方案
image

(2)动态修改长按复位的复位电平

//level:1是高电平复位,0是低电平复位
//gpio:必须与使能长按复位的IO一样,比如板级文件配置的长按复位口是PB1,
//那么这里就是填IO_PORTB_01
void reset_long_reset0_level(u8 level, int gpio)
{
    long_reset0_disable();
    if(level){
        gpio_set_pull_down(gpio, 1);
        gpio_set_pull_up(gpio, 0);
        P3_PINR_CON |= BIT(2);
    }
    else{
        gpio_set_pull_down(gpio, 0);
        gpio_set_pull_up(gpio, 1);
        P3_PINR_CON &= ~BIT(2);
    }
    long_reset0_enable();
}
  1. 灯效

3.1 标准场景灯效设置

公版SDK有10 个标准的 led 模式,用户可设置对应的灯效模式变化
标准场景灯效设置位置:对应板级.c文件的 .led_ui_config.charge.xxx
image

    LED_UI_ALL_OFF = 1,                 //mode1: 全灭
    LED_UI_LED_ALL_ON,                  //mode2: 全亮

    LED_UI_LED1_ON,                     //mode3:  红亮
    LED_UI_LED1_SLOW_FLASH,               //mode4: 红慢闪
    LED_UI_LED1_FAST_FLASH,             //mode5: 红快闪
    LED_UI_LED1_DOUBLE_FLASH_5S,          //mode6: 红灯5秒连闪两下
    LED_UI_LED1_ONE_FLASH_5S,            //mode7: 红灯5秒闪1下

    LED_UI_LED0_ON,                     //mode8: 蓝亮
    LED_UI_LED0_SLOW_FLASH,               //mode9: 蓝慢闪
    LED_UI_LED0_FAST_FLASH,               //mode10: 蓝快闪
    LED_UI_LED0_DOUBLE_FLASH_5S,          //mode11: 蓝灯5秒连闪两下
    LED_UI_LED0_ONE_FLASH_5S,            //mode12: 蓝灯5秒连闪1下

    LED_UI_LED0_LED1_FAST_FLASH,           //mode13: 红蓝交替闪(快闪)
    LED_UI_LED0_LED1_SLOW_FLASH,         //mode14: 红蓝交替闪(慢闪)

    LED_UI_LED0_BREATHE,                //mode15: 蓝灯呼吸灯模式
    LED_UI_LED1_BREATHE,                //mode16: 红灯呼吸灯模式
    LED_UI_LED0_LED1_BREATHE,            //mode17: 红蓝交替呼吸灯模式

    //特殊UI:
    LED_UI_LED1_FLASH_THREE,               //自定义状态,不能通过pmd_led_mode去设置
    LED_UI_LED0_FLASH_THREE,               //自定义状态,不能通过pmd_led_mode去设置
    LED_UI_LEFT_OFF_RIGHT_LED0_LED1_FAST_FLASH, //左耳熄灭右耳红蓝灯快速闪
    LED_UI_RIGHT_OFF_LEFT_LED0_LED1_FAST_FLASH, //右耳熄灭左耳红蓝灯快速闪

    LED_UI_NULL = 0b11111, //不烧写efuse, 不改变灯状态

3.2 自定义灯效设置

(1)除了 10 个标准的 led 场景模式之外,其余场景下的 led 是否可配?
目前是不支持配置标准 led 模式之外的其他 led 模式的,原因是 AC702N 的代码是代码固化 ROM里面,不可修改。
补充:
a. 用户可通过pwm_led_mode_set接口自行开发,在需要设置的地方更改灯效;
b.pwm_led_mode_set接口设置无效果,可能是该部分代码并未跑到,或者被其他地方重新设置灯效覆盖;
(2)更改推灯模式:两个IO推两个灯
相关驱动固化在ROM中无法修改,暂不支持推灯模式修改

3.3 更改推灯IO

AC702N_FLASH_SDK_v2.0.0后版本SDK可支持,板级.h修改TCFG_LED_IO_PORT_CFG宏
image

对于部分板级.h没有LED配置的旧版本SDK,需要在板级.c文件.led_io_sel 处修改虚拟efuse配置
image 虚拟efuse只支持更改以下引脚:

    LED_IO_CFG_PB3 = 0,
    LED_IO_CFG_PB2, //备用
    LED_IO_CFG_PB6,
    LED_IO_CFG_PB7, //备用
    LED_IO_CFG_PC4,
    LED_IO_CFG_PC5, //备用
    LED_IO_CFG_DM,
    LED_IO_CFG_NONE = 0b111, //不烧efuse, 无LED

3.4 充电满电灯效设置

(1)B版修改方法
板级.c文件 .led_ui_config.charge_full设对应的满电灯效
image 但由于充满电系统空闲可能会马上关机,导致满电灯效显示不出来
处理方法:
charge_full_detect_hook里将注释掉sdx_dev_detect_time_del,然后加一个定时器让系统满电不马上关机,定时器挂个空函数即可
image 补充:
部分SDK看打印不跑charge_full_detect_hook,检查是否有添加断点,若没有需自行添加

 {BREAKPOINT_NORMAL_SKIP_MODE, rom_charge_full_detect, charge_full_detect_skip},//*添加断点

image (2)C版修改方法
C版修改逻辑同B版一样,但由于B版断点不通用于C版,需要自行添加断点如下

{BREAKPOINT_INSERT_MODE, (void*)0x174674, charge_full_detect_insert},//*添加断点

imageimageimage

3.5 灯的亮度修改

ac702n_flash_sdk_v2.1.0已支持该功能
image demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_支持灯亮度调节_20230425 https://kdocs.cn/l/culPPB2K2uDS

3.6 LED常用接口

pwm_led_mode_set()         /*切换led模式*/
pwm_led_mode_set_insert()  /*获取当前状态*/
  1. 提示音

4.1 提示音设置

使用外部配置工具添加音源,默认是加载下载目录下的提示音 tone.cfg,如果有一个新的 tone.cfg 文件,点击加载按钮可以把该提示音文件加载进来。如果想更换提示音,直接把对应的提示音文件拉到对应选项即可。
image

注意:
目前只支持添加 wts 格式和 sin 格式的提示音
同时需要保持 SDK 的TCFG_EX_RES_IN_FLASH_ENABLE 宏处于开启状态
image

4.2 语言设置和切换

(1)默认语言设置
设置位置:对应板级.c文件的.default_language
image

    LANG_TYPE_ENGLISH = 0,
    LANG_TYPE_CHINESE,

(2)部分旧SDK存在来电报号无法语言切换
需要做如下修改
image (3)语言切换
配置按键事件LANGUAGE_SWITCH或通过rom_language_switch_deal接口进行切换
image

4.3 模式提示音前添加poweron提示音

已支持
demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_模式提示音前添加poweron提示音_20230505 https://kdocs.cn/l/cnoxu1stQKHq

4.4 按键提示音

(1)io、ad按键
该功能ac702n_flash_sdk_v2.1.0已支持
image (2)触摸按键
该功能已支持
image demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_添加触摸按键提示音_20230424 https://kdocs.cn/l/cgZAk6uhZI4S
注意:该音源不建议修改,702不支持叠加播放提示音,修改音源后只能打断

4.5 提示音叠加播放

702系列暂不支持

4.6 修改TWS配对提示音

公版程序默认使用rom内部正弦波提示音,外部配置工具添加tws_conn提示音不生效
demo添加修改tws配置提示音功能
image demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_添加修改TWS配对提示音功能_20230427 https://kdocs.cn/l/cjXCI1k1xD2M

4.7 提示音音量设置

(1) 提示音音量
image (2)单独修改sin提示音音量
默认sin提示音音量与提示音音量一致 , 如需使用独立的sine提示音音量 , 需使能宏TCFG_SIN_VOL_CONFIG_ENABLE后,通过配置 SYS_DEFAULT_SIN_VOL修改SINE 提示音音量
image 联合音量sin提示音叠加音乐播,不支持单独设置音量大小,需要改到软件数字音量
5. TWS相关功能 注意:本章节介绍基于AC702N_FLASH_SDK_v2.0.1版本SDK,新版本经优化后通常与旧SDK存在差异,若与其他版本SDK文档有冲突,以后者为标准。

5.1 TWS配对方式选择

(1)按键发起配对的作为左声道
将【tws 配对方式】选择为【按键配对】,按键配对应用需要在【按键配置】的【KEY_0 配置】添加按键配对流程。则通过双击发起配对的那个耳机作为主机和左声道,被配对上的为右声道。
(2)自动配对时,主机作为左声道
自动交叉配对:利用蓝牙名结合配对码生成公共地址,左右耳通过公共地址进行配对。
如果没有固定左右耳或者通过上下拉区分左右耳的话,自动配对中,主机将作为左声道,从机作为右道,不会随着主从切换而改变。
(3)自动不交叉配对(c 版新增)
自动不交叉配对:利用蓝牙名生成公共地址,左右耳通过公共地址进行配对,配对后记住对方的地址。如果超过 20s 没有回连到对方,则忘记对方的地址,配对方式变为自动交叉配对。
注意:
1.自动配对可以和固定左右、上下拉电阻区分左右这两种方式结合,在上电后自动配对,左右耳由【声道检测方式】决定。如果【声道检测方式】选择【智能充电仓决定左右耳】,开机后将会自动配对。
2.自动配对 - TWS 未连接情况下,进行搜索配对。(产线多设备情况下,容易出现交叉配对情况)
补充:
a.使用交叉配对时,SDK默认同边(同声道)耳机不支持交叉配对,D0详见本文档5.4章节

5.2 TWS配对声道选择

TWS 配对和声道选择方式如下图所示:
image 以下的声道选择均为虚拟 efuse 的配置,如果使用了测试盒对耳配对功能(章节《对耳配对功能注意事项》)把物理 efuse 的声道烧写为【固定左右耳】,则取物理 efuse 的声道来覆盖虚拟 efuse的配置。
注意:
C版FlashSDK工程在使用测试盒配对的同时会烧写物理efuse固定声道;
测试盒对耳配对功能添加左右声道烧efuse的宏TCFG_EFUSE_WR_CHANNEL_ENABLE相关功能只用于B版FlashSDK工程,C版部分板级虽未删除但无实际作用。
左右声道选择主要有以下几种情况:
(1)测试盒分配左右耳(默认)
【声道检测方式】选择【测试盒分配左右耳(默认)】,第一次上电开机声道默认声道为"U",如果没有使用测试盒配对,则根据配对方式进行声道分配策略,tws 配对成功后,随机分配声道后则固定声道到 RAM,每次开机都是固定后的声道。只有绝对断电才会重新配对。
注意:
a. 使用该方式建议通过测试盒搭配模具进行配对烧写【声道检测方式】为【efuse 固定左右耳】,否则 tws 首次配对可能存在左右耳声道颠倒的现象。
b. 使用该选项后,【TWS 区分左右耳按键配置】的配置可能会出现颠倒现象。
c. 如果 L/R 跟 U 配对,则 L/R 的一边会保留,U 会变为另一边进行适配。
(2)固定左右耳
固定为左声道或者右声道。但生产需要注意要分两个程序进行生产。
(3)智能充电仓选择
【声道检测方式】选择【智能充电仓决定左右耳】,耳机放入充电仓之后,通过充电仓分配左右耳。
(4)通过下拉电阻决定左右耳
【声道检测方式】选择【硬件电阻决定左右耳】,并且把【入耳检测的 IO 选择】改为检测外部电阻的 io 口,则贴了外部 1k 下拉电阻的耳机作为右声道,没贴的作为左声道。
(5) 保留
【声道检测方式】选择【保留位’U’】,第一次上电开机声道默认声道为"U",根据配对方式进行声道分配策略。
注:该方式属于补救策略,不能再通过测试盒搭配模具进行配对烧写【声道检测方式】为【efuse固定左右耳】
OTP芯片烧写保留后,相当于回到使用测试盒分配左右耳且未用测试盒固定左右耳的状态,左右耳声道信息由配对方式决定;
image 补充:
a.SDK默认同边(同声道)耳机不支持交叉配对,详见本文档5.4章节
b.不使用物理efuse,将声道信息保存在VM区,见本文档本文档5.6章节

5.3 TWS重新配对

以下描述只适用于第一次上电开机声道默认声道为"U",根据配对方式进行声道分配策略。
重新配对左右耳的方式:
(1)测试盒重新配对
(2)按键重新配对。当处于配对状态时,第一次按键触发是取消配对,第二次按键触发是发起配对。当处于未配对状态时,第一次按键触发则是发起配对。
(3)智能充电仓重新配对
可以清除配对左右耳的方式:
(1)在充电仓的状态下,长按 10s,灯 ui 为快交替闪。(需要模具支持在仓时候能触摸到按键)

5.4 同边交叉配对

现有公版SDK默认程序不支持同边交叉配对
例: 耳机A左右耳配对上,耳机B左右耳配对上
1.此时拿耳机A的左耳(左声道)跟耳机B的右耳(右声道)是可以交叉配对上的。
2.而拿耳机A的右耳(右声道)跟耳机B的右耳(右声道)是不能交叉配对(同边)
D0工程暂不支持,flashSDK可通过如下方式修改:
image

5.5 对耳配对慢相关补充

(1)耳机左右耳已配对过,但仍觉得回连速度慢
TWS配对方式使用【自动不交叉配对】,开机先回连,再交叉配对,提高回连速度
imageimage (2)耳机A左右耳已配对,耳机A左耳与新耳机配对慢
检查TWS配对方式,使用【自动不交叉配对】要先完成回连搜索再进行交叉配对,会导致交叉配对慢
image 自动不交叉配对:利用蓝牙名生成公共地址,左右耳通过公共地址进行配对,配对后记住对方的地址。如果超过 20s 没有回连到对方,则忘记对方的地址,配对方式变为自动交叉配。

5.6不使用EFUSE保存CHANNEL

不使用物理efuse,将声道信息保存在软件VM区,声道由软件设置决定;
配置成声道信息使用VM后,测试盒读写的是VM的声道
image demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_支持声道信息保存到VM_20230519 https://kdocs.cn/l/cb7KrKRPZxDL
注意:
C版FlashSDK工程在使用测试盒配对的同时会烧写物理efuse固定声道;
测试盒对耳配对功能添加左右声道烧efuse的宏TCFG_EFUSE_WR_CHANNEL_ENABLE相关功能只用于B版FlashSDK工程,C版部分板级虽未删除但无实际作用。
对于已经烧写过物理efuse的芯片,由于efuse设置优先级高于软件,所以最终使用的还是efuse的声道信息,可以修改如下注释efuse读取代码:
image

5.7关闭交叉配对

公版的自动不交叉配对模式:利用蓝牙名生成公共地址,左右耳通过公共地址进行配对,配对后记住对方的地址。如果超过 20s 没有回连到对方,则忘记对方的地址,配对方式变为自动交叉配对。
这种方式20s未配对,依然会打开交叉配对,若希望完全关闭交叉配对功能,20s后不切换公共配对码自动配对即可;
配对模式选择自动不交叉配对,再注释掉如下
image

  1. EQ和通话

6.1 EQ调试

D0芯片在线调试版本 EQ 参数取在线调试下来的参数,不读取 efuse 的配置参数,在线调试完后需自行记录EQ参数,通过配置工具填入烧写;
D2芯片完成EQ调试后,需自行记录EQ参数,在工程代码对应板级.c文件里修改结构体.eq_tab和.ul_eq_tab完成配置。
image 注意:
AC702N 芯片各个频点中心截止频率范围在 20~20000Hz 之间;增益调节范围在-12~12dB 之间;eq总增益调节范围在-20~20dB 之间。
EQ在线调试使用方法请参考对应SDK包内文档《AC702N_SDK_介绍.pdf》在线EQ调试章节 手机APP调试请参考《AC702N_AudioTools使用手册.pdf》
补充:

  1. 702暂不支持通话下行EQ
  2. 部分版本在线EQ调试连接一直超时,需要开十段EQ宏才能连接;检查是否有下宏做分成处理,没有则加上; image

注意:702已支持通过外部eq.bin文件读取EQ参数

6.2 通话调试

通话调试同EQ调试一样,完成调试后需要需自行记录调试参数,填入配置工具或工程代码对应板级.c文件里
具体调试方法,请参考对应SDK包内文档《JL 通话调试手册.pdf》
注意:APP在线调试的设置范围与代码虚拟efuse设置范围不一致,以代码注释为准

6.3 SD卡方案EQ

该功能已支持
image demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_支持SD卡方案EQ_20230427 https://kdocs.cn/l/cbYS5ZWImt1H

6.4 EQ模式切换

该功能已支持,demo如下:

//hzb-20230310
const struct eq_seg_info eq_tab_normal_111[] = {
     {0, EQ_IIR_TYPE_BAND_PASS, 22,    -12 << 20, (int)(0.7f * (1 << 24))},
    {1, EQ_IIR_TYPE_BAND_PASS, 800,    3 << 20, (int)(0.5f * (1 << 24))},
    {2, EQ_IIR_TYPE_BAND_PASS, 10000,   3 << 20, (int)(1.6f * (1 << 24))},
    {3, EQ_IIR_TYPE_BAND_PASS, 432,   0 << 20, (int)(0.7f * (1 << 24))},
    {4, EQ_IIR_TYPE_BAND_PASS, 821,   0 << 20, (int)(0.7f * (1 << 24))},
};

const struct eq_seg_info eq_tab_country_111[] = {
    {0, EQ_IIR_TYPE_BAND_PASS, 22,    -12 << 20, (int)(0.7f * (1 << 24))},
    {1, EQ_IIR_TYPE_BAND_PASS, 70,     -9 << 20, (int)(0.8f * (1 << 24))},
    {2, EQ_IIR_TYPE_BAND_PASS, 130,    -16 << 20, (int)(0.7f * (1 << 24))},
    {3, EQ_IIR_TYPE_BAND_PASS, 2500,    -20 << 20, (int)(0.8f * (1 << 24))},
    {4, EQ_IIR_TYPE_BAND_PASS, 821,   -15 << 20, (int)(0.7f * (1 << 24))},
};


#define STEP_GAIN (0.1f*(1<<20))    //增益步进
#define STEP_Q      (0.1f*(1<<24))    //Q值步进

struct eq_seg_info eq_tab_temp[] = {
     {0, EQ_IIR_TYPE_BAND_PASS, 22,    -12 << 20, (int)(0.7f * (1 << 24))},
    {1, EQ_IIR_TYPE_BAND_PASS, 800,    3 << 20, (int)(0.5f * (1 << 24))},
    {2, EQ_IIR_TYPE_BAND_PASS, 10000,   3 << 20, (int)(1.6f * (1 << 24))},
    {3, EQ_IIR_TYPE_BAND_PASS, 432,   0 << 20, (int)(0.7f * (1 << 24))},
    {4, EQ_IIR_TYPE_BAND_PASS, 821,   0 << 20, (int)(0.7f * (1 << 24))},
};


extern void *rom_get_eq_cfg_hdl(void);
extern int rom_eq_mode_set(EQ_MODE mode);
void eq_step_timer_handle(void *priv)
{
    EQ_CFG *eq_cfg = rom_get_eq_cfg_hdl();
    /* struct eq_seg_info *seg = eq_cfg->cfg_parm[song_eq_mode].song_eq_parm.parm.seg; */
    extern struct eq_seg_info rom_eq_tab_custom[];
    static u8 need_change = 0;        //该值为1说明参数还需要调整

    for(int j = 0; j < eq_cfg->seg_num[song_eq_mode]; j++){
        if(rom_eq_tab_custom[j].iir_type != eq_tab_temp[j].iir_type){
            need_change = 1;    
            break;
        }
        if(rom_eq_tab_custom[j].freq != eq_tab_temp[j].freq){
            need_change = 1;    
            break;
        }
        if(rom_eq_tab_custom[j].gain != eq_tab_temp[j].gain){
            need_change = 1;
            break;
        }
        if(rom_eq_tab_custom[j].q != eq_tab_temp[j].q){
            need_change = 1;
            break;
        }
    }

    if(need_change){
        //实时 将rom_eq_tab_custom 和eq_tab_temp 做对比, 实时更新rom_eq_tab_custom
        for(int j = 0; j < eq_cfg->seg_num[song_eq_mode]; j++){
            rom_eq_tab_custom[j].iir_type = eq_tab_temp[j].iir_type;
            rom_eq_tab_custom[j].freq = eq_tab_temp[j].freq;
            if(rom_eq_tab_custom[j].gain < eq_tab_temp[j].gain){
                if(rom_eq_tab_custom[j].gain + STEP_GAIN < eq_tab_temp[j].gain){
                    rom_eq_tab_custom[j].gain += STEP_GAIN;    
                } else {
                    rom_eq_tab_custom[j].gain = eq_tab_temp[j].gain;
                }
                printf("eq_tab[%d].gain:%d, rom_eq_tab_custom[%d].gain(+):%d\n",j, eq_tab_temp[j].gain,j, rom_eq_tab_custom[j].gain);
            } else if(rom_eq_tab_custom[j].gain > eq_tab_temp[j].gain){
                if(rom_eq_tab_custom[j].gain - STEP_GAIN > eq_tab_temp[j].gain){
                    rom_eq_tab_custom[j].gain -= STEP_GAIN;    
                } else {
                    rom_eq_tab_custom[j].gain = eq_tab_temp[j].gain;
                }
                printf("eq_tab[%d].gain:%d, rom_eq_tab_custom[%d].gain(-):%d\n",j, eq_tab_temp[j].gain,j, rom_eq_tab_custom[j].gain);
            }
            if(rom_eq_tab_custom[j].q < eq_tab_temp[j].q){
                if(rom_eq_tab_custom[j].q + STEP_Q < eq_tab_temp[j].q){
                    rom_eq_tab_custom[j].q += STEP_Q;    
                } else {
                    rom_eq_tab_custom[j].q = eq_tab_temp[j].q;
                }
                printf("eq_tab[%d].q:%d, rom_eq_tab_custom[%d].q(+):%d\n",j, eq_tab_temp[j].q,j, rom_eq_tab_custom[j].q);
            } else if(rom_eq_tab_custom[j].q > eq_tab_temp[j].q){
                if(rom_eq_tab_custom[j].q - STEP_Q > eq_tab_temp[j].q){
                    rom_eq_tab_custom[j].q -= STEP_Q;
                } else {
                    rom_eq_tab_custom[j].q = eq_tab_temp[j].q;
                }
                printf("eq_tab[%d].q:%d, rom_eq_tab_custom[%d].q(-):%d\n",j, eq_tab_temp[j].q,j, rom_eq_tab_custom[j].q);
            }
        }

        rom_eq_mode_set(1);
        need_change = 0;
    }
}

void eq_mode_sw_test(u8 mode)
{
    extern struct eq_seg_info rom_eq_tab_custom[];
    static float global_gain = 10.0f;
    extern float rom_cp_efuse_music_eq_tab_to_user_tab(void *user_tar);
    extern void rom_set_global_gain(EQ_CFG *eq_cfg, MUSIC_MODE mode, float global_gain);

    
    EQ_CFG *eq_cfg = rom_get_eq_cfg_hdl();

    static u8 eq_mode_idx = 0;
    /* const u8 EQ_TAB_NUM = 6; */
    switch(eq_mode_idx){
        case 0:
            eq_mode_idx = 1;
            puts("uuuuuuu ---------- 0\n");
            /* memcpy(rom_eq_tab_custom, eq_tab_normal_111, sizeof(eq_tab_normal_111)); */
            memcpy(eq_tab_temp, eq_tab_normal_111, sizeof(eq_tab_normal_111));
        break;
        case 1:
            eq_mode_idx = 0;
            puts("uuuuuuu ---------- 1\n");
            memcpy(eq_tab_temp, eq_tab_country_111, sizeof(eq_tab_country_111));
        break;
    }

    static u16 ttime_id = 0;
    if(!ttime_id){
        ttime_id = sys_timer_add(NULL, eq_step_timer_handle, 200);
    }
    
}

补充:浮点型数值设置增益
image

6.5 10段EQ调节

ac702n_flash_sdk_v2.1.0已支持离线 10 段 EQ 全精度功能
使用方法
(1) 在对应的板级文件开启该宏
image (2) 加入离线 eq 文件资源
在 download.bat 文件里面加入以下字段 -res
image 注意事项:
a.离线编辑生成 eq 需要使用 AD698N 的格式文件
image b.通话下行 EQ 部分不起效
image c.DRC 设置只有限幅器起作用

6.6 三方通话功能

需更换btstack库文件
【金山文档】 702三方通话btstack
https://kdocs.cn/l/cqF3LpzOfy1H

  1. 开关机相关补充

7.1 上电开机和按键开机

image 按键开机时长设置:
IO按键:
image

触摸按键:
image

void lp_touch_key_timer_reinit(void)
{
        //长按开机时间配置
        M2P_CTMU_CH0_SOFTOFF_LONG_TIMEL = (CFG_M2P_CTMU_CH0_SOFTOFF_LONG_TIME & 0xFF);
        M2P_CTMU_CH0_SOFTOFF_LONG_TIMEH = ((CFG_M2P_CTMU_CH0_SOFTOFF_LONG_TIME >> 8) & 0xFF);
}

imageimage

7.2 拔出开机

image

7.3 关闭按键开关机功能

关闭按键开机:在开机断点中添加关机函数
image 关闭按键关机:在板级.c按键列表移除关机事件
image

7.4 升级拔出不开机

测试盒SD卡串口升级完成拔出不开机
image 该功能已支持
image demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_添加升级拨出不开机功能_20230425 https://kdocs.cn/l/cktpRf7wIywu
补充:对于升级完成后不及时拔出,仍接着测试盒串口线一段时间后才拔出,存在不关机问题
image

extern void rom_power_wakeup_disable_with_port(u8 port_io);
rom_power_wakeup_disable_with_port(IO_LDOIN_DET);

实际上是升级完成复位后进关机了,但是测试盒一直接着所以又马上唤醒了,之后拔出就不是升级完成的状态就不会走关机了,处理方法可以在升级完成复位进关机前把LDO5V的唤醒关闭,这样即使接着测试盒也不会被唤醒,但需要注意的是,这个时候拔出不会唤醒,需要按键唤醒或者进仓才能再次唤醒。

7.5 插入5v直接关机

用于外部充电时,5V插入关机
该功能已支持
image demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_添加5V插入关机功能_20230426 https://kdocs.cn/l/cplxE1JTsVlD

7.6 无蓝牙连接自动关机

D0工程:
image D2工程:
对应板级.c文件的.auto_off_time,单位为分钟,最大关机时间:15分钟,设置为0不自动关机;
image 注意:
board_ac702x_default_cfg.h文件的宏TCFG_AUTO_SHUT_DOWN_TIME只用于保证建议能正常通过,无实际作用
image

7.7 测试盒配对完毕后关机

公版默认rom程序内无该功能,故测试盒此处设置无效。flashSDK更新到v210版本以上可支持,OTP芯片程序已固化无法修改,暂不支持;
image

ac702n_flash_sdk_v2.1.0已支持
image

7.8 ADkey按键开机功能

公版按键使用ADkey时,默认流程上电即开机;需要ADkey按键开机功能按以下思路添加:

  1. 添加长按开机时间宏TCFG_POWERON_TIME ,板级.h将TCFG_POWER_ON_NEED_KEY置零 image
  2. 在app.c文件check_power_on_key_skip函数内修改自己的开机按键判断逻辑 image

7.9获取唤醒IO

image wakeup_pnd_data的BIT位对应rom_wk_param.port数组的索引,也就是wakeup_pnd_data的BIT(0)对应rom_wk_param.port[0],BIT(1)对应rom_wk_param.port[1],以此类推。
8. 电量和功耗相关补充

8.1 低电提示和关机电压

imageimage

8.2 船运仓储模式

(1)外置船运模式
image 配置宏定义参数说明:
TCFG_EXTERN_STORAGE_MODE_ENABLE 宏能够使能或关闭外置芯片船运仓储模式
TCFG_EXTERN_STORAGE_MODE_BOAT_PL_PORT 选择控制外置船运芯片的 IO 端口
注意:不支持配置为 IO_PORT_DP 和 IO_PORT_DM,否则导致关机功耗变高。
外置芯片船运仓储模式配置的原理图对应
image 使能外置芯片船运仓储模式后:
a. 开机和关机,配置的船运仓储模式 EN 口即 BOAL_PL 都将保持高电平。
b.测试盒配置仓储模式命令使能后,可控制耳机进入船运模式
image 耳机开机或关机状态下放入串口通讯模具中,当通讯成功,即测试盒显示“命令应答”,并伴有“滴”一声提示后过几秒将耳机拿出通讯模具,耳机将进入船运模式
image 配置的船运仓储模式 EN 口即 BOAL_PL 被拉低,外置船运芯片收到信号会控制切断耳机的供电电源,进入船运仓储模式,此时整个耳机断电,无法通过按键开机唤醒耳机。只有在充电口额外供电的情况下,芯片才有电,拉高船运仓储模式 EN 口即 BOAL_PL,控制外部船运芯片一直对芯片供电。
c. 耳机放入充电仓再拿出将退出船运仓储模式。

(2)内置船运模式
该功能已支持,船运模式内理论功耗可做到4uA左右,使用方法同外置船运模式一样通过测试盒仓储命令进入。
image 配置宏定义参数说明:
TCFG_STORAGE_MODE_ENABLE 宏能够使能或关闭内置船运仓储模式。
使能内置置芯片船运仓储模式后:
a. 测试盒配置仓储模式命令使能后,可控制耳机进入船运模式,耳机开机或关机状态下放入串口通讯模具中,当通讯成功,即测试盒显示“命令应答”,并伴有“滴”一声提示后,将耳机拿出通讯模具,耳机将进入船运模式,此时耳机深度关机,无法通过按键开机唤醒耳机。
b. 耳机放入充电仓再拿出将退出船运仓储模式。
注意:当前 SDK 没有使用到 nvram,进入船运模式关闭了 nvram 以达到最小功耗,
如果方案要使用到 nvram,则需要开启回来,但功耗会有所升高。
B版demo链接: 【金山文档】 ac702n_flash_sdk_v1.0.2_B版添加tws内置船运模式_20230524 https://kdocs.cn/l/ctwXf3OtzR0f
C版demo链接: ac702n_flash_sdk_v2.1.0版本SDK公版已添加

(3)D0工程船运模式
D0工程暂不支持其他系列的船运模式,故使用测试仓储指令无应答;
为了让耳机从充电仓拿出来都是保持满电状态,702系列提供了一种vbat_det_teim的功能替代船运模式(基于充电仓一直有电可以充进去的前提)。
image 例:
假设一开始耳机电池充满为4.2v,充满后进入关机状态,电池缓慢放电。
当耳机芯片检测到电池电压低于3.8v的时候,会唤醒系统进行充电至充满电压4.2后关机。
然后在充电仓内重复该流程,以保证耳机从仓拿出来都是保持满电状态。

8.3 充电仓相关问题

(1)耳机满电入仓无法唤醒充电
部分充电仓存在耳机电池满电时放入,耳机检测到满电状态直接退出充电,导致无法唤醒充电仓5V和充电灯效;
处理方法:
添加以下代码,开始充电时调用user_ldo_isr_incres(1) 放电增加功耗,2s后关闭;(需保证PB3引脚不被占用)

void user_ldo_isr_incres(u8 en)
{
    if(en)
    {
        EVD_EN(1);
        EVD_SHORT_PB3(1);
        gpio_set_pull_up(IO_PORTB_03, 0);
        gpio_set_pull_down(IO_PORTB_03, 1);
        gpio_set_direction(IO_PORTB_03, 0);
        gpio_set_hd0(IO_PORTB_03, 1);
        gpio_set_hd(IO_PORTB_03, 1);
        gpio_set_output_value(IO_PORTB_03, 0);
    }else{
        EVD_EN(0);
        EVD_SHORT_PB3(0);
        gpio_set_pull_up(IO_PORTB_03, 0);
        gpio_set_pull_down(IO_PORTB_03, 0);
        gpio_set_die(IO_PORTB_03, 0);
        gpio_set_dieh(IO_PORTB_03, 0);
        gpio_set_direction(IO_PORTB_03, 1);
    }
} 

8.4 不进入低功耗模式

添加该断点实现不进入低功耗模式
image

8.5耳机充满时出现复充问题处理

AC702N:
关闭“开始充电后关闭LDOIN下拉电阻”
开启“在仓关机是否保持LDOIN下拉电阻”

  如图所示:  

image 备注:
保持下拉电阻带来的副作用:
1、整机在仓关机功耗会变高30uA左右(2 * 3V / 200K)。
2、一只耳机充满后,再放入另一只耳机时,不能进行充电。需要两只耳机拿起后再放入才能充电

8.6使用AC961的智能仓耳机充满时无法关机

低功耗时钟源修改
image 备注:耳机进入低功耗状态下,功耗会比用LRC的略大一点
9. 游戏模式 B版SDK不支持,C版SDK已开发完成
imageimage

  1. 频偏

10.1 频偏相关说明

a. 详细功能使用说明请参考测试盒的附带文档的对应章节,该章节只描述涉及AC702N的操作注意
事项。
b. 频偏自动校正测试项只支持两次频偏写入,但是只有测试盒测试出来的频偏比第一次写入的频偏rf_fre_off_0 相差大于 2 才会第二次写入频偏rf_fre_off_1,没有大于 2 则是不会写入。

10.2 软件改频偏

image

 //物理efuse没烧频偏就用虚拟efuse的
    //烧了就用实际的
    if (rf_fre_off_0_en != 1) {
        rom_g_efuse_config.ef_rsd.rf_fre_off_0_en   = rf_fre_off_0_en;      //保留efuse中的channel使用
        rom_g_efuse_config.ef_rsd.rf_fre_off_0      = rf_fre_off_0;         //保留efuse中的channel使用
        rom_g_efuse_config.ef_rsd.rf_fre_off_1_en   = rf_fre_off_1_en;      //保留efuse中的channel使用
        rom_g_efuse_config.ef_rsd.rf_fre_off_1      = rf_fre_off_1;         //保留efuse中的channel使用
    }

image 不使用物理efuse,只用软件固定,直接在此处修改虚拟efuse的值
image

  1. 发射功率相关补充 注意:702发射功率最大可设置到6
    image

  2. 充电相关补充

12.1 添加充电NTC温度保护

该功能最新公版已支持
image demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_添加NTC温度检测_20230424 https://kdocs.cn/l/ceUZk5Nrwzqg

12.2 ldo5v拔出滤波补充说明

image ldo5v拔出过滤值,过滤时间 = (filter*100 + 40)ms,ldoin<0.6V且时间大于过滤时间才认为拔出
a. 对于充满直接从5V掉到0V的充电仓,该值必须设置成0;
b. 对于充满由5V先掉到0V之后再升压到xV的充电仓,需要根据实际情况设置该值大小;

12.3 关掉内置充电流程

image

  1. 时钟相关 修改系统时钟
    imageimage

六、生产相关

  1. 测试盒音量加减显示 该功能已支持
    修改点:
    image demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_添加测试盒显示音量加减_20230424 https://kdocs.cn/l/cquhmTLGatKd

  2. 测试盒SDK信息、电量及检验码显示 该功能暂不支持
    显示SDK信息、电量及检验码等功能需要通过蓝牙连接获取,目前702只有串口方式连接测试盒,故无法实现。

  3. +授权工具显示KEY不匹配 image 请更新烧写文件授权工具到v2.1.5以上

  4. 耳机声道和配对注意事项 (1)AC702N公版程序默认声道相同的耳机不能配对(包括交叉配对);
    例: 耳机A左右耳配对上,耳机B左右耳配对上
    1.此时拿耳机A的左耳(左声道)跟耳机B的右耳(右声道)是可以交叉配对上。
    2.而拿耳机A的右耳(右声道)跟耳机B的右耳(右声道)是不能交叉配对(同边)
    具体声道分配方法,请参考对应SDK包内文档《AC702N_SDK_介绍.pdf》TWS配对声道选择章节

(2)SDK 配置起效优先级 :efuse 配置>板级配置>board_ac702x_default_cfg.h;
如果烧写了物理efuse优先使用efuse配置,且efuse为一次性可编程存储器,一旦烧写固定无法更改;建议测试盒搭配模具进行配对和efuse声道信息固定,确保左右耳不放反;

(3)AC702N在使用测试盒配对的同时会烧写声道信息到物理efuse;
测试盒对耳配对功能添加左右声道烧efuse的宏TCFG_EFUSE_WR_CHANNEL_ENABLE只适用于B版SDK;C版部分板级虽未删除该宏但无实际作用,不管是否使能,测试盒配对时必然烧写物理efuse;

(4)未烧写efuse情况下,声道信息由软件配置决定;
image

(5)未烧写efuse情况下,软件不对声道信息进行固定存在风险;
第一次上电开机声道默认声道为"U",如果没有使用测试盒配对,则根据配对方式进行声道分配策略,tws 配对成功后,随机分配声道后则固定声道到 RAM,每次开机都是固定后的声道。只有绝对断电才会重新配对。
因此tws 首次配对可能存在左右耳声道颠倒的现象,且即使生产时声道信息正确,客户使用时也可能存在断电导致声道重新分配的风险;故使用该方式时建议通过测试盒搭配模具进行配对烧写efuse固定声道信息或将声道信息保存在VM区;
image demo链接: 【金山文档】 ac702n_flash_sdk_v2.0.1_支持声道信息保存到VM_20230519 https://kdocs.cn/l/cb7KrKRPZxDL

  1. 生产常见配对问题 (1)同边问题导致配对不上(OTP)
    情况 1 : 测试盒固定的左右声道相同,导致TWS同边无法配对
    验证方法:
    参考SDK包内文档《AC702N_SDK_介绍.pdf》在线调试相关章节,打开异常样机的打印调试功能,用DP口抓取异常样机打印,确认EFUSE是否被烧写,烧写声道信息是否同边;
    image 解决方法:
    对于OTP芯片,暂不支持同边交叉配对,所有程序已经固化在ROM中,物理efuse信息一旦烧错不可更改,只能更换芯片重新烧录;
    补充:烧错声道efuse可以重烧声道选择配置为【保留】,实现芯片不读efuse声道信息再次使用,但仍存在其他风险,请详读SDK手册相关章节做好把控。
    image

情况 2 : 交叉配对产生的声道信息相同,导致TWS同边无法配对
具体原因:
TWS方案未使用软件或硬件分配声道,又未使用测试盒固定声道时,开机默认声道U,tws 配对成功后,随机分配声道后则固定声道到 RAM,每次开机都是固定后的声道。只有绝对断电才会重新配对。若异常样机左右耳都与其他样机交叉配对过,且分配到的RAM声道信息相同,则会产生同边无法配对的问题。
验证方法:

  1. 无法配对的异常样机用测试盒配对后都能配对
  2. 该情况下异常样机一边断电声道恢复到U即可重新配对,或者取U声道的耳机,与异常耳机左右耳都可以配对;
  3. 该情况下,取一对用测试盒固定过efuse声道的耳机A,存在耳机A的一边与异常样机的左右耳都能配对,耳机A的另一边与异常样机的左右耳都配对不上现象 解决方法:
  4. 使用软件或硬件分配声道
  5. 生产环节中添加测试盒烧写固定声道

(2)同边问题导致配对不上(FLASH SDK)
FlashSDK可通过打印确定物理efuse烧写情况和声道信息
image ①对于OTP芯片,暂不支持同边交叉配对,所有程序已经固化在ROM中,物理efuse信息一旦烧错不可更改。
②对于带Flash的芯片,如需要同边耳机也能实现配对,处理如下:
image ③对于带Flash的芯片,在测试盒配对同时烧写了物理efuse导致软件声道配置无效,处理如下:
image (2)配对速度慢
① 已配对的耳机左右耳之间回连速度慢
TWS配对方式使用【自动不交叉配对】,开机先回连,再交叉配对,提高回连速度
imageimage ② 已有配对记录的耳机单边和新耳机配对慢
如:耳机A左右耳已配对,耳机A左耳与新耳机配对慢
检查TWS配对方式,使用【自动不交叉配对】要先完成回连搜索再进行交叉配对,会导致交叉配对慢
image 自动不交叉配对:利用蓝牙名生成公共地址,左右耳通过公共地址进行配对,配对后记住对方的地址。如果超过 20s 没有回连到对方,则配对方式变为自动交叉配。

  1. 一拖八报错:烧写配置错误 image 通常是芯片使用测试盒配对或校准频偏烧写过efuse导致
    验证方法:强升开打印看物理efuse烧写情况
    image 原因:一拖八烧录的时候会校验efuse信息,烧写过efuse的芯片校准失败无法再使用烧录工具烧录(一拖二、一拖八)

如果强升开打印无任何信息,开机蓝牙名是BT_music,说明这是一个空片
可能是空片未过烧录器情况下,进测试盒配对或者校准频偏,导致烧写了声道/频偏物理efuse
处理方法:跳过校准项
image 7. 一拖二工具添加分配蓝牙地址功能 后续新版本SDK将自带该功能
旧版本使用AC702N_FLASH_SDK_v1.0.2或AC702N_FLASH_SDK_v2.1.1
需更换cpu.a文件
【金山文档】 AC702N添加一拖二烧录工具分配蓝牙地址功能 AC702N添加一拖二烧录工具分配蓝牙地址功能.zip

七、问题处理

  1. AC702_flash_v250,连接测试盒测音乐开耳返卡顿变调。-- 20260204 -- CKS imageimage
  2. AC702_flash_v250,开耳返切到音乐模式再切回蓝牙模式,播放卡顿变调。-- 20260204 -- CKS image

本文档包含以下子页面

Prev
AD698N和AC638N电压优化补丁V2说明
Next
2024-4-30 发布歌词显示SDK开发注意事项