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

AC696X软件问题整理

📎 原始文档:https://www.kdocs.cn/l/crpKIYDoUeJe

AC696X软件问题整理

TOC \o "1-1" \h \u  HYPERLINK \l _Toc1293668512 1.AC696X DCDC模式时需要设置 CLOCK_MODE_IGNORED ,LDO模式 时就设置 CLOCK_MODE_ADAPTIVE 20200407  PAGEREF _Toc1293668512 \h 8
 HYPERLINK \l _Toc10261661 2.AC696系列应用层关闭长按复位功能 20200504  PAGEREF _Toc10261661 \h 8
 HYPERLINK \l _Toc1888638491 3.AC696系列测试盒修改复位脚 20200504  PAGEREF _Toc1888638491 \h 9
 HYPERLINK \l _Toc1517909920 4.AC696系列耳机SDK版本V0.1.3版本注意 20200520  PAGEREF _Toc1517909920 \h 11
 HYPERLINK \l _Toc1739692448 5.AC696系列SDK0.1.3关充电拔出开机和和BLE功能后,进入低功耗模式程序会进入睡眠问题 20200516  PAGEREF _Toc1739692448 \h 13
 HYPERLINK \l _Toc2071789004 6.AC696系列SDK0.1.3 关掉TWS功能后蓝牙播歌没有声音问题修改 20200516  PAGEREF _Toc2071789004 \h 14
 HYPERLINK \l _Toc2097587468 7.AC696系列 软件或电阻检测分左右耳之后,用测试盒配对,能显示配对成功但实际没有配对上处理 20200602  PAGEREF _Toc2097587468 \h 15
 HYPERLINK \l _Toc502826315 8.AC696系列音箱版本sdk模拟的DAC初始化外置定义 20200610  PAGEREF _Toc502826315 \h 16
 HYPERLINK \l _Toc286121558 9.AC696版本支持MTY格式提示音 20200618  PAGEREF _Toc286121558 \h 19
 HYPERLINK \l _Toc542768266 10.AC696系列蓝牙耳机和音箱关于PD4 IO使用注意 20200619  PAGEREF _Toc542768266 \h 21
 HYPERLINK \l _Toc930406676 11.AC696N 2M程序烧写到4M容量芯片注意事项 20200619  PAGEREF _Toc930406676 \h 22
 HYPERLINK \l _Toc67869024 12.动态开关长按复位 20200619  PAGEREF _Toc67869024 \h 23
 HYPERLINK \l _Toc220948944 13.使用AC6969D调式样机出现通话远端没有声音问题处理方法 20200619  PAGEREF _Toc220948944 \h 23
 HYPERLINK \l _Toc432385182 14.AC696X 跑LDO15若出现部分机子通话时样机复位处理方法 20200619  PAGEREF _Toc432385182 \h 24
 HYPERLINK \l _Toc255929317 15.AC696系列2M的SDK开蓝牙一拖二出现奇怪的问题 20200624  PAGEREF _Toc255929317 \h 25
 HYPERLINK \l _Toc414631958 16.AC696系列开启Gsenor编译不过 20200701  PAGEREF _Toc414631958 \h 25
 HYPERLINK \l _Toc594972605 17.AC696测试盒配对的TWS清配对注意点 20200701  PAGEREF _Toc594972605 \h 26
 HYPERLINK \l _Toc748224778 18.AC696系列耳机版本V014-P1优化 20200721  PAGEREF _Toc748224778 \h 27
 HYPERLINK \l _Toc567731831 19.AC696系列音箱版本V024和耳机SDK031获取连接手机的蓝牙名和地址 20220707----WTS 更新  PAGEREF _Toc567731831 \h 28
 HYPERLINK \l _Toc1015651491 20.关于弱VDDIO档位为2.4V给触摸IC的供电引起开关机漏电问题,重要!! 20200721  PAGEREF _Toc1015651491 \h 29
 HYPERLINK \l _Toc467242687 21.AC696X SDK0.2.3-p1 录音录到外部flash后,播放不了问题 20200711  PAGEREF _Toc467242687 \h 30
 HYPERLINK \l _Toc897315410 22.AC696X SDK014-p1 对耳连苹果手机开SIRI有时蓝牙会断连问题处理 20200711  PAGEREF _Toc897315410 \h 30
 HYPERLINK \l _Toc434306746 23.AC696X 外挂FM时,FM的IIC口和卡口的CMD脚及DATA脚复用问题 20200713  PAGEREF _Toc434306746 \h 31
 HYPERLINK \l _Toc1300956807 24.AC696X耳机和音箱SDK的pwm功能 20200714  PAGEREF _Toc1300956807 \h 32
 HYPERLINK \l _Toc704704706 25.AC696X在蓝牙播放歌曲的时候播发msbc提示音注意点 20200714  PAGEREF _Toc704704706 \h 33
 HYPERLINK \l _Toc536004595 26. AC696X 混响和回声,有变量选择 20200716  PAGEREF _Toc536004595 \h 33
 HYPERLINK \l _Toc38297540 27. AC696X EQ在线调式注意点 20200716 CCB  PAGEREF _Toc38297540 \h 34
 HYPERLINK \l _Toc266269175 29.AC696系列用于音箱应用注意点 20200721 YWP  PAGEREF _Toc266269175 \h 34
 HYPERLINK \l _Toc989995726 30. AC696X 软件编码器实现方法 20200724 LZK  PAGEREF _Toc989995726 \h 34
 HYPERLINK \l _Toc778794090 31. linein复用CMD检测配置例子 20200724 LZK  PAGEREF _Toc778794090 \h 36
 HYPERLINK \l _Toc1891017949 32. GPIO相关函数参数传参不正常会导致USB功能不正常 20200724 LZK  PAGEREF _Toc1891017949 \h 36
 HYPERLINK \l _Toc136180590 33. Linein单声道模拟输入变双声道输出函数,(DAC声道跟linein声道不一致也适用) 20200724 LZK  PAGEREF _Toc136180590 \h 37
 HYPERLINK \l _Toc789055752 34. SD_PG/PA0 脚无法正常控制 20200724 LZK  PAGEREF _Toc789055752 \h 37
 HYPERLINK \l _Toc1632172792 35. AC696 添加设备(优先)独立模式功能 20200724 LZK  PAGEREF _Toc1632172792 \h 38
 HYPERLINK \l _Toc1654090510 36.AC696音箱版本直接播放MP3提示音方法 20200801 YWP  PAGEREF _Toc1654090510 \h 43
 HYPERLINK \l _Toc381264552 37.696系列K歌宝解决第一声延时长的问题 20200803 YWP  PAGEREF _Toc381264552 \h 44
 HYPERLINK \l _Toc1556478149 38. music模式下LED7显示、播放对应设备名,并在播放完之后显示文件号 20200808 SQ  PAGEREF _Toc1556478149 \h 46
 HYPERLINK \l _Toc1604194330 39. 报号前播放指定一个提示音 20200808 SQ  PAGEREF _Toc1604194330 \h 56
 HYPERLINK \l _Toc884090867 40. 固定音量播放提示音 20200808 SQ  PAGEREF _Toc884090867 \h 57
 HYPERLINK \l _Toc1842599707 41.Linein模式走模拟使用抢断方式播放提示音带有Linein声音 20200808 SQ  PAGEREF _Toc1842599707 \h 58
 HYPERLINK \l _Toc2146962597 42.AC696系列V024V025版本的FM背噪杂音的库优化 20200808 PYP  PAGEREF _Toc2146962597 \h 60
 HYPERLINK \l _Toc1814497543 43.【音箱】AC696系列DAC输出前后有PO声(DAC设置高阻引起) 202008014 LZK  PAGEREF _Toc1814497543 \h 60
 HYPERLINK \l _Toc1910468732 44.【音箱】AC696系列AUX走模拟时播叠加提示音时,音乐出现卡顿处理方法 202008015 WTS  PAGEREF _Toc1910468732 \h 61
 HYPERLINK \l _Toc220427893 45.AC696系列单独调节系统叠加提示音音量方法 202008015 WTS  PAGEREF _Toc220427893 \h 63
 HYPERLINK \l _Toc99399077 46.AC696系列直接在代码中修改叠加提示音方法 202008015 WTS  PAGEREF _Toc99399077 \h 64
 HYPERLINK \l _Toc18914401 47.AC696系列音箱SDK2.5 判断录音录到哪个设备 202008015 WTS  PAGEREF _Toc18914401 \h 67
 HYPERLINK \l _Toc635059851 48.AC696系列音箱SDK2.5快速按遥控有时不灵敏修改方法 202008015 WTS  PAGEREF _Toc635059851 \h 68
 HYPERLINK \l _Toc694371683 49.AC696系列如果误拿ROM中用到的IO口去做唤醒口,出现充电脚5V拔出后,耳机不会自动开机问题解决方法 202008020 WTS  PAGEREF _Toc694371683 \h 69
 HYPERLINK \l _Toc767139180 50.AC696X 音箱 SDK在对箱时红外按键处理2020 0822 LHY  PAGEREF _Toc767139180 \h 76
 HYPERLINK \l _Toc1202791682 51. AC696X 音箱 SDK低电检测使用复位脚问题 LHY 2020 0822  PAGEREF _Toc1202791682 \h 77
 HYPERLINK \l _Toc1710023174 52. AC696X 耳机 SDK016面条耳机,把按键消息配置在工具里面,按键的消息会错位 XNW 20200824  PAGEREF _Toc1710023174 \h 77
 HYPERLINK \l _Toc1234381867 53. AC696X 音箱 SDK025使用外部eq配置文件后程序中的6个eq效果不起作用 SQ 20200825  PAGEREF _Toc1234381867 \h 78
 HYPERLINK \l _Toc2100107092 54. AC696X 音箱 SDK025程序中实时修改eq某频点增益 SQ 20200825  PAGEREF _Toc2100107092 \h 81
 HYPERLINK \l _Toc2144329920 55. AC696X ac696n_sdk_release_v0.1.6_2M包加入来电铃声和来电报号的问题 YP  PAGEREF _Toc2144329920 \h 84
 HYPERLINK \l _Toc387855026 56. AC696X 程序上设置自定义蓝牙名【通用】 LZK  PAGEREF _Toc387855026 \h 86
 HYPERLINK \l _Toc657328150 57. 025版本带混响功能有概率死机 20200910 xin  PAGEREF _Toc657328150 \h 87
 HYPERLINK \l _Toc532850867 58.AC696的V025版本SDK进入蓝牙会自动退出蓝牙模式问题 20200911 YWP  PAGEREF _Toc532850867 \h 87
 HYPERLINK \l _Toc426152566 59.AC696系列外插MIC做混响或扩音设计注意 20200915 YWP  PAGEREF _Toc426152566 \h 88
 HYPERLINK \l _Toc923597326 60.AC6965E的AUX/LINEIN设计注意 20200915 YWP  PAGEREF _Toc923597326 \h 89
 HYPERLINK \l _Toc1522846594 61.AC696N的LADC和蓝牙后台设计注意 20200915 YWP  PAGEREF _Toc1522846594 \h 90
 HYPERLINK \l _Toc1204946657 62.AC696N的蓝牙连接成功自动播放 20200916 FSW  PAGEREF _Toc1204946657 \h 90
 HYPERLINK \l _Toc667131627 63.AC696N 混响开发注意点 LZK  PAGEREF _Toc667131627 \h 91
 HYPERLINK \l _Toc1659027184 64. AC696 1.1.0 SDK媒体音量与麦克风音量独立实现方法 20200925 LHY- 20210817 WGH修改  PAGEREF _Toc1659027184 \h 94
 HYPERLINK \l _Toc1994002409 65. AC696 1.1.0 SDK U盘/SD卡提示音独立实现方法 20200925 LHY  PAGEREF _Toc1994002409 \h 100
 HYPERLINK \l _Toc151820771 66.AC696系列LINEIN左右声道与DACLR输入出的注意 20201015 YWP  PAGEREF _Toc151820771 \h 101
 HYPERLINK \l _Toc1165634047 67.AC696系列 外挂FLASH使用方法与注意点 20201016 LHY  PAGEREF _Toc1165634047 \h 101
 HYPERLINK \l _Toc227783313 68. AC696系列 SDK1.1.1 音乐模式频繁播放提示语导致播放异常 20201016 LHY  PAGEREF _Toc227783313 \h 105
 HYPERLINK \l _Toc1708298920 69. AC696系列 SDK1.1.1 蓝牙模式提示语未播放完被连接提示语打断解决方法 20201016 LHY  PAGEREF _Toc1708298920 \h 106
 HYPERLINK \l _Toc622344729 70. AC696系列 SDK1.1.1 指定拔出U盘切换到特定模式解决方法 20201016 LHY  PAGEREF _Toc622344729 \h 107
 HYPERLINK \l _Toc1111874180 71. AC696系列 SDK1.1.1 开机优先设备(SD卡/U盘)上线实现方法 20201017 LHY  PAGEREF _Toc1111874180 \h 107
 HYPERLINK \l _Toc1403414980 72. AC696系列 SDK1.1.1 关闭TWS对箱回连解决方法 20201017 LHY  PAGEREF _Toc1403414980 \h 109
 HYPERLINK \l _Toc621823678 73. AC696系列 SDK1.1.1 按键断开对箱后会回连的解决方法 20201017 LHY  PAGEREF _Toc621823678 \h 109
 HYPERLINK \l _Toc778888075 74. AC696系列 SDK1.1.1 对箱设置单声道时,播歌下关其中一个音箱后,另外一个有时会复位需要更换的库 ------WTS 20201022  PAGEREF _Toc778888075 \h 111
 HYPERLINK \l _Toc1166400064 75. AC696系列 SDK1.1.1 播完U盘或卡后,不会自动播放下一个设备音乐的修改方法 ------WTS 20201022  PAGEREF _Toc1166400064 \h 111
 HYPERLINK \l _Toc842251571 76. AC696 系列 SDK1.1.1 切蓝牙模式播提示音的时候(蓝牙初始化未完成)插入TF卡,无法切入TF卡模式,程序卡死问题处理方法 -------LAQ 20201022  PAGEREF _Toc842251571 \h 112
 HYPERLINK \l _Toc878287152 77.AC696 系列 SDK1.1.1 数码管显示变化较快时,出现某一段亮一些,某一段暗一些的处理方法 -------LJW 20201023  PAGEREF _Toc878287152 \h 113
 HYPERLINK \l _Toc1185314465 78. AC696 系列 SDK1.1.1 一边调回声延迟,一边用MIC说话会有沙沙声的处理方法 -------LJW 20201023  PAGEREF _Toc1185314465 \h 113
 HYPERLINK \l _Toc1477311422 79. AC696 系列 SDK1.1.1 插卡无法扫描到隐藏文件和带.的文件名的文件的处理方法 -------LJW 20201023  PAGEREF _Toc1477311422 \h 114
 HYPERLINK \l _Toc1572658835 80. AC696 系列 SDK1.1.1 由于获取电量值改变的时间间隔太长导致电压检测不准的处理方法 -------LJW 20201027  PAGEREF _Toc1572658835 \h 114
 HYPERLINK \l _Toc1952453645 81. AC696 系列 SDK1.1.1 自动mute使用方法 -------LHY 20201028  PAGEREF _Toc1952453645 \h 114
 HYPERLINK \l _Toc532619456 82.AC696X SDK1.1.1 设置为单声道后,有的机子有时播放U盘或卡音乐声音非常小解决方法 ----WTS 20201102  PAGEREF _Toc532619456 \h 115
 HYPERLINK \l _Toc1135198361 83.AC696 系列 SDK1.1.1 快速插拔设备出现死机、无法切模式解决方法 -------LHY 20201102  PAGEREF _Toc1135198361 \h 116
 HYPERLINK \l _Toc1039351864 84.AC696 系列 PC 模式插上电脑后默认MIC音量和系统音量值设置 -------WTS 20201103  PAGEREF _Toc1039351864 \h 117
 HYPERLINK \l _Toc485242901 85.AC696 系列 SDK1.1.1 DACR做linein输入时没声音的处理方法 -------LJW 20201103  PAGEREF _Toc485242901 \h 119
 HYPERLINK \l _Toc1132044633 86.AC696 系列 SDK1.1.1 打开PC模式时某些U盘无法读取的处理方法 -------LJW 20201103  PAGEREF _Toc1132044633 \h 119
 HYPERLINK \l _Toc1427206891 87.AC696 系列 SDK1.1.1 播放MP3提示音回复位的处理方法 -------LJW 20201105  PAGEREF _Toc1427206891 \h 120
 HYPERLINK \l _Toc1142571051 88.AC696 系列 SDK1.1.1 单声道开启人声消除无效果的处理方法 FSW 20201105  PAGEREF _Toc1142571051 \h 120
 HYPERLINK \l _Toc1664895501 89.AC696 系列 SDK1.1.1 播放wav音频时SD卡复用AUX失败补丁 WTS 20201106  PAGEREF _Toc1664895501 \h 122
 HYPERLINK \l _Toc1853359457 90.AC696 系列 脉冲型驱动功放使用(us级别) LHY 20201110  PAGEREF _Toc1853359457 \h 123
 HYPERLINK \l _Toc2066168377 91.AC696 系列 优化插麦克风底噪问题 LHY 20201110  PAGEREF _Toc2066168377 \h 123
 HYPERLINK \l _Toc1040258447 92.AC696 系列 高关功放在软关机下的处理 LHY 20201110  PAGEREF _Toc1040258447 \h 124
 HYPERLINK \l _Toc910822466 93.AC696 系列音箱V1.1.1 获取音频数据的方法 FSW 20201110  PAGEREF _Toc910822466 \h 125
 HYPERLINK \l _Toc585816356 94.AC696 系列音箱V1.1.1 添加自定义的数字音量控制的方法 FSW 20201110  PAGEREF _Toc585816356 \h 126
 HYPERLINK \l _Toc551801983 95.AC696 系列SDK1.1.1 上下曲切歌有啵声问题需要更换的库 WTS 20201111  PAGEREF _Toc551801983 \h 128
 HYPERLINK \l _Toc757341227 96.AC696 系列SDK1.1.1 无法读取MMC卡的问题处理方法 LJW 20201116  PAGEREF _Toc757341227 \h 128
 HYPERLINK \l _Toc737637128 97.AC696 系列SDK1.1.1 断开对箱后自动回链问题解决方法 LHY 20201117  PAGEREF _Toc737637128 \h 128
 HYPERLINK \l _Toc1717436030 98.AC696 系列SDK1.1.1 连接手机状态下无法连接或者断开对箱解决方法 LHY 20201117  PAGEREF _Toc1717436030 \h 129
 HYPERLINK \l _Toc985124540 99.AC696/AC695修改蓝牙配对码PINCODE 20201118 YWP  PAGEREF _Toc985124540 \h 130
 HYPERLINK \l _Toc298452400 100.AC696X音箱SDK自动调节VDDIO电压 20201119 YP  PAGEREF _Toc298452400 \h 131
 HYPERLINK \l _Toc192297112 101.AC696X音箱SDK 内置充电有时会处于很小(20mA)左右的处理方法 20201119 YP  PAGEREF _Toc192297112 \h 131
 HYPERLINK \l _Toc2096998720 102.AC696X音箱SDK 1.1.1 硬件微妙延时 SQ 20201123  PAGEREF _Toc2096998720 \h 132
 HYPERLINK \l _Toc1701867380 103.耳机工程升级到SDK020,发现同样的参数,回音比以前的版本明显,调回音压制参数效果不明显的处理方法 XNW 2020112  PAGEREF _Toc1701867380 \h 134
 HYPERLINK \l _Toc814120790 104.696x 音箱SDK添加定时器扫描函数后有几率搜不到蓝牙问题 20201124 YP  PAGEREF _Toc814120790 \h 135
 HYPERLINK \l _Toc728403147 105.696x 音箱SDK蓝牙模式下打开LINEIN进行叠加 20201127 LHY  PAGEREF _Toc728403147 \h 136
 HYPERLINK \l _Toc720783796 106.696x 音箱SDK搜不到蓝牙问题(补充) 20201127 LZK  PAGEREF _Toc720783796 \h 136
 HYPERLINK \l _Toc1656372362 107.AC696X 大音量播放歌曲声音会抖 20201201 HJY  PAGEREF _Toc1656372362 \h 137
 HYPERLINK \l _Toc1606690300 108.AC696系列SDK1.1.1 开启内置充电后红外遥控不起作用的处理方法 LJW 20201203  PAGEREF _Toc1606690300 \h 138
 HYPERLINK \l _Toc1906098262 109AC696系列SDK1.1.1 录音的同时DAC输出录音数据的处理方法 LJW 20201203  PAGEREF _Toc1906098262 \h 138
 HYPERLINK \l _Toc986200136 110.AC696系列SDK1.1.1 在music模式下开混响,喊麦会卡音的处理方法 LJW 20201203  PAGEREF _Toc986200136 \h 140
 HYPERLINK \l _Toc1031865487 111.AC696系列SDK1.1.1 外部EQ文件替换EQ模式中的任何一种模式 HJY 20201203  PAGEREF _Toc1031865487 \h 140
 HYPERLINK \l _Toc1711068259 112.AC696系列SDK1.1.1 外部添加双EQ文件的方法 HJY 20210419  PAGEREF _Toc1711068259 \h 141
 HYPERLINK \l _Toc1518819593 113.AC696系列SDK1.1.1 如果出现莫名其妙的自动关机(非复位死机),可以试下按下图修改 20201204 FSW  PAGEREF _Toc1518819593 \h 144
 HYPERLINK \l _Toc19580201 114.AC696X 111 SDK版本使用U盘或者SD卡不能进行跳转升级的问题 20201204 YP  PAGEREF _Toc19580201 \h 144
 HYPERLINK \l _Toc602936476 115.AC69系列sdk V111版本无缝循环播放的处理 20201207 YWP  PAGEREF _Toc602936476 \h 146
 HYPERLINK \l _Toc2004062494 116.AC69系列sdk V111插两驱动类型的(第一驱动类型为光盘模式)U盘死机 20201207 SQ  PAGEREF _Toc2004062494 \h 147
 HYPERLINK \l _Toc1151624834 117.AC696系列sdk 1.1.1 麦克风(混响)无法调数字音量解决方法 20201211 LHY  PAGEREF _Toc1151624834 \h 151
 HYPERLINK \l _Toc2030143367 118.AC696系列sdk 1.1.1 主机连上手机后,副机发起配对无法连接主机处理方法 20201211 WTS  PAGEREF _Toc2030143367 \h 151
 HYPERLINK \l _Toc999149897 119. AC696系列 TWS音箱同时按左右两边配对:一边连手机的情况下,配对慢 20201211 LZK  PAGEREF _Toc999149897 \h 152
 HYPERLINK \l _Toc669036687 120.AC696N SDK1.1.1 录音模式播放录音文件时插入U盘播歌,再回录音模式播放录音文件时无法播放问题 20201211 LAQ  PAGEREF _Toc669036687 \h 153
 HYPERLINK \l _Toc1736019176 121.AC696N SDK1.1.1 退出FM之后功耗大 20201214 SQ  PAGEREF _Toc1736019176 \h 154
 HYPERLINK \l _Toc917834627 121. AC696N SDK1.1.1 利用定时器保存音乐断点 20201214 LJW  PAGEREF _Toc917834627 \h 155
 HYPERLINK \l _Toc1709295134 122. AC696N SDK1.1.1 音乐模式下获取播放设备的音乐文件数目 20201214 LJW  PAGEREF _Toc1709295134 \h 155
 HYPERLINK \l _Toc499357995 123. 配置多个唤醒脚时开机唤醒时判断哪个IO唤醒 20201214 xin  PAGEREF _Toc499357995 \h 156
 HYPERLINK \l _Toc1503650983 124. SDK1.1.1 开TWS同时开混响有一边音乐断续问题 20201218 WTS  PAGEREF _Toc1503650983 \h 156
 HYPERLINK \l _Toc113613470 125. 软开机有时候需要按几次才能正常开机解决方法 20201218 LHY  PAGEREF _Toc113613470 \h 157
 HYPERLINK \l _Toc1256699222 126. 低电检测报低电提示音后,电压拉高还会继续报提示音解决办法 20201221 LHY  PAGEREF _Toc1256699222 \h 158
 HYPERLINK \l _Toc93804463 127. 开机判断是哪个唤醒口唤醒 20201222 xin  PAGEREF _Toc93804463 \h 159
 HYPERLINK \l _Toc1831049500 128. SDK1.1.1实时修改自定义EQ效果的指定频点增益 20201224 SQ  PAGEREF _Toc1831049500 \h 159
 HYPERLINK \l _Toc94340115 129. SDK1.1.1对箱功能需要与692x一样 20201224 SQ  PAGEREF _Toc94340115 \h 160
 HYPERLINK \l _Toc392256864 130. SDK1.1.1打开混响TCFG_MIC_EFFECT_ENABLE这个宏后,使用测试盒进行通话测试会有啸叫的处理方法 20201226 LJW  PAGEREF _Toc392256864 \h 162
 HYPERLINK \l _Toc2023346612 131. SDK1.1.1打开linein录音,播放的声音不正常的处理方法 20210104 LJW  PAGEREF _Toc2023346612 \h 164
 HYPERLINK \l _Toc43855187 132. SDK1.1.1麦克风能量获取方法 20210105 LHY  PAGEREF _Toc43855187 \h 164
 HYPERLINK \l _Toc2094124244 133. SDK1.1.1 的SD选择C组、CMD检测,录音设备为SD卡时,录音时SD卡会掉线的处理方法 20210108 LJW  PAGEREF _Toc2094124244 \h 165
 HYPERLINK \l _Toc689983755 134. SDK 1.2.0 linein为DAC进使用打断方式播放提示音,一直有linein背景音 20210112 SQ  PAGEREF _Toc689983755 \h 165
 HYPERLINK \l _Toc772258335 135.AC696X V111版本的SDK对箱配对后来电接听近端无声音的问题 20210121 YP  PAGEREF _Toc772258335 \h 168
 HYPERLINK \l _Toc667424393 136.AC696X V111版本的SDK 连接手机后,无法控制手机拍照的处理方法 20210126 LJW  PAGEREF _Toc667424393 \h 169
 HYPERLINK \l _Toc198872469 136. AC696X SDK121 暂停播放提示音20210309 XNW  PAGEREF _Toc198872469 \h 170
 HYPERLINK \l _Toc231464987 137. AC696X V121版本的SDK 遥控功能和收音功能同时开异常处理方法 20210311 lzk  PAGEREF _Toc231464987 \h 171
 HYPERLINK \l _Toc426039007 138. AC696X V020版本的SDK 普通包关TWS,设置立体声输出,通话结束后会复位的处理方法 20210317 LJW  PAGEREF _Toc426039007 \h 171
 HYPERLINK \l _Toc1185072605 139. AC696X V020版本的SDK 设置立体声输出,播左右声道歌曲后DAC没有声音或声音变小的处理方法 20210317 LJW  PAGEREF _Toc1185072605 \h 172
 HYPERLINK \l _Toc1263330474 141.AC6965 系列设置 DAC 管脚高阻态 20210326 YWP  PAGEREF _Toc1263330474 \h 172
 HYPERLINK \l _Toc2137107266 142.AC696N系列的左右调反实现 20210402 YWP  PAGEREF _Toc2137107266 \h 173
 HYPERLINK \l _Toc556408550 143.AC696Nmusic模式下文件解码成功后保存断点时没有清除“时间”信息 20210412 SQ  PAGEREF _Toc556408550 \h 180
 HYPERLINK \l _Toc1282910675 144. ac696n_soundbox_sdk_v1.2.0只能获取到DAC_L能量的问题 20210413 YP  PAGEREF _Toc1282910675 \h 181
 HYPERLINK \l _Toc592560094 145. 696n_sdk_v122 控制PA1脚(MIC脚)电平状态,AUX输入没有声音 20210419 WGH  PAGEREF _Toc592560094 \h 182
 HYPERLINK \l _Toc412987396 146. 使用MIC脚做普通IO的注意事项 WGH  PAGEREF _Toc412987396 \h 183
 HYPERLINK \l _Toc287051862 147. AC696X V122版本的SDK音频文件属性不勾选“可以存档文件”的不能播放的问题  PAGEREF _Toc287051862 \h 184
 HYPERLINK \l _Toc475219813 20210430 LJW  PAGEREF _Toc475219813 \h 184
 HYPERLINK \l _Toc1412137294 148. AC696X V122版本的SDK打开设备提示音,插SD卡再插U盘有啧啧声的问题  PAGEREF _Toc1412137294 \h 185
 HYPERLINK \l _Toc956088549 20210430 LJW  PAGEREF _Toc956088549 \h 185
 HYPERLINK \l _Toc63755342 149. AC696X V122版本的SDK插U盘播歌速度变快的问题处理 20210430 LJW  PAGEREF _Toc63755342 \h 185
 HYPERLINK \l _Toc182488273 150. AC696X 音箱工程V123版本安卓手机不能拍照或者手机回连后不能拍照 20210430 XNW  PAGEREF _Toc182488273 \h 186
 HYPERLINK \l _Toc517900036 151. AC696X 音箱工程V0.2.6、1.1.1有概率出现软关机功耗大 20210506 LHY  PAGEREF _Toc517900036 \h 186
 HYPERLINK \l _Toc563113337 152. AC696X 音箱工程V1.2.3部分手机不能拍照--红米K30 20210513 XNW  PAGEREF _Toc563113337 \h 186
 HYPERLINK \l _Toc1686139256 153. AC696X 音箱工程V1.2.3U盘和TF卡复用,一直切设备,某些U盘会掉线的处理方法 20210513 LJW  PAGEREF _Toc1686139256 \h 187
 HYPERLINK \l _Toc631513506 154. 在主控的flash中存放N个文件,读取这些文件需要的时间有很大的差异 20210514 SQ  PAGEREF _Toc631513506 \h 187
 HYPERLINK \l _Toc1819812559 155. AC696x 1.2.2sdk串口通信接收数据时产生一次中断之后,接下来接收数据异常 20210514 SQ  PAGEREF _Toc1819812559 \h 188
 HYPERLINK \l _Toc1779943720 156. ac696n_soundbox_sdk_v1.3.0 开启串口test功能会复位问题 20210611 YP  PAGEREF _Toc1779943720 \h 190
 HYPERLINK \l _Toc315079358 157. ac696n_soundbox_sdk_v1.2.3对箱配对后无法连接其他对箱解决方法 20210623 LCP  PAGEREF _Toc315079358 \h 193
 HYPERLINK \l _Toc1914152674 157.ac696n_soundbox_sdk_v1.3.0 linein走ADC,并复用fm引脚,使用省电容接法时,进linein出来后,麦声音变得很小解决方法 20210623 LCP  PAGEREF _Toc1914152674 \h 194
 HYPERLINK \l _Toc24716936 158. ac696n_soundbox_sdk_v1.1.1 TWS非公共mac地址,去除配对限制 20210726 SQ  PAGEREF _Toc24716936 \h 194
 HYPERLINK \l _Toc190942323 159. 公版V1.3.0sdk2M板级配置关掉eq之后打入电话长时间响铃死机 20210702 SQ  PAGEREF _Toc190942323 \h 196
 HYPERLINK \l _Toc1958007862 160. 1.2.2SDK定时器使用注意点 20210702 SQ  PAGEREF _Toc1958007862 \h 197
 HYPERLINK \l _Toc2118841180 162. 1.2.2SDK 读U盘txt文件案例 20210702 SQ  PAGEREF _Toc2118841180 \h 197
 HYPERLINK \l _Toc880926078 163. 1.2.3 SDK 打开TWS跳转升级无法维持IO电平 20210702 lzk  PAGEREF _Toc880926078 \h 198
 HYPERLINK \l _Toc582782549 164. 1.3.0 MCU uart串口升级注意事项 20210705 HJY  PAGEREF _Toc582782549 \h 199
 HYPERLINK \l _Toc638781925 165. AC696音箱 TWS配对慢优化方法 20210705 LZK  PAGEREF _Toc638781925 \h 200
 HYPERLINK \l _Toc1079798547 166. ac696n_soundbox_sdk_v1.2.1-v1.3.0 蓝牙开混合录音WAV格式 ,录音音频出现卡音问题 20210707 WGH  PAGEREF _Toc1079798547 \h 201
 HYPERLINK \l _Toc814247536 167. ac696n_soundbox_sdk_v1.2.2-v1.3.0 对箱TWS通话有回音,噗噗声,卡顿问题 20210805 WGH  PAGEREF _Toc814247536 \h 205
 HYPERLINK \l _Toc1064820932 168. ac696n_soundbox_sdk_v1.2.2-v1.2.3 系统音量选择独立通道数字音量,播放提示音低概率复位问题 20210805 WGH  PAGEREF _Toc1064820932 \h 205
 HYPERLINK \l _Toc117387504 169. ac696n系列耳机工程,如果用外置触摸,触摸通过主控的IO口供电,测试盒串口升级,升级到70%,又重新升级问题修改方法 20210810 XNW  PAGEREF _Toc117387504 \h 206
 HYPERLINK \l _Toc2077578010 170. AC696X AUX输入信号没有大于1.2V,但DAC输出问题处理 20210811 WTS  PAGEREF _Toc2077578010 \h 207
 HYPERLINK \l _Toc1054444551 171. AC6969D芯片使用内置flash录音修改文件 20210823 LCP  PAGEREF _Toc1054444551 \h 207
 HYPERLINK \l _Toc673796055 172. AC696X SDK130 对箱配对上后想保持音箱都输出立体声修改方法 20210824 WTS  PAGEREF _Toc673796055 \h 208
 HYPERLINK \l _Toc1213005038 173. 音箱工程V1.3.1版本SDK在连接上TWS后播歌时不断拨打挂断几次后有概率出现从箱无声音A2DP链路切换不成功的问题 20210830 MJW  PAGEREF _Toc1213005038 \h 210
 HYPERLINK \l _Toc1647004645 174. 注意!!注意!!量产程序需要关掉异常中断!!注意!!注意 20210907 LHY  PAGEREF _Toc1647004645 \h 210
 HYPERLINK \l _Toc1086783451 175. AC696音箱蓝牙发射器和接收器之间进行对讲的demo 20211028 FSW  PAGEREF _Toc1086783451 \h 211
 HYPERLINK \l _Toc1500056900 176. AC696 0.2.0耳机SDK版本 使用联合音量对箱后出现左右耳音量不同步解决方法 20211109 LHY  PAGEREF _Toc1500056900 \h 212
 HYPERLINK \l _Toc2122224459 177. AC696 耳机SDK版本 使用mic_rec_play_start()测试mic无声的解决方法 20211110 FSW  PAGEREF _Toc2122224459 \h 213
 HYPERLINK \l _Toc351437097 178. AC696 音箱1.5.0 SDK版本 Linein走数字通道Automute不起作用 20220211 SQ  PAGEREF _Toc351437097 \h 214
 HYPERLINK \l _Toc308661801 179. AC696 音箱1.5.0 或者之前的SDK版本包括695的音箱SDK出现 Linein检测有概率出现检测不了拔出 20220114 MJW  PAGEREF _Toc308661801 \h 218
 HYPERLINK \l _Toc38496153 180. AC696N_soundbox_sdk_release_1.4.0 SDK 配成单声道会出现声音破音,波形失真 LZK  PAGEREF _Toc38496153 \h 218
 HYPERLINK \l _Toc533925370 181. AC696耳机SDK020 开立体声时,通话前20S左右远端听不到声音处理方法 20201201 WTS  PAGEREF _Toc533925370 \h 218
 HYPERLINK \l _Toc826561837 182、 AC696_earphone_v030版本SDK添加连接确认功能 ---YP 20220506  PAGEREF _Toc826561837 \h 218
 HYPERLINK \l _Toc601609490 182. AC696 音箱SDK 使用ANCS功能  PAGEREF _Toc601609490 \h 220
 HYPERLINK \l _Toc72580979 183.695V310以及旧版本SDK 当歌曲内容恰好存放于设备地址的底部,播放歌曲会异常退出设备 20220614 WGH  PAGEREF _Toc72580979 \h 221
 HYPERLINK \l _Toc1458075343 184.AC696 1.3.3SDK 打开人声消除的宏定义,声音失真  PAGEREF _Toc1458075343 \h 223
 HYPERLINK \l _Toc273938401 185. ac696n_sdk_release_v0.3.0 SDK VIVO手机连接打开SIRI蓝牙断连问题  PAGEREF _Toc273938401 \h 224
 HYPERLINK \l _Toc1852524699 186. AC696X AUX 输入信号有效值没有超过600MV,但从DAC输出出现失真问题处理 -------20220705 WTS  PAGEREF _Toc1852524699 \h 224
 HYPERLINK \l _Toc1773154702 187. AC696X_170SDK 使用默认DEMO板级调式或烧录出的样机蓝牙MAC地址变成固定(没有随机生成)问题-------20220709 LZK  PAGEREF _Toc1773154702 \h 226
 HYPERLINK \l _Toc40607428 188. AC696X_170SDK或者打漏电补丁后,某些IO无法输出打印信息(DP,DM,PC4等) WGH  PAGEREF _Toc40607428 \h 228
 HYPERLINK \l _Toc1877241635 189. AC696n_earphone_v0.2.0 设置立体声通话有整句回音处理方法 20220714---- WTS  PAGEREF _Toc1877241635 \h 230
 HYPERLINK \l _Toc1964097025 190. AC696n_earphone_v1.7.0 替换eq_cfg_hw.bin的正确位置 20220815---- WGH  PAGEREF _Toc1964097025 \h 230
 HYPERLINK \l _Toc1998615290 191.AC696n_soundbox_sdk_v1.2.2做TF和U盘共用, 播放TF的提示音时插入U盘有概率不能识别U盘 20220907---- FS  PAGEREF _Toc1998615290 \h 231
 HYPERLINK \l _Toc1848599167 192.AC696N_soundbox_sdk_1.7.0 ADC电池电压采样波动大,通话过程中采样波动大的问题,通话过程中VDDIO档位变化,未跑正常流程问题 CYL  PAGEREF _Toc1848599167 \h 232
 HYPERLINK \l _Toc697539455 193.696系列030、031版本SDK叠加播放sin提示音会打断音乐问题处理办法 20220930 FSW  PAGEREF _Toc697539455 \h 233
 HYPERLINK \l _Toc433914191 194.696_1.7.0_sdk开混响+混合录音出现混响和录音文件变调问题(开混响无法正常录音同下) 20221026 LCP  PAGEREF _Toc433914191 \h 234
 HYPERLINK \l _Toc339897445 194.696_1.7.0_sdk ADKEY复用SPI或者其他复用后,概率会出现读AD值的时候出现65535的值 20221130 lzk  PAGEREF _Toc339897445 \h 235
 HYPERLINK \l _Toc1777338002 195 音乐模式读取歌曲名称异常:获取u盘歌曲名称的时候,有一首特定的歌曲读取文件名的时候少了MP3里面的3(也就是xxxx.mp3只读到xxxx.mp) 20230307 ZGH  PAGEREF _Toc1777338002 \h 235
 HYPERLINK \l _Toc1248161727 197 AC696_170_SDK在打完AC696N SDK FM不停台和漏电联合补丁修改V2补丁后TWS播歌概率出现卡顿丢包现象 20230519 LTY  PAGEREF _Toc1248161727 \h 237
 HYPERLINK \l _Toc1404718377 198 AC696 开关混响导致内存泄漏 2023年6月1日 LZK  PAGEREF _Toc1404718377 \h 237
 HYPERLINK \l _Toc1894725506 198 AC696 170 获取大小有问题 fget_free_space 128M的flash查询数据正常。64M以下的查询全部是0 LZK  PAGEREF _Toc1894725506 \h 240
 HYPERLINK \l _Toc1178256089 199 ac696n_soundbox_sdk_v1.7.0版本sdk不能SPP在线调EQ fs  PAGEREF _Toc1178256089 \h 241
 HYPERLINK \l _Toc311679280 200. ac696x_earphone耳机系列sdk串口在线调EQ连接不上 20230625 GFH  PAGEREF _Toc311679280 \h 243
 HYPERLINK \l _Toc421037913 200. ac696n_soundbox_sdk_v1.7.0版本sdkSPP在线调EQ 所有节点都会有以下异常弹窗,导致功能无法正常使用  PAGEREF _Toc421037913 \h 244
 HYPERLINK \l _Toc243777479 201. ac696n_soundbox_sdk_v1.7.0版本 如果修改固定采样率会出现 在线调试音效效果跟实际音效效果对不上。  PAGEREF _Toc243777479 \h 244
 HYPERLINK \l _Toc1958683926 202. ac696n_soundbox_sdk_v1.7.0版本做发射器开SPDIF功能后,接收器回连出现卡顿问题。  PAGEREF _Toc1958683926 \h 245
 HYPERLINK \l _Toc1507821365 203. ac696n_soundbox_sdk_v1.7.0 SMP文件无法播放 WGH  PAGEREF _Toc1507821365 \h 245
 HYPERLINK \l _Toc1743834379 204. ac696n_soundbox_sdk_v1.7.0 tws对箱公版tws配置只修改为对箱使用主机的mac地址,出现概率AB箱子分别连接CD手机,AB箱子分别发起搜索配对,能配对连接上并死机的问题。231026 CYL  PAGEREF _Toc1743834379 \h 246
 HYPERLINK \l _Toc1933424737 205. ac696n_soundbox_sdk_v1.1.1 多台样机(3台以上)连接苹果手机,回连时出现死机复位231123 LTY  PAGEREF _Toc1933424737 \h 247
 HYPERLINK \l _Toc1859258462 206. ac696n_soundbox_sdk_v1.7.0 华为手机连接后,在手机端关闭音量同步,手机切换为其他蓝牙设备再切换回696音箱后音量会被固定修改问题 fs  PAGEREF _Toc1859258462 \h 247
 HYPERLINK \l _Toc2052496181 207. ac696n_soundbox_sdk_v1.7.0 使能混响后tws出现音频不同步问题 fs  PAGEREF _Toc2052496181 \h 248
 HYPERLINK \l _Toc1971920890 208. ac696n_soundbox_sdk_v1.6.0 音量同步功能修改 fs  PAGEREF _Toc1971920890 \h 249
 HYPERLINK \l _Toc245700185 209. ac696n_soundbox_sdk_v1.7.0 串口驱动更改  PAGEREF _Toc245700185 \h 249
 HYPERLINK \l _Toc731574370 210. ac696n_soundbox_sdk_v1.7.0 安卓手机时间获取异常 fs  PAGEREF _Toc731574370 \h 250
 HYPERLINK \l _Toc426046732 211. ac696n_soundbox_sdk_v1.7.0 U盘SD卡复用,先插入SD卡再插入U盘播歌,切换模式后,重新插拔U盘,部分U盘无法挂载成功(sandisk容易复现) lty  PAGEREF _Toc426046732 \h 251
 HYPERLINK \l _Toc318281164 212. ac696x_earphone_v0.2.0 出仓无法回连iPhone16 LJW  PAGEREF _Toc318281164 \h 251
 HYPERLINK \l _Toc42166066 213. ac696n_soundbox_sdk_v1.7.0 开启SMART_BOX_EN 使能后,spp 通信接收数据回调在应用层看不到 MJW  PAGEREF _Toc42166066 \h 251
 HYPERLINK \l _Toc699985133 214. ac696n_soundbox_sdk_v1.7.0 小度使用按键进行语音唤醒,概率出现APP断连 HHM  PAGEREF _Toc699985133 \h 252
 HYPERLINK \l _Toc23322215 215. ac696n_soundbox_sdk_v1.7.0 开启TWS后通话有明显回音 HHM  PAGEREF _Toc23322215 \h 252


1.AC696X DCDC模式时需要设置 CLOCK_MODE_IGNORED ,LDO模式 时就设置 CLOCK_MODE_ADAPTIVE 20200407

image

2.AC696系列应用层关闭长按复位功能 20200504

// P33_CON_SET(P3_PINR_CON, 0, 1, 1); ///开启8S复位
P33_CON_SET(P3_PINR_CON, 0, 1, 0); ///关闭8S复位
image

3.AC696系列测试盒修改复位脚 20200504

/**
 * @param pin   引脚号,如 IO_PORTB_01,IO_PORTA_00,,,,等等
 * @param level 有效电平,0:低电平有效。  1:高电平有效
 * @param time  长按时间有00、01、02、04、08三个值可选,单位为秒,
 当长按时间为00时,则关闭长按复位功能。
 */
void reset_pin_init(u32 pin, u32 level, u32 time)
{​
    if (time) {​
        gpio_set_dieh(pin, 1);
        gpio_set_die(pin, 1);
        gpio_set_direction(pin, 1);
        if (level) {​
            gpio_set_pull_up(pin, 0);
            gpio_set_pull_down(pin, 1);
        ​} else {​
            gpio_set_pull_up(pin, 1);
            gpio_set_pull_down(pin, 0);
        ​}
        switch (time) {​
      case 1:      //1s
        time = 0;
        break;
      case 2:      //2s
        time = 1;
        break;
      case 4:      //4s
        time = 2;
        break;
      case 8:      //8s
        time = 3;
        break;
        ​}
        p33_tx_1byte(P3_PINR_CON, (level << 2) | (time << 4));
        if(pin == IO_PORT_DP || pin == IO_PORT_DM){​
            p33_tx_1byte(P3_PORT_SEL10,  pin - USB_IO_OFFSET);
        ​}else{​
            p33_tx_1byte(P3_PORT_SEL10,  pin);
        ​}
        p33_or_1byte(P3_PINR_CON, BIT(0));
    ​} else {​        //0s
        p33_tx_1byte(P3_PINR_CON, 0);
    ​}
​}

image

设置port_sel 对应的寄存器如下图所示:
image

4.AC696系列耳机SDK版本V0.1.3版本注意 20200520

如下方法解决AC696的播放歌曲偶尔咔音和通话咔音问题。也解决关闭TWS开单耳通话没声音问题。
在sdk_ld.c文件加入如下语句, *(.sbc_eng_code)
image

注意:同时看下本文档的第15点的相关点。
把系统时钟提升到96M。
image

注意:同时看下本文档的第15点的相关点。

5.AC696系列SDK0.1.3关充电拔出开机和和BLE功能后,进入低功耗模式程序会进入睡眠问题 20200516

如果用SDK013设置TCFG_CHARGE_OFF_POWERON_NE 为0 ,同时TCFG_USER_BLE_ENABLE也设置为0 时。出现样机一进入低功耗模式就会关机问题。解决方法如下:

在函数charge_init(const struct dev_node *node, void *arg) 中加入:

image

6.AC696系列SDK0.1.3 关掉TWS功能后蓝牙播歌没有声音问题修改 20200516

修改ac696n_earphone_v0.1.3\sdk\cpu\br25\sdk_ld.c文件如下:
image

7.AC696系列 软件或电阻检测分左右耳之后,用测试盒配对,能显示配对成功但实际没有配对上处理 20200602

修改如下:
image

8.AC696系列音箱版本sdk模拟的DAC初始化外置定义 20200610

static void __dac_analog_init(struct audio_dac_hdl *dac, u8 LR_on)
{​
if (dac->analog.inited) {​
return;
​}
SFR(JL_ANA->DAA_CON2, 4, 1, 0); // LPF_MUTE_11v
delay(1000);
SFR(JL_ANA->DAA_CON2, 14, 1, 1); // TRIM_EN_11v
delay(1000);
SFR(JL_ANA->DAA_CON2, 22, 1, 1); // PNS10K_EN_11v

SFR(JL_ANA->DAA_CON0, 29,  1,  0);          // ZCEN  
SFR(JL_ANA->DAA_CON0, 28,  1,  0);          // FIR_FILTER_ENB_11v  
SFR(JL_ANA->DAA_CON0, 23,  1,  1);          // DACVCM_RSEL_11v  
SFR(JL_ANA->DAA_CON0, 21,  1,  0);          // ADCVCM_2_DAC_EN_11v  
SFR(JL_ANA->DAA_CON0, 10,  3,  0);          // RESERVED_BIT_11v[2:0]  
SFR(JL_ANA->DAA_CON0,  9,  1,  0);          // ZERO_RC_EN_11v  
SFR(JL_ANA->DAA_CON0,  8,  1,  0);          // ZERO_LC_EN_11v  
SFR(JL_ANA->DAA_CON0,  7,  1,  0);          // LPF_2_ZERO_EN_11v  
SFR(JL_ANA->DAA_CON0,  4,  1,  0);          // DACVDD_TEST_EN_11v  
SFR(JL_ANA->DAA_CON0,  3,  1,  0);          // CTADCREF_TEST_11v  
SFR(JL_ANA->DAA_CON0,  2,  1,  0);          // MICLDO_TEST_11v  
SFR(JL_ANA->DAA_CON0,  1,  1,  0);          // VOUTR_TEST_EN_11v  
SFR(JL_ANA->DAA_CON0,  0,  1,  0);          // VOUTL_TEST_EN_11v  

// --- DAA_CON1 ---  
// -------------------------------------------  
SFR(JL_ANA->DAA_CON1, 31,  1,  0);          // LPFVCM_SEL_11v  
SFR(JL_ANA->DAA_CON1, 30,  1,  0);          // AMUX_MUTE_11v  
SFR(JL_ANA->DAA_CON1, 29,  1,  0);          // AMUX_G_11v  
SFR(JL_ANA->DAA_CON1, 28,  1,  0);          // AMUX_EN_11v  
SFR(JL_ANA->DAA_CON1, 27,  1,  0);          // AMUX_BIAS_EN_11v  
SFR(JL_ANA->DAA_CON1, 26,  1,  0);          // LIN1R_EN_11v  
SFR(JL_ANA->DAA_CON1, 25,  1,  0);          // LIN1R_BIAS_EN_11v  
SFR(JL_ANA->DAA_CON1, 24,  1,  0);          // LIN1L_EN_11v  
SFR(JL_ANA->DAA_CON1, 23,  1,  0);          // LIN1L_BIAS_EN_11v  
SFR(JL_ANA->DAA_CON1, 22,  1,  0);          // LIN0R_EN_11v  
SFR(JL_ANA->DAA_CON1, 21,  1,  0);          // LIN0R_BIAS_EN_11v  
SFR(JL_ANA->DAA_CON1, 20,  1,  0);          // LIN0L_EN_11v  
SFR(JL_ANA->DAA_CON1, 19,  1,  0);          // LIN0L_BIAS_EN_11v  
SFR(JL_ANA->DAA_CON1, 18,  1,  0);          // LR_2_R_11v  
SFR(JL_ANA->DAA_CON1, 17,  1,  0);          // LR_2_L_11v  
SFR(JL_ANA->DAA_CON1,  5,  5,  0);          // RG_SEL_11v[4:0]  
SFR(JL_ANA->DAA_CON1,  0,  5,  0);          // LG_SEL_11v[4:0]  
// --- DAA_CON2 ---  
// -------------------------------------------  
SFR(JL_ANA->DAA_CON2, 24,  1,  0);          // PNS_EN_11v  
SFR(JL_ANA->DAA_CON2, 23,  1,  0);          // PNS50K_EN_11v  
SFR(JL_ANA->DAA_CON2, 22,  1,  0);          // PNS10K_EN_11v  
SFR(JL_ANA->DAA_CON2, 21,  1,  0);          // BIAS_2_OUT_EN_11v  
SFR(JL_ANA->DAA_CON2, 20,  1,  0);          // VCM_RISETIME_EN_11v  
SFR(JL_ANA->DAA_CON2, 18,  1,  0);          // TRIM_SW_11v  
SFR(JL_ANA->DAA_CON2, 16,  2,  0);          // TRIM_SEL_11v[1:0]  
SFR(JL_ANA->DAA_CON2, 15,  1,  0);          // TRIM_LPF_EN_11v  
SFR(JL_ANA->DAA_CON2,  5,  2,  0);          // LS_DTSEL_11v[1:0]  
SFR(JL_ANA->DAA_CON2,  4,  1,  0);          // LPF_MUTE_11v  
// --- DAA_CON4 ---  
// -------------------------------------------  
SFR(JL_ANA->DAA_CON4,  3,  1,  0);          // LIO_DATA_IN_11v  
SFR(JL_ANA->DAA_CON4,  2,  1,  0);          // LIO_MODE_EN_11v  
SFR(JL_ANA->DAA_CON4,  1,  1,  0);          // RIO_DATA_IN_11v  
SFR(JL_ANA->DAA_CON4,  0,  1,  0);          // RIO_MODE_EN_11v  

delay(200);  
SFR(JL_ANA->DAA_CON2, 19,  1,  1);          // VCM_EN_11v  

SFR(JL_ANA->DAA_CON2,  0,  4, dac->pd->lpf_isel & 0xf);  // LPF_ISEL_11v[3:0]  

delay(1000);  
switch (dac->pd->output) {​  
case DAC_OUTPUT_MONO_L:  
    SFR(JL_ANA->DAA_CON1, 13,  1,  1);          // L_RDAC_EN_11v  
    SFR(JL_ANA->DAA_CON1, 10,  1,  1);          // HP_L_EN_11v  
    break;  
case DAC_OUTPUT_MONO_R:  
    SFR(JL_ANA->DAA_CON1, 14,  1,  1);          // R_RDAC_EN_11v  
    SFR(JL_ANA->DAA_CON1, 11,  1,  1);          // HP_R_EN_11v  
    break;  
case DAC_OUTPUT_LR:  

// case DAC_OUTPUT_SPECAIL_LR:
case DAC_OUTPUT_MONO_LR_DIFF:
SFR(JL_ANA->DAA_CON1, 14, 1, 1); // R_RDAC_EN_11v
SFR(JL_ANA->DAA_CON1, 13, 1, 1); // L_RDAC_EN_11v
SFR(JL_ANA->DAA_CON1, 11, 1, 1); // HP_R_EN_11v
SFR(JL_ANA->DAA_CON1, 10, 1, 1); // HP_L_EN_11v
break;
default:
break;
​}

SFR(JL_ANA->DAA_CON1, 15,  2,  dac->pd->ldo_fb_isel);          // LDO_FB_ISEL_11v[1:0]  
SFR(JL_ANA->DAA_CON2,  7,  4,  3);          // SDDAC_DTSEL_11v[3:0]  
SFR(JL_ANA->DAA_CON2, 11,  3,  dac->pd->ldo_isel);          // LDO_ISEL_11v[2:0]  
SFR(JL_ANA->DAA_CON0, 25,  3, (dac->pd->ldo_volt & 0x7));      // DACVDD_LDO_VSEL_11v[2:0]  
SFR(JL_ANA->DAA_CON0, 22,  1,  1);          // DACVCM_EN_11v  
os_time_dly(100);  
SFR(JL_ANA->DAA_CON0,  5,  1,  1);          // AUDIO_IBIAS_EN_11v  
SFR(JL_ANA->DAA_CON0, 13,  1,  1);          // CHOPPER_CLK_EN_11v  
SFR(JL_ANA->DAA_CON0, 24,  1,  1);          // DACVDD_LDO_EN_11v <----------------------这里是DAC上电  
os_time_dly(3);  

SFR(JL_ANA->DAA_CON0, 6, 1, 1); // AUDIO_VBIAS_EN_11v

delay(1000);  
SFR(JL_ANA->DAA_CON2, 22,  1,  0);          // PNS10K_EN_11v  
SFR(JL_ANA->DAA_CON2, 14,  1,  0);          // TRIM_EN_11v  

dac->analog.inited = 1;  

​}
image

9.AC696版本支持MTY格式提示音 20200618

image

image

image

(.media..text)代码段定义
image

image

10.AC696系列蓝牙耳机和音箱关于PD4 IO使用注意 20200619

image

PD4是内部flash的一个供电脚,不能被操作到,操作到会影响flash的通讯。引起的问题:

  1. 写
  2. 出现错误;2、flash升级有问题; image

11.AC696N 2M程序烧写到4M容量芯片注意事项 20200619

若2M版本需要兼容烧录到2M和4M 的flash芯片中,需要修改isd_config.ini文件:isd_config.ini需要配置BTIF 不小于4Kbyte 与 VM大小不小于8K(如下图所示)。重新生成的烧写文件即可。
image

      INCLUDEPICTURE \d "C:\Users\Administrator\AppData\Roaming\Foxmail7\Temp-2812-20200618092104\Attach\Catch(06-18-13-54-06).jpg" * MERGEFORMATINET 
image 

问:那么有疑问,改为支持4Mbit芯片后的代码,可以直接烧录进原来2Mbit的芯片?

答:要看整体空间够不够,因为了兼容2Mbit和4Mbit的芯片,VM必须要8KByte.
2M的代码编译出来烧录文件对于2M的芯片基本所剩无几,所以请分类好烧录文件2M和4M,烧录2M的芯片就用2M的烧录文件。烧录4M芯片就用改isd_config.ini的烧录文件烧录。

12.动态开关长按复位 20200619

动态开关长按复位功能
///关闭长按复位
p33_and_1byte(P3_PINR_CON, 0);
///开启长按复位
p33_and_1byte(P3_PINR_CON, 1);

13.使用AC6969D调式样机出现通话远端没有声音问题处理方法 20200619

image

14.AC696X 跑LDO15若出现部分机子通话时样机复位处理方法 20200619

备注:处理思路是提高内核电压,提高抗干扰能力
image

image

15.AC696系列2M的SDK开蓝牙一拖二出现奇怪的问题 20200624

696的2M程序版本开一拖二,有如下几个奇怪问题需要注意,
第一,通话杂音;
第二,播放提示音杂音;
如果有这些问题,请关闭一拖二功能,2M的SDK蓝牙一拖二是不支持的。
同时2M的SDK也不支持测试盒的频偏测试和测试盒的OTA空中升级。

16.AC696系列开启Gsenor编译不过 20200701

image

编译后如下出错。
image

解决方法:
image

17.AC696测试盒配对的TWS清配对注意点 20200701

手动清除TWS配对信息后,无法配对。
可能要注意测试盒配对优先的宏配置引起的问题。
image

18.AC696系列耳机版本V014-P1优化 20200721

如果不改,进入软关机或者进入低功耗时候,vddio电压会设置到最低档2.1V用SDK默认的电压值2.8V即可。
image

#include"board_config.h"
vddiow_level = TCFG_LOWPOWER_VDDIOW_LEVEL;
image

19.AC696系列音箱版本V024和耳机SDK031获取连接手机的蓝牙名和地址 20220707----WTS 更新

	u8 btaddr[6];	  
	put_buf(bt->args, 6);  
	memcpy(btaddr, bt->args, 6);  
	user_send_cmd_prepare(USER_CTRL_READ_REMOTE_NAME, 6, btaddr);  

image

image

替换AC696系列V024版本的btctrler.a库,记得rebuild.
链接: https://pan.baidu.com/s/1giA-f-HbZ9ubVBCmsw72bg
提取码: i2in

耳机SDK031需要替换的btctrler.a库,记得rebuild:

【金山文档】 耳机SDK031获取蓝牙名获取功能
https://kdocs.cn/l/cuExtklcvw5r

20.关于弱VDDIO档位为2.4V给触摸IC的供电引起开关机漏电问题,重要!! 20200721

本文档第18点要修改,同时本点第20点也要改。
引起问题:如果弱VDDIO工作电压档位在2.4V,从强档位到弱档位,VDDIO会容易被拉扯或者瞬态拉扯到2.0V,例如对于触摸IC工作在2.4V以上范围的,导致触摸IC工作错乱,误判,从而引起我们主控会被误操作,例如唤醒,然后进入重复开关机的情况,表现出来就是漏电严重。

解决方法:AC696系列发出的所有SDK如下宏
#define TCFG_LOWPOWER_VDDIOM_LEVEL VDDIOM_VOL_28V
#define TCFG_LOWPOWER_VDDIOW_LEVEL VDDIOW_VOL_24V
全部改为
#define TCFG_LOWPOWER_VDDIOM_LEVEL VDDIOM_VOL_30V
#define TCFG_LOWPOWER_VDDIOW_LEVEL VDDIOW_VOL_28V
如类似下图
image

重点:变量vddiow_level初始化为 static u8 vddiow_level = TCFG_LOWPOWER_VDDIOW_LEVEL; 本文档第18点。主要解决焊接电池第一次上电VDDIO弱档位电压位2.0V的问题。

原因:我们主控AC696有强VDDIO 电压档和弱VDDIO 电压档位之分,弱VDDIO 电压档位的驱动电流带载能力比较弱,容易被拉扯,例如用VDDIO或者IO口给触摸IC供电,如果弱VDDIO工作电压档位在2.4V,从强档位到弱档位,VDDIO会被拉扯,导致触摸IC工作错乱,误判,从而引起我们主控会被唤醒,然后进入重复开关机的情况,表现出来就是漏电严重。

其他疑惑:所生产的机器是按键开机的,弱电压是2.4V有没有问题。
答:没问题!继续生产!!
如果没有用VDDIO或者IO口作为外部器件(例如触摸或者Gsensor等)的供电,也就是说跟VDDIO不关联的是没问题的。但建议还是及时修改,防止后续用此程序用在其他项目带触摸等的漏改了引起问题!!

21.AC696X SDK0.2.3-p1 录音录到外部flash后,播放不了问题 20200711

image

22.AC696X SDK014-p1 对耳连苹果手机开SIRI有时蓝牙会断连问题处理 20200711

处理该问题,需要更新两个库:btctrler.a 、btctrler_2M_flash.a (换库后需要rebuild)
备注:如果测试到通话时,有时蓝牙会断开的问题,也可以使用这两个库替换测试,可能也是同一个问题。

库存于百度网盘中:“AC696X SDK014-p1 对耳连苹果手机开SIRI有时蓝牙会断连,需要更新的库.zip”,提取信息如下:

链接:https://pan.baidu.com/s/1U5ZyiOtxGEefZBof5pg-Kg
提取码:mq75

23.AC696X 外挂FM时,FM的IIC口和卡口的CMD脚及DATA脚复用问题 20200713

外挂FM时,如果FM的IIC通信脚需要跟卡口复用,那么卡的检测要选择用CLK检测方式。

因为如果选CMD检测,会导致两个问题:1、CMD、CLK脚一直有信号(发送检测数据),这样会对FM产生一些干扰信号。 2、CMD、CLK脚一直要通信发数据,分时复用就会很麻烦,不好处理。

选用CLK检测的好处:1、进入FM时,卡口没有信通,没有信号干扰。程序仅检测CLK脚高低电平变化。
2. 卡的CMD脚和DATA脚 没有通信,因此只要释放卡口控制。就不会影响IIC通信。而且IIC通信时,不需要把卡检测停掉。

软件修改(IIC通信时把卡口控制挂起(相当于设置卡口高阻态),通信完后恢复):

image

24.AC696X耳机和音箱SDK的pwm功能 20200714

对于使用AC696X需要PWM功能的,可以见如下参考例子,详情请见网盘链接:
链接:https://pan.baidu.com/s/166ibbi08er-tHo5LVHr11Q
提取码:s2qq
特别需要注意的是,需要先看里面的readme.txt文档说明,另外一个是音箱可以支持三路PWM,耳机的SDK有且仅有一路PWM。
image

25.AC696X在蓝牙播放歌曲的时候播发msbc提示音注意点 20200714

696x系列在蓝牙播歌的时候播发msbc提示音的时候会播放不了或者出现死机问题,因为程序默认设置是叠加方式的,并且msbc和蓝牙sbc是同一个解码器,不能同时使用,要做互斥使用,所以在蓝牙播歌的时候播放msbc的提示音需要设置为打断方式即可。具体参考如下设置:将播放提示音的接口的第二个参数传递1表示打断方式,0表示叠加方式。
image

26. AC696X 混响和回声,有变量选择 20200716

image

27. AC696X EQ在线调式注意点 20200716 CCB

开了eq在线调试,eq_cfg_hw.bin默认不起作用,所以如果需要将eq_cfg_hw.bin加到程序中试听,就必须在软件中关闭eq在线调试。

  1. AC696X音箱版本供电低于3.5V DAC出现底噪 20200718 CCB

主控供电电压:一般要保证VBAT>VDDIO>DACVDD,且保证压差要0.2V或以上。音箱版本默认VDDIO是3.4V,当供电低于3.5V时候,明显观察到VDDIO有纹波,从而出现底噪。软件把VDDIO从3.4V降到3.2V,DACVDD维持3.0V不变。把VDDIO降低到3.2V后,如果VDDIO还给SD卡供电,那么需要串2.2R+105电容(原4.7R+106,HHM修改),保证SD供电正常。
注意:因为VDDIO要给TF卡供电,所有VDDIO不能降得太低,不能降到3.0V,这样TF卡的供电会有问题,有可能会复位重启或者不读卡。 

29.AC696系列用于音箱应用注意点 20200721 YWP

AC696只有一路LADC,同时FM不支持蓝牙后台。
对于一路LADC跟之前的AC692系列又有区别,LINEIN进来的立体录音在AC692录音出来是AMUXL/R的混合,但在AC696录音出来只有一路AMUXL或者AMUXR。
30. AC696X 软件编码器实现方法 20200724 LZK (PS:可直接复制)
#include "app_action.h"
/**
 * 使用方法
 * @param:(必填)
 * sin_port0 :编码器的 io
 * sin_port1 :编码器io;
 * msg :对应消息
 * @description:
 * 1,填写 user_rdeckey_list 结构体的值
 * 2,在系统初始化后,调用 void user_rdec_device_init(void)
 * 3,若有编码器按键触发,会通过 app_task_msg_post 函数将msg发送出去
 /
struct rdec_device_soft {​
    unsigned char sin_port0;    //采样信号端口0
    unsigned char sin_port1;    //采样信号端口1
    int msg;        //发送的消息
    //不用初始化以下变量
    unsigned char io[2];  //定义了两个变量用来储蓄上一次调用此方法是编码开关两引脚的电平
    unsigned char st[2];  //定义了一个变量用来储蓄以前是否出现了两个引脚都为高电平的状态
​};
//定义变量
unsigned char rdec_device_num = 0;  //使能的编码器数量
struct rdec_device_soft user_rdeckey_list[] = {​
    {​
        .sin_port0 = IO_PORTA_03,
        .sin_port1 = IO_PORTA_04,
        .msg = USER_MSG_TEST,
    ​},
​};
void rdec_device_scan(void)
{​
    unsigned char tp0,tp1;
    unsigned char index = 0;
    struct rdec_device_soft
 rdec;
    for(index = 0; index < rdec_device_num; index++) {​
        rdec = &user_rdeckey_list[index];
        tp0 = gpio_read(rdec->sin_port0);
        tp1 = gpio_read(rdec->sin_port1);
        if((tp0 && tp1) || ((!tp0) && (!tp1))) {​
            if(rdec->io[0]) {​
                printf("1\n");
                app_task_msg_post(rdec->msg,1,0);
            ​} else if(rdec->io[1]) {​
                printf("2\n");
                app_task_msg_post(rdec->msg,1,1);
            ​}
            rdec->st[0] = tp0;
            rdec->st[1] = tp1;
            rdec->io[0] = 0;
            rdec->io[1] = 0;
        ​} else if(rdec->io[0] || rdec->io[1]) {​
            return;
        ​} else if(tp0 != rdec->st[0]) {​
            rdec->io[0] = 1;
        ​} else if(tp1 != rdec->st[1]) {​
            rdec->io[1] = 1;
        ​}
    ​}
​}
void user_rdec_device_init(void)
{​
    unsigned char index = 0;
    rdec_device_num = sizeof(user_rdeckey_list)/sizeof(user_rdeckey_list[0]);
    unsigned char enable = 0;
    struct rdec_device_soft* rdec;
    for(index = 0; index < rdec_device_num; index++) {​
        rdec = &user_rdeckey_list[index];
        gpio_direction_input(rdec->sin_port0);
        gpio_set_pull_down(rdec->sin_port0, 0);
        gpio_set_pull_up(rdec->sin_port0, 1);
        gpio_set_die(rdec->sin_port0, 1);
        gpio_direction_input(rdec->sin_port1);
        gpio_set_pull_down(rdec->sin_port1, 0);
        gpio_set_pull_up(rdec->sin_port1, 1);
        gpio_set_die(rdec->sin_port1, 1);
        enable = 1;
    ​}
    if(enable) {​
        sys_hi_timer_add(NULL, rdec_device_scan, 2);
    ​}
    printf("rdec device init :%d\n",rdec_device_num);
​}

  1. linein复用CMD检测配置例子 20200724 LZK image

  2. GPIO相关函数参数传参不正常会导致USB功能不正常 20200724 LZK 以下GPIO操作的函数传参不能传 NO_CONFIG_PORT ,目前函数里面没有做限制传参超范围会设置到USB IO的寄存器。
    gpio_set_pull_up(IO_PORTC_03, 0);
    gpio_set_pull_down(IO_PORTC_03, 0);
    gpio_set_direction(IO_PORTC_03, 1);
    gpio_set_die(IO_PORTC_03, 0);
    gpio_set_dieh(IO_PORTC_03, 0);
    要注意board配置中的NO_CONFIG_PORT 在实际使用中,有没有被调用。

  3. Linein单声道模拟输入变双声道输出函数,(DAC声道跟linein声道不一致也适用) 20200724 LZK /*
     *linein单声道模拟输入的时候,如果dac是两个声道的,想要
     *两个声道都有声音出来,需要将amux通道合并一下,即:
     *call:audio_linein_ch_combine(1,1);
     */
    void audio_linein_ch_combine(u8 LR_2_L, u8 LR_2_R);

  4. SD_PG/PA0 脚无法正常控制 20200724 LZK 1,如果使能SD卡功能,检查SD的power 变量是否配置了电源控制函数,需要设置成NULL
    image

  5. AC696 添加设备(优先)独立模式功能 20200724 LZK 修改文件简单说明
    1,蓝牙字体为需要修改的文件
    --- a/SDK/apps/soundbox/include/app_config.h
    +++ b/SDK/apps/soundbox/include/app_config.h
    2,绿色字体为新增加内容

+//分开U盘跟TF模式
+#define MUSIC_USB_TF_INDEPENDENT_ENABLE                ENABLE
+
3,红色字体为删除内容
4,修改位置
@@ -206,6 +208,28 @@ static int _key_event_opr(struct sys_event *event)
代表修改内容在文件 -206行附近,在_key_event_opr 函数里面

修改示范:
示范 1:
diff --git a/SDK/apps/soundbox/include/app_config.h b/SDK/apps/soundbox/include/app_config.h
index 1b8b4af..65db090 100644
--- a/SDK/apps/soundbox/include/app_config.h
+++ b/SDK/apps/soundbox/include/app_config.h
@@ -276,4 +276,9 @@
 #define TCFG_LOWPOWER_LOWPOWER_SEL         0                     //开红外不进入低功耗
 #endif  /* #if TCFG_IRKEY_ENABLE */
 
+
+//分开U盘跟TF模式
+#define MUSIC_USB_TF_INDEPENDENT_ENABLE                ENABLE
+#define MUSIC_PRIORITY_DEV     "null"        //进music模式优先设备 "null"  "sd0" "sd1"  "udisk"
+
 #endif
修改如下:
image

添加设备(优先)独立模式功能功能具体修改如下:
SDK/apps/soundbox/include/app_config.h     |  5 ++++
 SDK/apps/soundbox/include/tone_player.h    |  5 +++-
 SDK/apps/soundbox/music/music.c            | 38 ++++++++++++++++++++++++++++
 SDK/apps/soundbox/music/music_player_api.c | 40 ++++++++++++++++++++++++++++++
 SDK/cpu/br25/audio_dec/tone_player.c       |  2 ++
 5 files changed, 89 insertions(+), 1 deletion(-)

diff --git a/SDK/apps/soundbox/include/app_config.h b/SDK/apps/soundbox/include/app_config.h
index 1b8b4af..65db090 100644
--- a/SDK/apps/soundbox/include/app_config.h
+++ b/SDK/apps/soundbox/include/app_config.h
@@ -276,4 +276,9 @@
 #define TCFG_LOWPOWER_LOWPOWER_SEL         0                     //开红外不进入低功耗
 #endif  /* #if TCFG_IRKEY_ENABLE */
 
+
+//分开U盘跟TF模式
+#define MUSIC_USB_TF_INDEPENDENT_ENABLE                ENABLE
+#define MUSIC_PRIORITY_DEV     "null"        //进music模式优先设备 "null"  "sd0" "sd1"  "udisk"
+
 #endif
diff --git a/SDK/apps/soundbox/include/tone_player.h b/SDK/apps/soundbox/include/tone_player.h
index cf3ed0a..96b858a 100644
--- a/SDK/apps/soundbox/include/tone_player.h
+++ b/SDK/apps/soundbox/include/tone_player.h
@@ -61,7 +61,8 @@ enum {​
 #if (defined(TCFG_APP_RECORD_EN) && (TCFG_APP_RECORD_EN))
     IDEX_TONE_RECORD,
 #endif

+    IDEX_TONE_USB,
+    IDEX_TONE_TF,
     IDEX_TONE_NONE = 0xFF,
 ​};
 
@@ -92,6 +93,8 @@ enum {​
 #define TONE_RTC               SDFILE_RES_ROOT_PATH"tone/rtc."
 #define TONE_RECORD            SDFILE_RES_ROOT_PATH"tone/record.
"
 #define TONE_SPDIF                 SDFILE_RES_ROOT_PATH"tone/spdif."
+#define TONE_USB               SDFILE_RES_ROOT_PATH"tone/usb.
"
+#define TONE_TF                SDFILE_RES_ROOT_PATH"tone/tf.*"
 
 #ifdef CONFIG_CPU_BR18
 #undef TONE_POWER_ON
diff --git a/SDK/apps/soundbox/music/music.c b/SDK/apps/soundbox/music/music.c
index 6362490..340a40c 100644
--- a/SDK/apps/soundbox/music/music.c
+++ b/SDK/apps/soundbox/music/music.c
@@ -40,6 +40,8 @@
 #define LOG_CLI_ENABLE
 #include "debug.h"
 
+char music_dev_change_flag = 0; //设备改变标志
+char is_need_play_dev_tone = 0; //设备提示音播放
 
 #if TCFG_SPEED_PITCH_ENABLE
 static PITCH_SHIFT_PARM init_parm;
@@ -206,6 +208,28 @@ static int _key_event_opr(struct sys_event *event)
         ​}
         break;
 #endif
+#if MUSIC_USB_TF_INDEPENDENT_ENABLE
+    case KEY_CHANGE_MODE:
+        //拦截切模式消息进行处理
+        printf(">>>>>>>>> music mode change mode\n");
+        is_need_play_dev_tone = 1;
+        if(file_opr_available_dev_total()>1) {​
+            if(MUSIC_PRIORITY_DEV != "null") {​
+                if(MUSIC_PRIORITY_DEV == music_play_get_cur_dev()) {​
+                    music_play_change_dev_next();
+                    break;
+                ​}
+            ​} else {​
+                if(music_dev_change_flag == 0) {​
+                    music_dev_change_flag = 1;
+                    music_play_change_dev_next();
+                    break;
+                ​}
+            ​}
+        ​}
+        ret = false;
+        break;
+#endif
 #if (defined(TCFG_LOUDSPEAKER_ENABLE) && (TCFG_LOUDSPEAKER_ENABLE))
     case KEY_SPEAKER_OPEN:
         if(speaker_if_working()) {​
@@ -251,6 +275,8 @@ static int music_event_handler(struct application *app, struct sys_event *event)
         case DRIVER_EVENT_FROM_SD1:
         case DRIVER_EVENT_FROM_SD2:
         case DEVICE_EVENT_FROM_USB_HOST:
+            music_dev_change_flag = 0;
+            is_need_play_dev_tone = 1;
             music_play_device_event_deal((u32)event->arg, event->u.dev.event);
             return true;
         default://switch((u32)event->arg)
@@ -313,6 +339,18 @@ static int music_state_machine(struct application *app, enum app_state state,
         switch (it->action) {​
         case ACTION_APP_MAIN:
             log_info("ACTION_APP_MAIN\n");
+            music_dev_change_flag = 0;
+            is_need_play_dev_tone = 1;
+#if MUSIC_USB_TF_INDEPENDENT_ENABLE
+            if(it->exdata == NULL) {​
+                //选择设备进行播放
+                if((file_opr_available_dev_total()>1) && (MUSIC_PRIORITY_DEV != "null")) {​
+                    y_printf("priority : %s\n",MUSIC_PRIORITY_DEV);
+                    music_app_init(MUSIC_PRIORITY_DEV);
+                    break;
+                ​}
+            ​}
+#endif
             music_app_init((void *)it->exdata);
             break;
         ​}
diff --git a/SDK/apps/soundbox/music/music_player_api.c b/SDK/apps/soundbox/music/music_player_api.c
index 1bfcfb1..1032b8b 100644
--- a/SDK/apps/soundbox/music/music_player_api.c
+++ b/SDK/apps/soundbox/music/music_player_api.c
@@ -136,7 +136,13 @@ static const u8 MUSIC_SCAN_PARAM[] = "-t"
                                      ;
 #endif//FILT_RECORD_FILE_EN
 static u8 music_cycle_mde = FCYCLE_ALL;
+#if MUSIC_USB_TF_INDEPENDENT_ENABLE
+extern char is_need_play_dev_tone; //设备提示音播放
+//此处改为单设备循环,防止上下曲时切设备
+static u8 music_dev_cycle_mde = DEV_CYCLE_ONE;
+#else
 static u8 music_dev_cycle_mde = DEV_CYCLE_ALL;
+#endif
 static struct music_opr *__this = NULL;
 
 
@@ -211,6 +217,18 @@ static int _music_play_start(MUSIC_PLAYER *m_ply, struct audio_dec_breakpoint *b
 #if TCFG_UI_ENABLE
         u16 file_num = music_play_get_file_number();
         ui_set_tmp_menu(MENU_FILENUM, 1000, file_num, NULL);
+#endif
+#if MUSIC_USB_TF_INDEPENDENT_ENABLE
+        //播放设备提示音
+        if(is_need_play_dev_tone) {​
+            is_need_play_dev_tone = 0;
+            y_printf("play %s\n",__this->mplay->fopr->dev->logo);
+            if(!strcmp(__this->mplay->fopr->dev->logo,"udisk")) {​
+                tone_play_index(IDEX_TONE_USB, 1);
+            ​} else {​
+                tone_play_index(IDEX_TONE_TF, 1);
+            ​}
+        ​}
 #endif
     ​}
     return ret;
@@ -899,6 +917,14 @@ static int muisc_play_decode_event(u8 event, u8 value)
             ​}
             if (read_err) {​
                 ///设备读错误应该是播放下一个设备
+#if MUSIC_USB_TF_INDEPENDENT_ENABLE
+                if(MUSIC_PRIORITY_DEV != "null") {​
+                    //U盘 拔出时 判断是否需要切模式
+                    y_printf("priority dev%s\n",music_play_get_cur_dev());
+                    if(music_play_get_cur_dev() != MUSIC_PRIORITY_DEV)
+                        goto __change_mode;
+                ​}
+#endif
                 if (file_opr_available_dev_total() >= 2) {​
                     music_ply_save_bp(__this->mplay);
                     err = music_play_by_dev_bp(DEV_SEL_NEXT, 0);
@@ -989,6 +1015,20 @@ int music_play_device_event_deal(u32 evt_src, u8 evt)
             && __this->mplay->fopr->dev
             && (!strcmp(logo, __this->mplay->fopr->dev->logo))) {​
             //当前播放的设备拔出
+#if MUSIC_USB_TF_INDEPENDENT_ENABLE
+            if(MUSIC_PRIORITY_DEV != "null") {​
+                //TF 拔出时 判断是否需要切模式
+                if(strcmp(__this->mplay->fopr->dev->logo,MUSIC_PRIORITY_DEV)) {​
+                    ///如果没有更多设备, 切换模式的时候保存断点, 此处不重复保存
+                    printf("NO priority dev , switch next app\n");
+                    app_task_next();
+                    return 0;
+                ​} else {​
+                    printf("priority dev\n");
+                ​}
+            ​}
+            printf("play %s\n",__this->mplay->fopr->dev->logo);
+#endif
             if (file_opr_available_dev_total()) {​
                 music_ply_save_bp(__this->mplay);
 #if DEC_SWITCH_DEV_USE_BP
diff --git a/SDK/cpu/br25/audio_dec/tone_player.c b/SDK/cpu/br25/audio_dec/tone_player.c
index b2b9ae8..aaeb42f 100644
--- a/SDK/cpu/br25/audio_dec/tone_player.c
+++ b/SDK/cpu/br25/audio_dec/tone_player.c
@@ -1687,6 +1687,8 @@ static const char *const tone_index[] = {​
 #if (defined(TCFG_APP_RECORD_EN) && (TCFG_APP_RECORD_EN))
     TONE_RECORD,
 #endif
+    TONE_USB,
+    TONE_TF,
 ​} ;
 int tone_play_index_with_callback(u8 index, u8 preemption, void (*user_evt_handler)(void *priv), void *priv)
 {​

36.AC696音箱版本直接播放MP3提示音方法 20200801 YWP

新版本696的V025版本直接在工具里面替换即可。也可以把V025制作的tone.cfg文件直接拷贝替换其他SDK的tone.cfg文件。
image

image

37.696系列K歌宝解决第一声延时长的问题 20200803 YWP

除了程序上我们看得到的干声和湿声的增益,其次还有MIC模拟打开出声音的优化。
干声和湿声的增益大小范围是0-4096.如下图。
image

干声是MIC完成ADC后得PCM数据,湿声是混响得后续处理数据。
在增加一个MIC模拟开启得函数。
void mic_2_dac_rl(u8 r_en, u8 l_en)
{​
if (r_en) {​
SFR(JL_ANA->ADA_CON4, 19, 1, 1); //MIC_2_R
​} else {​
SFR(JL_ANA->ADA_CON4, 19, 1, 0); //MIC_2_R
​}
if (l_en) {​
SFR(JL_ANA->ADA_CON4, 18, 1, 1); //MIC_2_L
​} else {​
SFR(JL_ANA->ADA_CON4, 18, 1, 0); //MIC_2_L
​}
// printf("\n--func=%s\n", FUNCTION);
​}
image

38. music模式下LED7显示、播放对应设备名,并在播放完之后显示文件号 20200808 SQ

  1. 添加提示音文件 image

#define TONE_MUSIC_USB SDFILE_RES_ROOT_PATH"tone/usb."
#define TONE_MUSIC_SD SDFILE_RES_ROOT_PATH"tone/sd.
"
image

  1. 添加显示设备名函数 static void led7_show_usb(void *hd)
    {​
    UI_DIS_VAR *ui_dis_var = (UI_DIS_VAR *)hd;
    ui_dis_var->dis->lock(1);
    ui_dis_var->dis->clear();
    ui_dis_var->dis->setXY(0, 0);
    ui_dis_var->dis->show_string((u8 *)" USb");
    ui_dis_var->dis->lock(0);
    ​}
    static void led7_show_sd(void *hd)
    {​
    UI_DIS_VAR *ui_dis_var = (UI_DIS_VAR *)hd;
    ui_dis_var->dis->lock(1);
    ui_dis_var->dis->clear();
    ui_dis_var->dis->setXY(0, 0);
    ui_dis_var->dis->show_string((u8 *)" Sd ");
    ui_dis_var->dis->lock(0);
    ​}
    image

    MENU_USER_USB,
    MENU_USER_SD,
    image

  2. 调用设备显示 在切换模式时不显示lod
    image

    case MENU_USER_USB:
    led7_show_usb(hd);
    break;
    case MENU_USER_SD:
    led7_show_sd(hd);
    break;
    image

  3. 显示、播放设备名并在播放完提示音之后显示曲目 bool user_play_tone_dev_flag = 0;
    static u16 user_file_num_flag = 0;
    static void user_dely_play_file_number(u8 menu){​
    ui_set_tmp_menu(MENU_FILENUM, 1000, user_file_num_flag, NULL);
    ​}
    image

     extern int tone_play_by_path(const char *name, u8 preemption);  
     if(user_play_tone_dev_flag){​  
         user_play_tone_dev_flag = 0;  
         if(!strcmp(__this->mplay->fopr->dev->logo,"udisk")) {​  
             tone_play_by_path(TONE_MUSIC_USB,1);  
             ui_set_tmp_menu(MENU_USER_USB, 1000, 0, user_dely_play_file_number);  
         ​} else {​  
             tone_play_by_path(TONE_MUSIC_SD,1);  
             ui_set_tmp_menu(MENU_USER_SD, 1000, 0, user_dely_play_file_number);  
         ​}          
     ​}else{​  
         ui_set_tmp_menu(MENU_FILENUM, 1000, user_file_num_flag, NULL);  
     ​}  
    

image

  1. 在需要播放的地方设置播放标志位。 一般会在以下操作设置:插拔设备、切入music模式、music模式下设备之间切换

image

imageimage

image

切换设备时设置标志位。默认sdk不会再music模式下切换设备 需要自己添加。
image

39. 报号前播放指定一个提示音 20200808 SQ

image

40. 固定音量播放提示音 20200808 SQ

image

避免音量为0时播放最小提示音没有声音
image

41.Linein模式走模拟使用抢断方式播放提示音带有Linein声音 20200808 SQ

1)确认linein通道为模拟通道
image

2)播提示音时把linein通道mute掉,播放结束之后延时umute。延时umute 解决连续播提示音时提示音间会有linein声音。

image

u16 user_linein_umute_id = 0;
void user_linein_umute(void){​

if(__this->onoff && __this->volume && !tone_get_status()){​  
    audio_linein_mute(0);  
    user_linein_umute_id = 0;      
​}else{​  
    user_linein_umute_id = sys_timeout_add(NULL, user_linein_umute, 600);  
​}  

​}

    if(user_linein_umute_id){​  
        sys_timeout_del(user_linein_umute_id);  
    ​}  
    user_linein_umute_id = sys_timeout_add(NULL, user_linein_umute, 600);  

image

42.AC696系列V024V025版本的FM背噪杂音的库优化 20200808 PYP

替换cpu.a库,然后如下截图文件对应修改。
image

资料如下从百度网盘提取:
链接: https://pan.baidu.com/s/1JDU0U9TSYzuSq_P1w69pxw
提取码: 933p

43.【音箱】AC696系列DAC输出前后有PO声(DAC设置高阻引起) 202008014 LZK

如果你方案的DAC输出方式是隔直方式,请按以下修改。
app_audio.c ——注释掉 DAC设置高阻的函数
image

44.【音箱】AC696系列AUX走模拟时播叠加提示音时,音乐出现卡顿处理方法 202008015 WTS

AC696X 音箱SDK在AUX模式下走模拟通道,在播系统叠加提示音时(非外部提示音,外部提示音只能用打断方式),音乐出现卡顿处理(红色字体为增加的修改):

image

image

image

45.AC696系列单独调节系统叠加提示音音量方法 202008015 WTS

直接对叠加音频的数据进行放大或缩小(红色是修改部分):
image

46.AC696系列直接在代码中修改叠加提示音方法 202008015 WTS

这里只拿其中一个提示音例子来讲:

image

备注:基本修改的就只有频率和正弦波点数(播放时长),其他参数不要随意改。

如果想通过现有的一些提示音提取频率、持续点数信息,可以按以前“otp_AC691x_OTP工具使用说明.pdf”文档操作:

image

image

“otp_AC691x_OTP工具使用说明.pdf ”可以在以下网盘路径获取:

链接:https://pan.baidu.com/s/1E3aoxU0xKvZloOuk6m1ivg
提取码:bj0u

47.AC696系列音箱SDK2.5 判断录音录到哪个设备 202008015 WTS

可以通过rec->dev->dev_name判断:
image

48.AC696系列音箱SDK2.5快速按遥控有时不灵敏修改方法 202008015 WTS

可以通适当减小click_delay_time 参数。注意这个计数会影响双击、三击等多击的识别。如果遥控没有双击、三击等多击功能,调小这个参数没有影响。但如果有双击、三击等多击功能。调太小的话,会影响到多击功能识别(容易识别成单击),因此要跟进实际情况调节使用:

image

49.AC696系列如果误拿ROM中用到的IO口去做唤醒口,出现充电脚5V拔出后,耳机不会自动开机问题解决方法 202008020 WTS

开机时ROM中用到的IO口,在开机时电平会跳高或跳低,持续50MS左右。因此不要拿这些IO口去做唤醒脚或推灯。如何知道哪些IO口是开机ROM中用到的,请看IC用户手册中的IO口表:

image

若误拿ROM中用到的IO口做了开机唤醒口,导致充电脚5V 拔出后,耳机不会自动开机问题。可以参考以下修改处理:(软件有开 “//是否支持拔出充电自动开机功能 #define TCFG_CHARGE_OFF_POWERON_NE ENABLE”)

1、在app_main.c中添加函数:

image

u8 is_ldo5v_wakeup_remap(void)
{​
///1、如果为检测的是拔出唤醒,且有对应唤醒源,认为是真的拔出唤醒
///此时bug为不响应快速插入拔出充电线,认为是按键唤醒,走按键开机流程
if (get_charge_wkup_type() == WKUP_FAIL) {​
if (get_wakeup_source()&BIT(3)) {​
return 1;
​}
​}
return 0;
​}

2、在app_main.c文件的app_main()函数中,将is_ldo5v_wakeup()改为is_ldo5v_wakeup_remap():

image

3、在charge.c中做以下修改:
image

image

修改内容部分:

__this->wkup_type = WKUP_NULL;  

if (LDO5V_IS_EN() && LDO5V_EDGE_WKUP_IS_EN()) {​  
    if (LDO5V_EDGE_GET() == 0) {​  
        __this->wkup_type = WKUP_RISE;  
    ​} else {​  
        __this->wkup_type = WKUP_FAIL;  
    ​}  
​}  

image

u8 get_charge_wkup_type(void)
{​
return __this->wkup_type;
​}

  1. 在charge.h文件中,做以下修改:

image

enum {​
WKUP_NULL,
WKUP_RISE,
WKUP_FAIL,
​};

extern u8 get_charge_wkup_type(void);

50.AC696X 音箱 SDK在对箱时红外按键处理2020 0822 LHY

当音箱中拥有红外按键控制时,对箱时会出现两种情况,假设现在有音箱A和B

第一种是A、B同时接受到红外按键消息并同步给另外一边音箱:需要在两个音箱中过滤掉来自对箱消息。
第二种是A或者B只有一个接受到红外按键消息,这个时候没有接受到按键消息的需要执行来自对箱消息。
实现方法:
加入下图代码,主要是通过获取系统时间来判断是否需要执行对箱消息来实现。
image

51. AC696X 音箱 SDK低电检测使用复位脚问题 LHY 2020 0822

在电量检测时候,一般都会使用分压电路(例如上下拉9.1k电阻)来采集电压,会导致引脚电压在1.6-2.0V之间,尤其在1.6-1.8V时候由于处于高低电平无法识别的区间,这时候如果使用复位脚作为检测脚会导致异常复位,建议关闭检测脚复位功能,或者提高电压变化区间。

  1. AC696X 耳机 SDK016面条耳机,把按键消息配置在工具里面,按键的消息会错位 XNW 20200824 处理方法:删掉下图的按键事件
    image

  2. AC696X 音箱 SDK025使用外部eq配置文件后程序中的6个eq效果不起作用 SQ 20200825 主要是把配置文件的eq数据替换掉其中一个效果,以替换到eq_tab_normal为例
    注意EQTool V3.1.6工具默认第十个频点配置为20329此频点需要改小不然程序会报错
    image

image

image

memcpy((void *)eq_tab_normal, eq_cfg->param[eq_ch].seg , sizeof(EQ_CFG_SEG) * EQ_SECTION_MAX);
image

image

  1. AC696X 音箱 SDK025程序中实时修改eq某频点增益 SQ 20200825 主要步骤:设置eq mode更新标志位->修改频点增益。
    此方法适用修改程序内部6个eq效果的实时修改。
    如果使用此方法修改外部配置文件频点增益,需要把外部数据替换到eq效果表中或者自行添加一个表,参照53点的修改。
    以修改1和10频点为例
    image

在触发更新eq数据的地方调用
image

image

在eq mode更新的回调函数中添加
image

以上截图所有程序修改代码如下:
#define USER_BASS_POINT 0//eq配置文件的第x个频点
#define USER_TERBLE_POINT 9//eq配置文件的第x个频点

static int user_bass_vol = 0;
static int user_terble_vol = 0;
static bool user_eq_updata_flag = 0;
void user_eq_fun(EQ_CFG_SEG *eq){​
if(!user_eq_updata_flag || !eq){​
return;
​}

printf("user eq updata run %d\n",eq_mode_get_cur());  

#if (defined(USER_BASS_POINT) && (USER_BASS_POINT<EQ_SECTION_MAX))
if(user_eq_updata_flag){​
eq[USER_BASS_POINT].gain = user_bass_vol<<20;
printf(" bass updata freq %d gain %d\n",eq[USER_BASS_POINT].freq,eq[USER_BASS_POINT].gain>>20);
​}
#endif

#if (defined(USER_TERBLE_POINT) && (USER_TERBLE_POINT<EQ_SECTION_MAX))
if(user_eq_updata_flag){​
eq[USER_TERBLE_POINT].gain = user_terble_vol<<20;
printf(" terble updata freq %d gain %d\n",eq[USER_TERBLE_POINT].freq,eq[USER_TERBLE_POINT].gain>>20);
​}
#endif
user_eq_updata_flag = 0;
​}

void user_eq_updata(int bass,int terble){​
if(user_bass_vol == bass && user_terble_vol == terble){​
return;
​}

user_bass_vol = bass;  
user_terble_vol = terble;  

user_eq_updata_flag = 1;  
if(p_eq_cfg){​  
    p_eq_cfg->mode_updata = 1;   
​}  

​}

  1. AC696X ac696n_sdk_release_v0.1.6_2M包加入来电铃声和来电报号的问题 YP

/* ************ 2M包来电报号和铃声 ********************** */
(wtg提示音)开机、关机、蓝牙连接、蓝牙断开 、报号
(正弦波)对耳连接、 对耳断开、来电铃声
1、tone.cfg文件小于等于13K(当然越小越好)。
2、不支持EQ。
3、不支持ble。
4、格式只支持wtg(flash空间限制)。
参考的代码如下:链接:https://pan.baidu.com/s/1035jB3MRmILYDoQ7YgbGig
提取码:llbm
因为默认的SDK的来电号码和来电提示音要求是同样的提示音格式的,现在为了添加来电报号和来电铃声的功能,将来电铃声换成wtg格式,入参考代码的修改方式:
image

然后在播放提示音结束的地方判断是否需要播放来电铃声
image

  1. AC696X 程序上设置自定义蓝牙名【通用】 LZK 普通模式下蓝牙名(默认使用配置文件的蓝牙名)
    const char *bt_get_local_name()
    {​
        return (const char *)(bt_cfg.edr_name);
    ​}
    独立自拍模式下的蓝牙名设置(该函数需要自行写入代码)
    const char *bt_get_hid_name()
    {​
        return "JL_HID_DEFAULT";
    ​}
    动态修改蓝牙名
    int bt_modify_name(u8 *new_name)
    {​
        u8 new_len = strlen(new_name);
        if (new_len >= LOCAL_NAME_LEN) {​
            new_name[LOCAL_NAME_LEN - 1] = 0;
        ​}
        if (strcmp(new_name, bt_cfg.edr_name)) {​
            syscfg_write(CFG_BT_NAME, new_name, LOCAL_NAME_LEN);
            memcpy(bt_cfg.edr_name, new_name, LOCAL_NAME_LEN);
            hci_vendor_update_name();
            log_info("mdy_name sucess\n");
            return 1;
        ​}
        return 0;
    ​}
    BLE广播名字
    搜索程序上 HCI_EIR_DATATYPE_COMPLETE_LOCAL_NAME字样,找到数据部分的传参就是实际的蓝牙名。根据实际需要修改指针指向的内容。
    注意:包数据最长只有31字节
    image

  2. 025版本带混响功能有概率死机 20200910 xin 链接: https://pan.baidu.com/s/1TJYHDZSh68HEv4ahxkkc-A 提取码: pnsj
    提取media.a库,rebuild即可

58.AC696的V025版本SDK进入蓝牙会自动退出蓝牙模式问题 20200911 YWP

bt_auto_exit();函数会计算到没有连接或者其他条件成立会自动退出蓝牙模式。
image

59.AC696系列外插MIC做混响或扩音设计注意 20200915 YWP

目前我们AC696系列给出的原理图,MIC部分电路都是省电容的电路(如下图),如果客户用作带有混响或者扩音的功能,不建议使用省电容的电路,建议需加隔直电容,偏置用芯片的MIC_(PA2)。
image

原因如下:
如果是省电容,芯片会执行内部的校准MIC偏置程序,由于做的是带混响或者扩音器,PCBA板一般没有MIC,那么我们内部的MIC校准程序校准不到值,就会导致开机慢和批量出现不一致的问题,或者产生其他由于MIC偏置导致的MIC声音的问题出来。
所以如果是MIC不在PCB板子上的带有混响或者扩音的机器,必须用加隔直电容MIC方案。参考电路如下。MIC的偏置一定要选择芯片的MIC_BIAS(PA2),如果用VDDIO,一来底噪大,二来会跟随VDDIO变动出现杂音。
image

MIC_BIAS的偏置请设置在3.0V以下,免得由于电池低电下跟随电压抖动出现杂音。
image

60.AC6965E的AUX/LINEIN设计注意 20200915 YWP

AC6965E是只绑定出DACL声道出来的IC,如下图,所以在使用AUX/LINEIN上选用通道需注意。为了不需要程序多设置,AUX的通道请选择对应的AUXn_L作为LINEIN的输入。如果选用AUXn_R进,LINEIN下是没有声音输出的,因为声音从DACR出去了,没有从DACL出去。
image

扩展:
所以如果AC696N的芯片只绑定出DACR,那么AUX的就选用AUXn_R;只绑定出DACL那么AUX就选用AUXn_L进入。
同时请看下本文档的第66点!

61.AC696N的LADC和蓝牙后台设计注意 20200915 YWP

LADC:
AC696N的LADC只有一路,跟AC695N的三路LADC不一样。所以在评估功能时需要注意。不能同时在LINEIN下开ADC和打开MIC的ADC。例如混响,只能LINEIN走模拟,MIC走ADC。
同时例如AC6969D的第5脚FMIP,有LINEIN和FM天线功能共用的,这其实LINEIN走的是ADC,所以如果有MIC的ADC,例如混响,那么LINEIN下是不支持AUX的ADC的。
image

蓝牙后台:
AC696N的如果有蓝牙跑后,那么跟AC692一样,也是在FM模式下不支持蓝牙后台。

62.AC696N的蓝牙连接成功自动播放 20200916 FSW

添加下面的代码
static int a2
_auto_play_timer = 0;
void a2dp_auto_play_cmd_send(void *p)
{​
    printf("a2dp_auto_play_cmd_send\n");
    if(get_total_connect_dev() && a2dp_get_status() != BT_MUSIC_STATUS_STARTING && get_call_status() == BT_CALL_HANGUP){​
        user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_PLAY, 0, NULL);
    ​}
    a2dp_auto_play_timer = 0;
​}

void a2dp_auto_play_init(void)
{​
    if(!get_remote_test_flag() && a2dp_auto_play_timer == 0){​
        a2dp_auto_play_timer = sys_timeout_add(NULL, a2dp_auto_play_cmd_send, 1000);
    ​}
​}

在case BT_STATUS_CONN_A2DP_CH:处调用a2dp_auto_play_init();即可。

63.AC696N 混响开发注意点 LZK

修改记录:
20200922:添加常用函数 — LZK
(请先自行查看SDK自带文档《混响应用详细设计说明书》)
SDK版本:适用AC696N_soundbox_sdk_release_1.0.0及以后sdk
AC696 混响延时测试数据(仅供参考)
image

混响MIC数据入口
image

(回声)混响音量

  1. mic_effect.c 文件中实现调节 wetgain 的函数(范围 0 ~ 4096)
    void mic_effect_set_echo_wetgain(u32 gain)
    {​
        if (__this == NULL || __this->p_echo_hdl == NULL) {​
            return ;
        ​}
        os_mutex_pend(&__this->mutex, 0);
        __this->fade.wet = gain;
        os_mutex_post(&__this->mutex);
    ​}
    3.void mic_effect_fade_run(struct __mic_effect *effect) 函数中添加以下内容
    image

(回声)混响延时
void mic_effect_set_echo_delay(u32 delay)
u32 mic_effect_get_echo_delay(void)
(回声)混响衰减
void mic_effect_set_echo_decay(u32 decay)
u32 mic_effect_get_echo_decay(void)
变调
方法1:在线调试调试好各个模式的变调参数,使用下面的函数进行切换
void mic_effect_change_mode(u16 mode)
u16 mic_effect_get_cur_mode(void)
若想添加/删除 音效模式,自行参考SDK 的 “魔音” 配置
混响在线调试
自行查看《混响音效在线调试说明文档.pdf》
MIC AUTOMUTE检测
方法一:使用noisegate
混响添加noisegate处理 : MIC_EFFECT_CONFIG_NOISEGATE
修改NOISEGATE参数
没有外部音效文件,使用默认参数
const NOISEGATE_PARM effect_noisegate_parm_default = {​
  .attackTime = 300,
  .releaseTime = 5,
  .threshold = -45000,
  .low_th_gain = 0,
  .sampleRate = MIC_EFFECT_SAMPLERATE,
  .channel = 1,
​};
有外部音效文件,使用音效文件的值
人声消除
image

image

  1. AC696 1.1.0 SDK媒体音量与麦克风音量独立实现方法 20200925 LHY- 20210817 WGH修改 2023/4/24:
    SDK一直在迭代更新,目前较新的SDK版本已经做好了相关流程,不需要使用下方的修改.
    相关宏定义如下:
  2. 修改音量类型为独立通道软件数字音量,用于控制媒体音量 image

2、cpu\br28\audio_mic\effect_reg.的混响功能配置选择MIC_EFFECT_CONFIG_DVOL,做为话筒的音量控制
image

  1. 话筒音量调节用接口 /----------------------------------------------------------------------------/
    /**@brief    数字音量调节接口
       @param   vol 待设置的音量值[0,31]
       @return
       @note
    /RAM
    /
    ----------------------------------------------------------------------------*/

void mic_effect_set_dvol(u8 vol) ;

/----------------------------------------------------------------------------/
/**@brief    获取数字音量接口
   @param
   @return   当前数字数字音量等级
   @note
/
/
----------------------------------------------------------------------------*/
u8 mic_effect_get_dvol(void);

2021/08/17

  1. 在mixer数据流添加数字音量节点 1.1 在cpu\br25\audio_dec\audio_dec.c里添加
    image

#if USER_MIC_EFFECT_VOL_DEGAULT
#include "application/audio_dig_vol.h"
void *digvol_last = NULL;
void *digvol_last_entry = NULL;
#endif
image

#if USER_MIC_EFFECT_VOL_DEGAULT
audio_dig_vol_param digvol_last_param ={​
    .vol_start = 30,
    .vol_max = 30,
    .ch_total = 2,
    .fade_en = 1,
    .fade_points_step = 5,
    .fade_gain_step = 10,
    .vol_list = NULL,
​};
    digvol_last = audio_dig_vol_open(&digvol_last_param);
    digvol_last_entry = audio_dig_vol_entry_get(digvol_last);
    entries[entry_cnt++] = digvol_last_entry;

#endif

  1. 添加数字音量节点后,音量调节函数需要做修改 2.1 cpu\br25\audio_common\app_audio.c
    image

#if USER_MIC_EFFECT_VOL_DEGAULT
extern void *digvol_last;
extern void *digvol_last_entry;
#endif

#if (!USER_MIC_EFFECT_VOL_DEGAULT)
#if (TCFG_AUDIO_DAC_CONNECT_MODE == DAC_OUTPUT_MONO_L)
    audio_dac_vol_set(TYPE_DAC_AGAIN, BIT(0), gain_l, fade);
    audio_dac_vol_set(TYPE_DAC_DGAIN, BIT(0), gain_l ? DEFAULT_DIGTAL_VOLUME : 0, fade);
#elif (TCFG_AUDIO_DAC_CONNECT_MODE == DAC_OUTPUT_MONO_L)
    audio_dac_vol_set(TYPE_DAC_AGAIN, BIT(1), gain_r, fade);
    audio_dac_vol_set(TYPE_DAC_DGAIN, BIT(0), gain_l ? DEFAULT_DIGTAL_VOLUME : 0, fade);
#else
    audio_dac_vol_set(TYPE_DAC_AGAIN, BIT(0), gain_l, fade);
    audio_dac_vol_set(TYPE_DAC_AGAIN, BIT(1), gain_r, fade);
    audio_dac_vol_set(TYPE_DAC_DGAIN, BIT(0), gain_l ? DEFAULT_DIGTAL_VOLUME : 0, fade);
    audio_dac_vol_set(TYPE_DAC_DGAIN, BIT(1), gain_r ? DEFAULT_DIGTAL_VOLUME : 0, fade);
#endif
#else
    extern int audio_dig_vol_set(void *hdl, u32 channel, u8 vol);
    extern int audio_dig_vol_fade(void *hdl, u32 channel, u8 fade_en);
    if(digvol_last_entry && digvol_last){​
        r_printf("the  digvol_last == %d,  gain_r == %d \n", gain_l, gain_r);
        audio_dig_vol_set(digvol_last, BIT(0), gain_l);
        audio_dig_vol_set(digvol_last, BIT(1), gain_r);
    ​}
#endif
    local_irq_enable();
    return 0;
​}
3. MIC音量调节通过以下函数接口调节 cpu\br25\audio_mic\mic_effect.c
image

  1. AC696 1.1.0 SDK U盘/SD卡提示音独立实现方法 20200925 LHY 1.下面是定义盘符
    image

2.U盘/SD卡提示独立处理代码如下,无论是第一次上电还是后面插拔都会走到KEY_MUSIC_PLAYER_START
image

66.AC696系列LINEIN左右声道与DACLR输入出的注意 20201015 YWP

这部分请先读下本文档第60点。
如果设计时LINEIN的R声道进入,芯片是DACL输出,例如AC6965E是DACL输出的,那么在LINEIN下走模拟的是没有声音的,需要用如下函数调用。
/*
*linein单声道模拟输入的时候,如果dac是两个声道的,想要
*两个声道都有声音出来,需要将amux通道合并一下,即:
*call:audio_linein_ch_combine(1,1);
*/
void audio_linein_ch_combine(u8 LR_2_L, u8 LR_2_R);
在linein_start后面调用。
image

67.AC696系列 外挂FLASH使用方法与注意点 20201016 LHY

1、配置SPI

image

2、配置FLASH
image

image

3.如何挂载设备并播放音乐
(1)、首先需要根据第二点打开的宏先找到对应的描述符,比如fat_nor、rec_nor等
image

  1. 、挂载设备需要激活设备和切换模式 image

image

4、遇到问题需要的注意点
(1)、首先先保证能够读取到ID号,如果读取不到先从硬件排查是否接错IO口
image

  1. 、通过flash大小匹配设置项 image

  2. AC696系列 SDK1.1.1 音乐模式频繁播放提示语导致播放异常 20201016 LHY 在频繁使用打断播放方式进行播放提示语时,音乐重新播放时会出现很一些杂音(突变式),可以通过下面代码解决
    image

  3. AC696系列 SDK1.1.1 蓝牙模式提示语未播放完被连接提示语打断解决方法 20201016 LHY 开机时,会出现蓝牙提示在样机在回连手机和回连对箱时被打断,处理方法如下图片

imageimage

  1. AC696系列 SDK1.1.1 指定拔出U盘切换到特定模式解决方法 20201016 LHY image

  2. AC696系列 SDK1.1.1 开机优先设备(SD卡/U盘)上线实现方法 20201017 LHY 1、配置优先设备
    image

2、音乐模式初始化激活优先设备
image

3、由于不同SD卡和U盘上线时间不同所以需要去等待另一个设备上线
image

image

  1. AC696系列 SDK1.1.1 关闭TWS对箱回连解决方法 20201017 LHY image

  2. AC696系列 SDK1.1.1 按键断开对箱后会回连的解决方法 20201017 LHY 主要是由于主动调用断开对箱时候,另一个音箱已经断开连接而没有同步到断开对箱消息导致回连,这时候需要用到延时同步消息。
    image

imageimage

  1. AC696系列 SDK1.1.1 对箱设置单声道时,播歌下关其中一个音箱后,另外一个有时会复位需要更换的库 ------WTS 20201022 请使用以下网盘的media_app.a库文件替换后,rebuilt 工程处理:

链接:https://pan.baidu.com/s/15Z_7iM3Eq5OkUWIA_TIlig
提取码:jiel

  1. AC696系列 SDK1.1.1 播完U盘或卡后,不会自动播放下一个设备音乐的修改方法 ------WTS 20201022 请使用以下网盘上的资料“AC696X SDK1.1.1 播完U盘或卡后,不会自动播放下一个设备音乐修改方法.zip” 处理:

链接:https://pan.baidu.com/s/1bAEP3mC5KUJoyYgWBGSCIA
提取码:jiel

  1. AC696 系列 SDK1.1.1 切蓝牙模式播提示音的时候(蓝牙初始化未完成)插入TF卡,无法切入TF卡模式,程序卡死问题处理方法 -------LAQ 20201022

按下图进行修改

image

77.AC696 系列 SDK1.1.1 数码管显示变化较快时,出现某一段亮一些,某一段暗一些的处理方法 -------LJW 20201023

image

  1. AC696 系列 SDK1.1.1 一边调回声延迟,一边用MIC说话会有沙沙声的处理方法 -------LJW 20201023 (1)按如下修改
    image

(2)请使用以下网盘的lib_reverb_cal.a库文件替换后,rebuilt 工程处理:
链接:https://pan.baidu.com/s/1fuMWdyV3DlzuKehWempfkg
提取码:wf9g

  1. AC696 系列 SDK1.1.1 插卡无法扫描到隐藏文件和带.的文件名的文件的处理方法 -------LJW 20201023 image

  2. AC696 系列 SDK1.1.1 由于获取电量值改变的时间间隔太长导致电压检测不准的处理方法 -------LJW 20201027 image

  3. AC696 系列 SDK1.1.1 自动mute使用方法 -------LHY 20201028

  4. 打开自动mute的宏 image

2、获取mute状态
image

82.AC696X SDK1.1.1 设置为单声道后,有的机子有时播放U盘或卡音乐声音非常小解决方法 ----WTS 20201102

AC696X SDK1.1.1 设置为单声道后,有的机子有时播放U盘或卡里的音乐时,声音非常小。调音量也没有任何变化问题。解决方法是用以下网盘的media.a库替换后 rebuilt 解决:

链接:https://pan.baidu.com/s/1SUT_flXbYKVbcP1msHfOAA
提取码:jiel

83.AC696 系列 SDK1.1.1 快速插拔设备出现死机、无法切模式解决方法 -------LHY 20201102

  1. 这个问题主要存在于快速拔卡切到蓝牙模式时,如果蓝牙未初始化成功会导致卡死在蓝牙退出函数导致死机问题,所以在从蓝牙切到其他模式都会先判断蓝牙是否初始化完,未初始化完需要等待初始化完成。 image

image

image

84.AC696 系列 PC 模式插上电脑后默认MIC音量和系统音量值设置 -------WTS 20201103

image

以下是电脑上MIC 音量值查看的地方(参考):
image

85.AC696 系列 SDK1.1.1 DACR做linein输入时没声音的处理方法 -------LJW 20201103

请按如下修改:
image

86.AC696 系列 SDK1.1.1 打开PC模式时某些U盘无法读取的处理方法 -------LJW 20201103

请按如下修改:(该方法同样适用695系列SDK)
image

87.AC696 系列 SDK1.1.1 播放MP3提示音回复位的处理方法 -------LJW 20201105

image

88.AC696 系列 SDK1.1.1 单声道开启人声消除无效果的处理方法 FSW 20201105

公版SDK配置
#define TCFG_AUDIO_DAC_CONNECT_MODE DAC_OUTPUT_MONO_L
#define AUDIO_VOCAL_REMOVE_EN 1
后,人声消除无效果,可按以下修改处理。
imageimage

image

image

新建头文件SDK\include_lib\media\media_develop\media\channel_switch.h
#ifndef CHANNEL_SWITCH_H
#define CHANNEL_SWITCH_H

#include "media/audio_stream.h"

struct channel_switch {​
    u8 out_ch_num;
    enum audio_channel out_ch_type;
    struct audio_stream_entry entry;
    u16 dat_len;
    u16 dat_total;
    u16 buf_len;
    u8 buf[0];
​};

struct channel_switch *channel_switch_open(enum audio_channel out_ch_type, int buf_len);

void channel_switch_close(struct channel_switch **);

#endif

89.AC696 系列 SDK1.1.1 播放wav音频时SD卡复用AUX失败补丁 WTS 20201106

该问题是由于在播放WAV音频时,卡无法进入空闲引起。请使用以下网盘链接上的cpu.a库,替换后,rebuilt处理:

链接:https://pan.baidu.com/s/19oK86jwxyyWq1Gaw8G4MjQ
提取码:6faj

90.AC696 系列 脉冲型驱动功放使用(us级别) LHY 20201110

image

91.AC696 系列 优化插麦克风底噪问题 LHY 20201110

第一种:修改threshold的值,原来是-45000,修改时候不要大于-20000
image

第二种:直接从数据流入手去清空数据
主要是先打印下in指针中的数据,将in转换为s16类型指针,outlen单位是字节不是s16,所以需要自己去计算出数据个数,打印在插麦克风并没有播歌情况下所有数据大小,取最大的值(绝对值)作为阀值,在mic_effect_effect_run执行开始时候去检查数据,如果数据都在阀值范围,直接将in中所有数据清空。
image

92.AC696 系列 高关功放在软关机下的处理 LHY 20201110

由于高关功放需要引脚输出高电平来暂停功放芯片工作降低功耗,之前的做法是进入idle假关机,现在直接软关机后再配置相对应引脚设置为所需要的电平

image

93.AC696 系列音箱V1.1.1 获取音频数据的方法 FSW 20201110

在your_data_process中进行自己的处理
image

image

94.AC696 系列音箱V1.1.1 添加自定义的数字音量控制的方法 FSW 20201110

可实现在不改变模拟音量的情况下,改变蓝牙、U盘、SD卡等数字音源的音量
image

image

image

95.AC696 系列SDK1.1.1 上下曲切歌有啵声问题需要更换的库 WTS 20201111

AC696 系列SDK1.1.1 上下曲切歌有啵声问题需要更换的库:

链接:https://pan.baidu.com/s/1kA6zg8KrYQcxbYBuNv2Yhg
提取码:jiel

96.AC696 系列SDK1.1.1 无法读取MMC卡的问题处理方法 LJW 20201116

该问题处理方法请参考第89问题点,替换库

97.AC696 系列SDK1.1.1 断开对箱后自动回链问题解决方法 LHY 20201117

image

image

image

image

98.AC696 系列SDK1.1.1 连接手机状态下无法连接或者断开对箱解决方法 LHY 20201117

下面方法存在BUG,方法已作废
1、直接注释掉下面代码,或者改为#if 0
image

image

99.AC696/AC695修改蓝牙配对码PINCODE 20201118 YWP

/提供接口外部设置配对方式/
extern void __set_simple_pair_flag(u8 flag);
image

image

100.AC696X音箱SDK自动调节VDDIO电压 20201119 YP

自动调节vddio电压等级,提供对应的接口,如下:有一点要注意,vddio的电压会影响到电池电量检测,另外这个电压也要比DACVDD大最少0.3V,否则会引发底噪。
image

101.AC696X音箱SDK 内置充电有时会处于很小(20mA)左右的处理方法 20201119 YP

音箱SDK内置充电最大可以用300mA电流档位,但是有些时候比如在电池处于低电的时候,充电的电流可能只有20mA左右,充电比较慢,是因为SDK默认初始化的充电电流设置为20mA,可以根据自身的需求更改这个初始值,这个值设定为电池容量的1/10C的比例,根据电池标定来设置。
image

102.AC696X音箱SDK 1.1.1 硬件微妙延时 SQ 20201123

注:1、必需以晶振为时钟源 2、分频系数根据延时最小单位自己设置,分频设置参考用户手册中的寄存器说明
以定时器3做10微妙为单位的延时为例:
#include "debug.h"

#define USER_UDELAY_TIMER JL_TIMER3//微妙延时使用的定时器 地址
#define USER_UDELAY_TIMER_IRQ IRQ_TIME3_IDX//微妙延时使用的定时器 终端号
//只初始化一次
static void user_10us_delay_init(void){​
bit_clr_ie(USER_UDELAY_TIMER_IRQ);
​}
//阻塞延时10us
attribute((weak)) void user_udelay(u32 usec){​
USER_UDELAY_TIMER->CON = BIT(14);//0x4000;
USER_UDELAY_TIMER->CNT = 0;
USER_UDELAY_TIMER->PRD = (24/4) * usec;//延时时间=时钟源频率/分频系数*计数次数
USER_UDELAY_TIMER->CON = BIT(0)|BIT(3)|BIT(4);//BIT(0)定时计数模式 BIT(3):晶振为时钟源 BIT(4):4分频
while ((USER_UDELAY_TIMER->CON & BIT(15)) == 0);
USER_UDELAY_TIMER->CON = BIT(14);
​}

//使用PB7 翻转电平 来测试延时是否正常
#define IO_DEBUG_OUTPUT(i,x) {​JL_PORT##i->DIR &= ~BIT(x), JL_PORT##i->DIE &= ~BIT(x); JL_PORT##i->OUT ^= BIT(x);​}
#define IO_DEBUG_TFLIP(i,x) {​JL_PORT##i->OUT ^= BIT(x);​}
// #define IO_POR B,1

attribute((weak)) void user_100us_test(void){​
local_irq_disable();
// IO_DEBUG_OUTPUT(B,7);
// user_udelay(10);

for(int i = 0;i<10;i++){​  
	IO_DEBUG_TFLIP(B,7);//一定要使用寄存器的方式来控制io的输出高低   
	user_udelay(10);  
​}  
// user_udelay(10);      
// IO_DEBUG_TFLIP(B,7);  

local_irq_enable();  

​}

void user_fun(void){​
user_10us_delay_init();
IO_DEBUG_OUTPUT(B,7);
sys_hi_timer_add(NULL,user_100us_test,200);
​}
image

image

103.耳机工程升级到SDK020,发现同样的参数,回音比以前的版本明显,调回音压制参数效果不明显的处理方法 XNW 2020112

按照一下图片参数处理:
image

104.696x 音箱SDK添加定时器扫描函数后有几率搜不到蓝牙问题 20201124 YP

AC696X音箱的SDK,在开机就需要跑一些定时器的扫描函数的,添加之后会出现有几率进入蓝牙模式之后无法搜到蓝牙名字的问题,原因是开机添加的定时器(sys_timer_add等之类的)会触发消息,把消息池撑满,导致进入蓝牙的时候,造成蓝牙的一些事件消息无法接收处理,出现丢事件消息无法初始化蓝牙,从而搜不到蓝牙名字,对于此问题的处理是需要更换一下添加定时器扫描函数的地方,避免消息事件被频繁触发堆满消息池。对于以上的修改,可参考下图
image

105.696x 音箱SDK蓝牙模式下打开LINEIN进行叠加 20201127 LHY

  1. 走数字通道(因为696只有一路LADC,所以linein无法走数字立体音,只能走单声道) image

  2. 走模拟通道,在蓝牙模式下需要打开linein通道位置加入下面这段代码 image

106.696x 音箱SDK搜不到蓝牙问题(补充) 20201127 LZK

【具体现象】 :第一次上电开机或者切到蓝牙模式下,搜索不到蓝牙名。查看打印消息发现进入蓝牙模式后没有BT_STATUS_INIT_OK的打印出来
image

【修改方法】

  1. 优先看第104点“696x 音箱SDK添加定时器扫描函数后有几率搜不到蓝牙问题”
  2. 如果根据第104点修改后,还是会出现。可尝试添加重发机制如下。(以下函数放在bt.c文件里面即可。)
  3. 添加完后,查看打印有BT_STATUS_INIT_OK 打印出来即可。 //蓝牙初始化成功消息1秒重发
    void bt_init_ok_msg_resend(void *msg)
    {​
        printf("bt_init_ok_msg_resend%d\n",get_bt_init_status());
        if(get_bt_init_status()==0){​
            struct sys_event e;
            e.type = SYS_BT_EVENT;
            e.arg = (void *)SYS_BT_EVENT_TYPE_CON_STATUS;
            e.u.dev.event = BT_STATUS_INIT_OK;
            e.u.dev.value = (int)0;
            sys_event_notify(&e);
        ​}
    ​}
    int sys_event_recode(struct sys_event *event)
    {​
        printf("event->type:%d\n",event->type);
        if(event->type == SYS_BT_EVENT){​
            struct bt_event *bt = &event->u.bt;
            printf("event:%d\n",bt->event);
            if(bt->event == BT_STATUS_INIT_OK){​
                sys_timeout_add(NULL,bt_init_ok_msg_resend,1000);
            ​}
        ​}
        return 0;
    ​}

107.AC696X 大音量播放歌曲声音会抖 20201201 HJY

【原因】默认的SDK DAC的bise电流档位选择为最低档位,大音量播歌的时候会因为驱动电流不够,导致声音不正常。
【修改方法】在各板级的.c文件中修改.lpf_isel值。
image

image

108.AC696系列SDK1.1.1 开启内置充电后红外遥控不起作用的处理方法 LJW 20201203

image

109AC696系列SDK1.1.1 录音的同时DAC输出录音数据的处理方法 LJW 20201203

1.请按如下修改:
image

  1. 修改录音的采样率 image
  2. 3.配置mic_effect为REVERB image
  3. 4.关掉混响的效果 image

110.AC696系列SDK1.1.1 在music模式下开混响,喊麦会卡音的处理方法 LJW 20201203

image

111.AC696系列SDK1.1.1 外部EQ文件替换EQ模式中的任何一种模式 HJY 20201203

【修改方法】在eq_config.c文件中,以替换eq_tab_normal模式为例。
image

image

112.AC696系列SDK1.1.1 外部添加双EQ文件的方法 HJY 20210419

【修改方法】使用新EQ工具
image

image

image

image

imageimage

113.AC696系列SDK1.1.1 如果出现莫名其妙的自动关机(非复位死机),可以试下按下图修改 20201204 FSW

AC696系列SDK1.1.1 如果出现莫名其妙的自动关机(非复位死机),需要修改sys_auto_shut_down_enable函数(原因是不同的流程可能导致重复执行sys_auto_shut_down_enable),修改如下
image

114.AC696X 111 SDK版本使用U盘或者SD卡不能进行跳转升级的问题 20201204 YP

AC696X 音箱111 版本的SDK使用跳转无法升级的问题,或者编译不过的问题,需要做如下修改:
编译不过需要如下更改:
image

不能跳转升级的问题,需要做如下修改,系插入设备升级的时候,蓝牙模块没有关闭导致升级不了,需要如下修改,关闭蓝牙模块,防止ram被修改导致无法升级:
image

补充一点:关于AC696X_V111版本跳转升级的问题,先插入有升级文件的设备开机会导致升级不了的问题,系因为有一些audio dac 模块没有关闭,按以下修改即可:
image

115.AC69系列sdk V111版本无缝循环播放的处理 20201207 YWP

ac696n_soundbox_sdk_v1.1.1版本实现无缝循环播放,如下截图宏FILE_DEC_REPEAT_EN置1.
image

同时循环播放的音乐文件首尾的静音资源要剪切掉,以免干扰无缝播放。
image

如果想要实现一直无缝播放,需要让函数一直返回0,
返回非0,则循环结束

116.AC69系列sdk V111插两驱动类型的(第一驱动类型为光盘模式)U盘死机 20201207 SQ

  1. 目前小机只支持:

  2. MBR分区表引导的磁盘

  3. 分区表中只有一个磁盘分区。

  4. 磁盘格式为:FAT32、exFAT 2)插入windos电脑可以看到U盘的两个驱动类型
    image

  5. 代码修改如下 image

#define MULTI_DISK 1
image

image

#if USB_HOST_SUPPORT_MSD

image

#if MULTI_DISK
u32 total_lun = disk->lun;
#else
u32 total_lun = 1;
#endif
image

/* u32 rx_len = num_lba * disk->capacity[curlun].block_size; */  

u32 rx_len = num_lba * 512; //filesystem uses the fixed BLOCK_SIZE
image

/* u32 tx_len = num_lba * disk->capacity[curlun].block_size; */  
u32 tx_len = num_lba * 512;  //filesystem uses the fixed BLOCK_SIZE  

image

u8 lun = 0;  
ret = get_msd_max_lun(host_dev, &lun);  
if (ret != DEV_ERR_NONE) {​  
    /* disk->dev_status = DEV_IDLE; */  
    /* usb_stor_force_reset(usb_id); */  
    log_error("ret = %d\n", ret);  
    /* return ret; */  
​}  

image

                    if (disk->curlun++ == lun) {​  
                        disk->curlun = 0;  
                    ​}  

image

image

    usb_stor_set_curlun(disk,*(u32*)arg);  

117.AC696系列sdk 1.1.1 麦克风(混响)无法调数字音量解决方法 20201211 LHY

1、调用mic_effect_set_dvol函数(大小0~30)无法调节数字音量的主要是没有初始化数字音量,导致在设置时候直接return
image

118.AC696系列sdk 1.1.1 主机连上手机后,副机发起配对无法连接主机处理方法 20201211 WTS

1、按以下截图修改处理:

image

119. AC696系列 TWS音箱同时按左右两边配对:一边连手机的情况下,配对慢 20201211 LZK

【具体现象】 连接手机的样机相对较难搜到对箱,从而导致配对慢。
【修改方法】 !!注意以下修改:只适用于同时按左右两边配对的配对方式
1,同时按左右两边配对程序配置如下
/* 配对方式选择 /
#define CONFIG_TWS_PAIR_BY_CLICK            0      /
 按键发起配对 /
#define CONFIG_TWS_PAIR_BY_AUTO             1      /
 开机自动配对 /
#define CONFIG_TWS_PAIR_BY_FAST_CONN        2      /
 开机快速连接,连接速度比自动配对快,不支持取消配对操作 */
#define CONFIG_TWS_PAIR_MODE                CONFIG_TWS_PAIR_BY_CLICK

#define CONFIG_TWS_USE_COMMMON_ADDR         0      /* tws 使用公共地址 /
#define CONFIG_TWS_PAIR_ALL_WAY             1      /
 tws 任何时候 链接搜索  */

#define CONFIG_TWS_PAIR_BY_BOTH_SIDES       1       
2,搜索流程修改如下
imageimage

120.AC696N SDK1.1.1 录音模式播放录音文件时插入U盘播歌,再回录音模式播放录音文件时无法播放问题 20201211 LAQ

更新库文件:
链接:https://pan.baidu.com/s/1wpWLxx1jR7IA0gN1_cC0lw
提取码:JLKJ

121.AC696N SDK1.1.1 退出FM之后功耗大 20201214 SQ

image

JL_ANA->WLA_CON3 &= ~(BIT(0) | BIT(17) | BIT(20) | BIT(21));
JL_ANA->WLA_CON4 &= ~BIT(3);
JL_ANA->WLA_CON9 = 0;
JL_ANA->WLA_CON10 = 0;
JL_ANA->WLA_CON13 = 0;

JL_ANA->WLA_CON9 = 0;
JL_ANA->WLA_CON10 = 0;
JL_ANA->WLA_CON13 = 0;

  1. AC696N SDK1.1.1 利用定时器保存音乐断点 20201214 LJW image

  2. AC696N SDK1.1.1 音乐模式下获取播放设备的音乐文件数目 20201214 LJW image

  3. 配置多个唤醒脚时开机唤醒时判断哪个IO唤醒 20201214 xin image

image

  1. SDK1.1.1 开TWS同时开混响有一边音乐断续问题 20201218 WTS

更新库文件:
链接:https://pan.baidu.com/s/1hZZrlezY0Z7ybZsAPi6gSg
提取码:p5an

  1. 软开机有时候需要按几次才能正常开机解决方法 20201218 LHY image

  2. 低电检测报低电提示音后,电压拉高还会继续报提示音解决办法 20201221 LHY image

image

  1. 开机判断是哪个唤醒口唤醒 20201222 xin image

  2. SDK1.1.1实时修改自定义EQ效果的指定频点增益 20201224 SQ 1.确认自定义eq效果注意点
    image

image

2.以修改eq_tab_custom的第二个频点为例
image

#define USER_EQ_LIVE_UPDATE 1//EQ 旋钮实时更新
//BASS 调节第几个索引 USER_EQ_BASS_INDEX
#define USER_EQ_BASS_INDEX 1//不要超出eq 段
//低音
void user_eq_bass_terble_set(int bass,int terble){​
#if (defined (USER_EQ_LIVE_UPDATE) && USER_EQ_LIVE_UPDATE)
eq_tab_custom[USER_EQ_BASS_INDEX].gain = bass<<20;
// eq_tab_custom[USER_EQ_TERBLE_INDEX].gain = terble<<20;

eq_mode_set(EQ_MODE_CUSTOM);  
\#endif  
return;  

​}

  1. 修改任意eq效果的某个频点增益

  2. 把需要修改的eq效果对应的数组复制到eq_tab_custom中然后调用eq_mode_set Eg:
    memcpy(eq_tab_custom,eq_tab_jazz,sizeof(struct eq_seg_info));
    eq_mode_set(EQ_MODE_CUSTOM);

    2)结合 HYPERLINK \l "_111.AC696系列SDK1.1.1_外部EQ文件替换EQ模式中的任" 使用外部eq可以实时设置程序内置6种eq效果+外部eq的任意频点增益

  3. SDK1.1.1对箱功能需要与692x一样 20201224 SQ 692对箱:按键配对、发起配对为主机、非主从切换、主机为L耳
    image

  4. SDK1.1.1打开混响TCFG_MIC_EFFECT_ENABLE这个宏后,使用测试盒进行通话测试会有啸叫的处理方法 20201226 LJW 1.请按如下进行修改,但是有个缺点是通话时不能开混响:
    imageimage

image

image

  1. 如果通话结束后要自动打开混响,请按如下修改: image

image

  1. SDK1.1.1打开linein录音,播放的声音不正常的处理方法 20210104 LJW image

  2. SDK1.1.1麦克风能量获取方法 20210105 LHY 链接:https://pan.baidu.com/s/1n5jmjU4CS6r_2PMCOcx5qA
    提取码:8888

  3. 下载上面代码,对比SDK1.1.1公版程序,修改到自己工程中

  4. 通过下面函数去获取麦克风能量值 image

  5. SDK1.1.1 的SD选择C组、CMD检测,录音设备为SD卡时,录音时SD卡会掉线的处理方法 20210108 LJW 有以下三种处理方法:

  6. 将CMD检测改为CLK检测; image

  7. 关掉MIC的内部偏置PA2,使用外部偏置;

  8. MIC使用省电容的方式;

  9. SDK 1.2.0 linein为DAC进使用打断方式播放提示音,一直有linein背景音 20210112 SQ image

  10. //linein PP 状态记录 与查询返回

  11. bool user_comm_linein_status(u8 cmd){​

  12. static bool _status_ = 1;
    
  13. if(1 == cmd){​
    
  14.     _status_ = cmd;
    
  15. ​}else if(!cmd){​
    
  16.     _status_ = 0;
    
  17. ​}
    
  18. return _status_;
    
  19. ​}

image 148. 149. user_comm_linein_status(linein_get_status()); image

void user_lienin_tone_play_check(void *priv){​
#if 1//(defined(USER_TONE_PLAY_MODE) && USER_TONE_PLAY_MODE)

u16 *id = (u16 *)priv;  
bool tone_status_cur = 0;  
static bool tone_status_old = 0;  
static u32 timer_flag = 0;  

if(!app_check_curr_task(APP_LINEIN_TASK) || !priv){​  
    if(priv){​  
        *id = 0;  
    ​}  
    return;  
​}  

tone_status_cur = (TONE_START == tone_get_status())?1:0;  

if(tone_status_old != tone_status_cur){​  
    if(!tone_status_old && tone_status_cur){​//开始播放提示音  
        if(linein_get_status()/*user_linein_status(0xff)*/){​  
            linein_stop();  
        ​}  
        r_printf("tone status=%x old=%x",tone_status_cur,tone_status_old);  
        tone_status_old = tone_status_cur;  
    ​}else if(tone_status_old && !tone_status_cur){​//提示音播放结束  
        if(!timer_flag){​  
            timer_flag = timer_get_ms();  
        ​}  

        if(timer_get_ms()-timer_flag>=900){​//延时一段时间后打开  
            if(user_linein_status(0xff) && !linein_get_status()){​  
                r_printf("user linein start");  
                linein_start();  
            ​}  

            r_printf("1111 tone status=%x old=%x",tone_status_cur,tone_status_old);  
            tone_status_old = tone_status_cur;  
            timer_flag = 0;  
        ​}  
    ​}  
​}  


*id = sys_hi_timeout_add(id,user_lienin_tone_play_check,tone_status_cur?10:50);  

#endif
​}

void user_lienin_tone_play_check_en(u8 cmd){​
#if 1//(defined(USER_TONE_PLAY_MODE) && USER_TONE_PLAY_MODE)
bool check_en = 0;
static u16 linein_check_id = 0;

if(1 == cmd){​  
    check_en = cmd;  
​}else if(0 == cmd){​  
    check_en = cmd;  
​}else{​  
    return ;  
​}  


if(check_en){​  
    if(!linein_check_id){​  
        linein_check_id = sys_hi_timeout_add(&linein_check_id,user_lienin_tone_play_check,10);  
    ​}  
​}else{​  
    if(linein_check_id){​  
        sys_s_hi_timeout_del(linein_check_id);  
        linein_check_id = 0;  
    ​}  
​}  
\#endif  

​}

135.AC696X V111版本的SDK对箱配对后来电接听近端无声音的问题 20210121 YP

关于AC696X 音箱SDK V111版本,在关闭打印后,对箱配对后,来电接听电话,会出现近端没有声音的情况,系因为接听的时候,dac这端没有数据流,导致audio dac挂起了,没有恢复的地方,导致近端没有声音,可以按照如下修改:
image

136.AC696X V111版本的SDK 连接手机后,无法控制手机拍照的处理方法 20210126 LJW

image

image

  1. AC696X SDK121 暂停播放提示音20210309 XNW void tone_dec_list_pp(struct tone_dec_handle *dec)
    {​
    if(dec)
    {​
    if(dec->dec_file)
    {​
    audio_dec_app_pp(dec->dec_file->dec);
    ​}
    if(dec->dec_sin)
    {​
    audio_dec_app_pp(dec->dec_sin->dec);
    ​}
    ​}
    ​}

void tone_play_pp(void)
{​
tone_dec_list_pp(tone_dec);
​}

image

  1. AC696X V121版本的SDK 遥控功能和收音功能同时开异常处理方法 20210311 lzk 解决办法:由于新SDK优化了FM:当打开数码管UI宏后是把显示的代码放在timer5里面跑,此时跟红外使用的timer5 冲突引起。
    处理方法:把红外的timer5改为 timer3
    INCLUDEPICTURE \d "https://tcs.teambition.net/thumbnail/3123014f8e2dba8fb1cb918b34483e80e530/w/800/h/230" * MERGEFORMATINET 
    image 
    INCLUDEPICTURE \d "https://tcs.teambition.net/thumbnail/3123723f090e473f78ebc0e57e00ee1330f3/w/800/h/283" * MERGEFORMATINET 
    image 

  2. AC696X V020版本的SDK 普通包关TWS,设置立体声输出,通话结束后会复位的处理方法 20210317 LJW 更新库文件:
    链接:https://pan.baidu.com/s/14MUby8KwRVD4HnN14dm8xw
    提取码:8888

  3. AC696X V020版本的SDK 设置立体声输出,播左右声道歌曲后DAC没有声音或声音变小的处理方法 20210317 LJW image

141.AC6965 系列设置 DAC 管脚高阻态 20210326 YWP

/*
ch: FL:BIT(0) FR:BIT(1) RL:BIT(2) RR:BIT(3)
例如:BIT(0)是 FL 左声道, BIT(1)是 FR 右声道, FLR BIT(0)|bit(1)是立体声
MUTE:1:MUTE 0:UNMUTE
*/
void audio_dac_mute_ch(u8 ch, u8 mute)
{​
if (mute) {​
JL_ANA->DAA_CON1 &= ~((ch & 0x3) << 10);
JL_ANA->DAA_CON1 &= ~((ch & 0x3) << 13);
​} else {​
JL_ANA->DAA_CON1 |= ((ch & 0x3) << 10);
JL_ANA->DAA_CON1 |= ((ch & 0x3) << 13);
​}
​}

142.AC696N系列的左右调反实现 20210402 YWP

本文档介绍有两种方式,针对2Mbit的应用和非2Mbit的DAC左右声道的调反应用。
第一类:针对非2Mbit包的DAC数据处理
这里适用于所有解码的左右声道调反。
int ops_lr(void priv, struct audio_data_frame in)
{​
    s16 f_lr; 
    s16 tmp_l,tmp_r;
    u16 rlen;
    u32 len=0;
    putchar('h');
//  if((in->data_len- in->offset)>0)
    {​
        f_lr = in->data;// + in->offset/2;
        len = in->data_len;// - in->offset;
        
        rlen = len>>2;  ////u8
4
        for(u16 i=0; i<rlen; i++) ///lrlrlr......
        {​
            tmp_l = f_lr[i
2];
            tmp_r = f_lr[i
2+1];
            f_lr[i2] = tmp_r;
            f_lr[i
2+1] = tmp_l;
            
        ​}
    ​}
    return len;
​}

image

    struct __stream_entry *enage_ll;
    enage_ll = stream_entry_open(&mixer, ops_lr, 0);
    entries[entry_cnt++] = &enage_ll->entry;
image

image

    if (hdl->data_callback) {​
        // return hdl->data_callback(hdl->data_priv, in);
        if((in->offset)==0)
        {​
            return hdl->data_callback(hdl->data_priv, in);//(hdl->data_priv, in->data + in->offset/2, in->data_len - in->offset);
        ​}
    ​}
第二类:针对2M包应用的解码数据左右通道的调反
这里进介绍a2dp蓝牙解码的处理案例。
int ops_lr_bt(void priv, struct audio_data_frame in)
{​
    s16 f_lr; 
    s16 tmp_l,tmp_r;
    u16 rlen;
    u32 len=0;
    // putchar('h');
    {​
        f_lr = in->data;//+ in->offset/2;
        len = in->data_len;// - in->offset;
        
        rlen = len>>2;  ////u8
4
        for(u16 i=0; i<rlen; i++) ///lrlrlr......
        {​
            tmp_l = f_lr[i
2];
            tmp_r = f_lr[i
2+1];
            f_lr[i2] = tmp_r;
            f_lr[i
2+1] = tmp_l;            
        ​}
    ​}
    return len;
​}

static int sbc_dec_data_handler(struct audio_stream_entry *entry,
                                 struct audio_data_frame *in,
                                 struct audio_data_frame *out)
{​
    struct audio_decoder *decoder = container_of(entry, struct audio_decoder, entry);
    struct a2dp_decoder *a2dp_dec = container_of(decoder, struct a2dp_decoder, decoder);
    struct a2dp_dec_hdl *dec = container_of(a2dp_dec, struct a2dp_dec_hdl, dec);
    if(dec->remain==0){​
        ops_lr_bt(NULL, in);
    ​}

    decoder->process_len =0;
    audio_stream_run(&decoder->entry, in);

    int wlen = decoder->process_len;
    if (in->data_len != wlen) {​
        dec->remain = 1;
    ​} else {​
        dec->remain = 0;
    ​}
    return wlen;
​}

image

    dec->dec.decoder.entry.data_handler = sbc_dec_data_handler;

image

image

struct a2dp_dec_hdl {​
    struct a2dp_decoder dec;        // a2dp解码句柄
    struct audio_res_wait wait;     // 资源等待句柄
    struct audio_mixer_ch mix_ch;   // 叠加句柄
    struct audio_stream *stream;    // 音频流
    struct audio_eq_drc *eq_drc;    //eq drc句柄
#if AUDIO_EQUALLOUDNESS_CONFIG
    equal_loudness_hdl *loudness;   //等响度句柄
#endif
#if AUDIO_SURROUND_CONFIG
    surround_hdl *surround;         //环绕音效句柄
#endif
#if AUDIO_VBASS_CONFIG
    vbass_hdl *vbass;               //虚拟低音句柄
#endif
    struct audio_wireless_sync *sync;
#if TCFG_USER_TWS_ENABLE
    u8 closing;
    u8 preempted;
    u8 slience;
    int slience_time;
    u32 slience_end_time;
    struct audio_stream_entry *slience_entry;
#endif
    u8 remain;
​};

143.AC696Nmusic模式下文件解码成功后保存断点时没有清除“时间”信息 20210412 SQ

背景:

  1. 切出music模式保存“时间”信息
  2. 切换歌曲保存“歌曲”信息 现象:
    a)A文件播放到N秒拔出卡切换到其他模式
    b)插卡进music之后上下曲进行切歌 此时播放到B文件的第X秒,样机断电
    c)样机重新上电,插卡进music播歌,此时会从B文件的第N秒播放

正常情况 会从B文件的第0秒播放

修改方法:
在music_player.c中的 music_player_get_playing_breakpoint 中添加红色部分代码
bool music_player_get_playing_breakpoint(struct __breakpoint *bp, u8 flag)
{​
    if (__this == NULL || bp == NULL) {​
        return false;
    ​}

  int data_len = bp->dbp.data_len;
  memset(bp, 0, sizeof(struct __breakpoint) + data_len);
  bp->dbp.data_len = data_len;
  ......
  ......
  ......
​}

  1. ac696n_soundbox_sdk_v1.2.0只能获取到DAC_L能量的问题 20210413 YP ac696n_soundbox_sdk_v1.2.0在使用获取能量的时候只能获取到DAC_L的能量值,不能获取到DAC_R的能量值,系SDK存在的bug,SDK默认只获取了DAC_L的能量值,可以做如下修改:
    image

  2. 696n_sdk_v122 控制PA1脚(MIC脚)电平状态,AUX输入没有声音 20210419 WGH 使用gpio_direction_output的接口控制PA1脚电平状态,底层会调用audio_adc_mic_ctl(u8 mode)接口。调用这个接口会影响芯片ADC功能,目前仅测试会影响AUX的数字功能,其他的没有经过测试。若想要控制PA1脚的电平,可以使用操作寄存器的方法控制。
    INCLUDEPICTURE \d "C:\Users\SPC20-025\Documents\Tencent Files\1761665213\Image\C2C\]2U0K6%CDX6P)$2)CXG0Q.png" * MERGEFORMATINET 
    image 

  3. 使用MIC脚做普通IO的注意事项 WGH 通常使用MIC脚做普通IO会根据AC696N MIC 脚当普通IO口注意事项.pdf来设置,不过这个文档里面会调用audio_adc_mic_ctl(u8 mode)接口,会导致出145点问题。
    利用打印 (JL_SYSTEM->CHIP_ID & 0xF) 可以查看晶圆版本,E版本一下(数值<4)的芯片,不建议客户使用MIC脚做普通IO使用,存在漏电风险。E版本及以上(数值=>4)的芯片,可以将PA1做为普通IO使用。
    image

  4. AC696X V122版本的SDK音频文件属性不勾选“可以存档文件”的不能播放的问题

20210430 LJW

image

请替换库
链接:https://pan.baidu.com/s/1wzX7sVVFiy1KgFqzA4T5Xg
提取码:8888
148. AC696X V122版本的SDK打开设备提示音,插SD卡再插U盘有啧啧声的问题

20210430 LJW

请替换文件:
链接: HYPERLINK "https://pan.baidu.com/s/1XCh9OlSz6iIQasheuSwRAQ" https://pan.baidu.com/s/1XCh9OlSz6iIQasheuSwRAQ
提取码:8888
image

image

  1. AC696X V122版本的SDK插U盘播歌速度变快的问题处理 20210430 LJW 替换文件
    链接:https://pan.baidu.com/s/1U1sA9qunaIs1888QqMS2_A
    提取码:8888

  2. AC696X 音箱工程V123版本安卓手机不能拍照或者手机回连后不能拍照 20210430 XNW 问题的原因:安卓版本的HID协议没连上
    修改方法:将hid_conn_depend_on_dev_company = 1;改从hid_conn_depend_on_dev_company = 0;
    按照这个改了后,如果出现关安卓手机蓝牙,再开安卓手机蓝牙,手机回连后,拍照无作用,在蓝牙连接成功的收,在发一个HID 连接的命令修改如下图:
    INCLUDEPICTURE \d "C:\Users\SPC20-004\Documents\Tencent Files\2744265097\Image\C2C\8Z1TWH]BR[VW7QJ~@Y95U51.png" * MERGEFORMATINET 
    image

  3. AC696X 音箱工程V0.2.6、1.1.1有概率出现软关机功耗大 20210506 LHY 解决方法:替换cpu.a库
    链接: HYPERLINK "https://pan.baidu.com/s/1B0acGhrt_R0a_k4fPPcLHQ" \t "_blank" https://pan.baidu.com/s/1B0acGhrt_R0a_k4fPPcLHQ
    提取码:8888

  4. AC696X 音箱工程V1.2.3部分手机不能拍照--红米K30 20210513 XNW 解决方法:替换一个库文件
    连接: HYPERLINK "https://pan.baidu.com/s/1NbimZQqdKnvPWoZxvUJs-A" \t "_blank" https://pan.baidu.com/s/1NbimZQqdKnvPWoZxvUJs-A
    提起吗:8888

  5. AC696X 音箱工程V1.2.3U盘和TF卡复用,一直切设备,某些U盘会掉线的处理方法 20210513 LJW image

  6. 在主控的flash中存放N个文件,读取这些文件需要的时间有很大的差异 20210514 SQ 原因:与文件系统有关。
    处理方法:把文件放在不同的文件夹中
    问题:
    image

image

程序中修改:
image

image

  1. AC696x 1.2.2sdk串口通信接收数据时产生一次中断之后,接下来接收数据异常 20210514 SQ 原因:产生rx中断之后没有清除对应的 rx pnd导致
    程序修改:
    image

image

image

image

  1. ac696n_soundbox_sdk_v1.3.0 开启串口test功能会复位问题 20210611 YP

ac696n_soundbox_sdk_v1.3.0 开启串口test功能会复位问题系串口有注册事件处理事件,公用别人的事件使用,在开机的时候有冲突,会导致一直复位问题。

可以如下修改:
方法1:
直接修改事件类型:不是用相同的事件类型
SYS_EVENT_HANDLER(SYS_DEVICE_EVENT, uart_event_handler, 0);
image

改成touch_event 或者其他没有用到的事件类型

SYS_EVENT_HANDLER(SYS_TOUCH_EVENT, uart_event_handler, 0);
image

方法2:
image

//设备事件响应demo
static void uart_event_handler(struct sys_event *e)
{​
    const uart_bus_t *uart_bus;
    u32 uart_rxcnt = 0;
    struct device_event *usr_dev = &e->u.dev;

    printf("---%s,usr_dev->event = %d   value = %d\n",func,usr_dev->event,usr_dev->value);
    switch(usr_dev->event){​

    case DEVICE_EVENT_CHANGE:
        r_printf("-----%s,DEVICE_EVENT_CHANGE\n",func);
        if (!strcmp(e->arg, "uart_rx_overflow")) {​

            uart_bus = (const uart_bus_t *)e->u.dev.value;
            uart_rxcnt = uart_bus->read(uart_rxbuf, sizeof(uart_rxbuf), 0);
            if (uart_rxcnt) {​
                printf("get_buffer:\n");
                for (int i = 0; i < uart_rxcnt; i++) {​
                    my_put_u8hex(uart_rxbuf[i]);
                    if (i % 16 == 15) {​
                        putchar('\n');
                    ​}
                ​}
                if (uart_rxcnt % 16) {​
                    putchar('\n');
                ​}
                uart_bus->write(uart_rxbuf, uart_rxcnt);
            ​}
        ​}
        if (!strcmp(e->arg, "uart_rx_outtime")) {​
            uart_bus = (const uart_bus_t *)e->u.dev.value;
            uart_rxcnt = uart_bus->read(uart_rxbuf, sizeof(uart_rxbuf), 0);
            if (uart_rxcnt) {​
                printf("get_buffer:\n");
                for (int i = 0; i < uart_rxcnt; i++) {​
                    my_put_u8hex(uart_rxbuf[i]);
                    if (i % 16 == 15) {​
                        putchar('\n');
                    ​}
                ​}
                if (uart_rxcnt % 16) {​
                    putchar('\n');
                ​}
                uart_bus->write(uart_rxbuf, uart_rxcnt);
            ​}
        ​}
        break;
    default:
        g_printf("---other event ----\n");
        break;
    ​}

​}

  1. ac696n_soundbox_sdk_v1.2.3对箱配对后无法连接其他对箱解决方法 20210623 LCP image

157.ac696n_soundbox_sdk_v1.3.0 linein走ADC,并复用fm引脚,使用省电容接法时,进linein出来后,麦声音变得很小解决方法 20210623 LCP

image

158. ac696n_soundbox_sdk_v1.1.1 TWS非公共mac地址,去除配对限制 20210726 SQ

现象:tws配对最后 如果想哪其中一个与其他机子配对 出现不能配对,需要删除tws配对信息之后才能配对

程序修改
#define USER_TWS_DISCONNECTED_REMOVE    1//解除tws配对限制    公版sdk tws 没有解除配对就不能重新配对

imageimage

image

159. 公版V1.3.0sdk2M板级配置关掉eq之后打入电话长时间响铃死机 20210702 SQ

复现配置:  

#define CONFIG_BOARD_AC696X_BTBOX
#define TCFG_EQ_ENABLE 0 //支持EQ功能,EQ总使能
修改方法:修改函数的实现、修改时钟
1)修改函数的实现
//修改文件audio_dec_bt.c

//修改前
static void esco_dec_out_stream_resume(void *p){​
struct esco_dec_hdl *dec = (struct esco_dec_hdl )p;
audio_decoder_resume(&dec->dec.decoder);
​}
void esco_rx_notice_to_decode(void){​
if (bt_esco_dec && bt_esco_dec->dec.start) {​
/
audio_decoder_resume(&bt_esco_dec->dec.decoder); */
if (bt_esco_dec->dec.wait_resume) {​
bt_esco_dec->dec.wait_resume = 0;
audio_decoder_resume(&bt_esco_dec->dec.decoder);
​}
​}
​}

//修改后
static void esco_dec_out_stream_resume(void *p){​
struct esco_dec_hdl *dec = (struct esco_dec_hdl *)p;
​}
void esco_rx_notice_to_decode(void){​
if (bt_esco_dec && bt_esco_dec->dec.start) {​
audio_decoder_resume(&bt_esco_dec->dec.decoder);
​}
​}
2. 修改时钟 //修改文件clock_manager.c

//修改前
{​ AEC16K_ADV_CLK, (50), "AEC16K_ADV_CLK " ​},
//修改后
{​ AEC16K_ADV_CLK, (80), "AEC16K_ADV_CLK " ​},

160. 1.2.2SDK定时器使用注意点 20210702 SQ

sys_hi_timeout_add、sys_s_hi_timerout_add区别  
sys_hi_timeout_add:usr_timeout_add(a, b, c, 1) 在中断中执行  

sys_s_hi_timerout_add:usr_timeout_add(a, b, c, 0)在任务中执行

  1. sd卡sd_io_suspend、sd_io_resume接口参数 20210702 SQ
    u8 sd_io_suspend(u8 sdx, u8 sd_io);
    u8 sd_io_resume(u8 sdx, u8 sd_io);
    sdx : 0:sd0 1:sd1 sd_io : 0:CMD脚 1:CLK脚 2:DAT脚

162. 1.2.2SDK 读U盘txt文件案例 20210702 SQ

\#define USER_READ_DEV   "udisk0"//"sd0" "sd1" 其他设备名参考dev_reg.h  
\#define USER_READ_FILE_NAME "1.TXT"  
\#define USER_READ_FILE_BUF_SIZE (512)      
  
char user_file_path[48] = {​0​};  
const char user_file_name[] = USER_READ_FILE_NAME;      

struct __dev *dev = dev_manager_find_spec(USER_READ_DEV, 0);  
if(!dev){​  
    r_printf("dev_manager_find_spec error");  
    return;  
​}  
sprintf(user_file_path, "%s%s", dev_manager_get_root_path(dev), user_file_name);  

r_printf("read file path=%s",user_file_path);  
FILE *fd = fopen(user_file_path, "r");  
if (!fd) {​  
    r_printf("open %s file err!!!\n",user_file_path);  
    return ;  
​}  

u8 buf[USER_READ_FILE_BUF_SIZE]={​0​};  
u8 len;  
len = fread(fd, buf, sizeof(buf));  
r_printf("read file len %d",len);  

r_printf("read file data %s",buf);  

fclose(fd);  
//sys_hi_timeout_add  
sys_s_hi_timerout_add(NULL,user_file_read_test,1000);   

​}

  1. 1.2.3 SDK 打开TWS跳转升级无法维持IO电平 20210702 lzk 替换btctrler.a文件,下载地址如下
     HYPERLINK "https://audiodoc.notion.site/IO-8208aad74df045a0b172f3cf5ce18021" https://audiodoc.notion.site/IO-8208aad74df045a0b172f3cf5ce18021
    跳转升级具体修改
    image

  2. 1.3.0 MCU uart串口升级注意事项 20210705 HJY uart_update.c文件中删除多余代码。
    image

配置文件修改:
image

对应的板级.c文件中可修改升级管脚
image

  1. AC696音箱 TWS配对慢优化方法 20210705 LZK 可以减少蓝牙空闲状态时间。
    方法如下:
    image

SDK默认值为1600(时间实际为 1600*0.625ms),建议修改为200。该值最小为100,注意不能使用低功耗适用于音箱对功耗要求不高的产品使用。
166. ac696n_soundbox_sdk_v1.2.1-v1.3.0 蓝牙开混合录音WAV格式 ,录音音频出现卡音问题 20210707 WGH image

从打印上看会打印~,是写PCM cbuf时候返回0。
image

修改点:
Audio_enc_file.c

image

image

image

  1. ac696n_soundbox_sdk_v1.2.2-v1.3.0 对箱TWS通话有回音,噗噗声,卡顿问题 20210805 WGH image

  2. ac696n_soundbox_sdk_v1.2.2-v1.2.3 系统音量选择独立通道数字音量,播放提示音低概率复位问题 20210805 WGH V130版本已修复该问题
    image

  3. ac696n系列耳机工程,如果用外置触摸,触摸通过主控的IO口供电,测试盒串口升级,升级到70%,又重新升级问题修改方法 20210810 XNW 问题的原因:在串口升级过程中,给触摸供电的IO口输出低,导致触摸一直给主控的PB1输出一个3.3平,导致主控8秒复位
    修改方法:在INI文件中设置触摸的供电脚在升级过程中给触摸正常供电
    image

注意:这样改后,触摸的供电口任然有1.6秒的输出低,但不会触发8秒复位功能。

  1. AC696X AUX输入信号没有大于1.2V,但DAC输出问题处理 20210811 WTS 公版SDK把AUX增益默认配置为放大6db,可以适当调小(1级为2db):
    image

  2. AC6969D芯片使用内置flash录音修改文件 20210823 LCP 网盘文件对比608_1.2.1_SDK修改
    链接: HYPERLINK "https://pan.baidu.com/s/1QvCiSvV6dQgVt7ESEBjCng" \t "_blank" https://pan.baidu.com/s/1QvCiSvV6dQgVt7ESEBjCng
    提取码:6666

  3. AC696X SDK130 对箱配对上后想保持音箱都输出立体声修改方法 20210824 WTS 在audio_dec_bt.c 中重定义以下函数:
    image

代码内容:

extern const int audio_tws_auto_channel ;
extern const int CONFIG_BTCTLER_TWS_ENABLE ;

void a2dp_dec_set_output_channel(struct a2dp_decoder *dec)
{​
int state;
enum audio_channel ch_type = AUDIO_CH_DIFF;

u8 channel_num = dec->output_ch_num;//audio_output_channel_num();  

// printf("\n---channel_num = %d --\n",channel_num);

if ((channel_num == 2) || (channel_num == 4)) {​  
    ch_type = AUDIO_CH_LR;  
    if (!AUDIO_CH_IS_MONO(dec->output_ch_type)) {​  
        ch_type = dec->output_ch_type;  
       // printf("\n-11--ch_type = %d---\n",ch_type);  
    ​}  
​} else {​  
    if (AUDIO_CH_IS_MONO(dec->output_ch_type)) {​  
        ch_type = dec->output_ch_type;  
    ​}  
​}  

if (CONFIG_BTCTLER_TWS_ENABLE && audio_tws_auto_channel) {​  
    state = tws_api_get_tws_state();  
    if (state & TWS_STA_SIBLING_CONNECTED) {​  
        if (channel_num == 1) {​  
            ch_type = tws_api_get_local_channel() == 'L' ? AUDIO_CH_L : AUDIO_CH_R;  
        ​} else if (channel_num == 2) {​  

           // ch_type = tws_api_get_local_channel() == 'L' ? AUDIO_CH_DUAL_L : AUDIO_CH_DUAL_R;  
           ch_type = tws_api_get_local_channel() == 'L' ? AUDIO_CH_LR : AUDIO_CH_LR;  

            //printf("\n----22------ch_type = %d -------\n",ch_type);  
        ​}  
    ​}  
​}  

if (ch_type != dec->ch_type) {​  
    log_i("Set decode channel: %d\n", ch_type);  
    int ret = audio_decoder_set_output_channel(&dec->decoder, ch_type);  
    dec->ch = AUDIO_CH_IS_MONO(ch_type) ? 1 : 2;  

    //printf("\n---------------dec->ch = %d-----------------\n",dec->ch);  

    if (ret == 0) {​  
        dec->ch_type = ch_type;  
    ​}  
​}  

​}

  1. 音箱工程V1.3.1版本SDK在连接上TWS后播歌时不断拨打挂断几次后有概率出现从箱无声音A2DP链路切换不成功的问题 20210830 MJW 问题描述:
    在开启TWS功能,对箱完成并连接手机,手机一直播歌,然后打微信语音电话或者拨号通话,只拨打不接听,反复拨打挂断拨打挂断7~10次,会有概率出现从箱没有音乐声出来,只有主箱有声音,但是此时确实是在tws状态。
    解决方法:替换btctrler.a库
    链接:https://pan.baidu.com/s/134nVtdwFkV3cNiqcjSDMwA
    提取码:8888
  2. 注意!!注意!!量产程序需要关掉异常中断!!注意!!注意 20210907 LHY

image

  1. AC696音箱蓝牙发射器和接收器之间进行对讲的demo 20211028 FSW

注意user_send_cmd_prepare(接收器用)和user_emitter_cmd_prepare(发射器用)!!!!!!!!!!!!!
打开AG
image

启动和结束
image

自动接听
image

  1. AC696 0.2.0耳机SDK版本 使用联合音量对箱后出现左右耳音量不同步解决方法 20211109 LHY

image

image

image

  1. AC696 耳机SDK版本 使用mic_rec_play_start()测试mic无声的解决方法 20211110 FSW 按照下图修改
    image

  2. AC696 音箱1.5.0 SDK版本 Linein走数字通道Automute不起作用 20220211 SQ

https://kdocs.cn/l/ceB5MK3Mz7Hz
代码修改:
image

image

  1. 替换media_app.a库
  2. 修复automute linein模式下获取能量值 值不对的问题
  3. 添加更新automute参数的接口 image
  4. 新增接口使用案例: image

image

  1.  HYPERLINK \l "_Toc87885876" AC696 音箱1.5.0 或者之前的SDK版本包括695的音箱SDK出现 Linein检测有概率出现检测不了拔出 20220114 MJW 解决办法增加如下截图代码:
    image

  2. AC696N_soundbox_sdk_release_1.4.0 SDK 配成单声道会出现声音破音,波形失真 LZK 单声道需要把以下变量置1
    const int config_pcm_dual_to_dual_or_single_half_en = 1; // 左右声道叠加除2使能

181. AC696耳机SDK020 开立体声时,通话前20S左右远端听不到声音处理方法 20201201 WTS

请按以下网盘资料处理:
链接:https://pan.baidu.com/s/1w_KbBfa-yFGCjV__BFRPDA
提取码:jiel

  1. AC696_earphone_v030版本SDK添加连接确认功能 ---YP 20220506 AC696_earphone_v030版本SDK添加连接确认功能,需要更新蓝牙库,然后上层修改如下:
    image

库文件获取:
链接:https://pan.baidu.com/s/1AkhKEVAizfbiABG9T8qX4w
提取码:ZHJL

182. AC696 音箱SDK 使用ANCS功能

image

image

183.695V310以及旧版本SDK 当歌曲内容恰好存放于设备地址的底部,播放歌曲会异常退出设备 20220614 WGH

修改以下文件:apps\common\usb\host\usb_storage.c
image

image

184.AC696 1.3.3SDK 打开人声消除的宏定义,声音失真

声音输入声音叠加后导致失真
INCLUDEPICTURE \d "https://www.kdocs.cn/api/v3/office/copy/UDF4OW1JVWMrbnJmN0l3RmhGZFNpR0hMRWxobHNpa2c3OVlveFU2Ly9vNGxJTU9maU1yM0c0L2REQWZSMVZKalQrYVdhaHRNNFI0bDlpZXlVaUpYdkxKVzNTdVZFaC9GNmVSSDV3RGdYY0NBRXV1ekVST3ZNRHNjaUoydW11USs0NkJDbFB5Vk54cUZtUms4UE5hTkgrZGRQVVFBQzBDekJIVnN1UHBIOGFJS04ybng3VklRZzZTVjNEOUtJL0pVVzZpMnNOc2ozQXVwTDAwZlJ4Yz0=/attach/object/NMVHSAQAEY" * MERGEFORMATINET 
image 
修改方法:
替换media.a库
 HYPERLINK "https://kdocs.cn/l/cpuaFfVVIHVq" \t "_Blank" 【金山文档】 双变单转换默认除2_ac696n_soundbox_sdk_v1.3.3_media
185. ac696n_sdk_release_v0.3.0 SDK VIVO手机连接打开SIRI蓝牙断连问题

需更新media.a库,百度网盘连接如下:

链接:https://pan.baidu.com/s/1gf_XuJrK_O9URjMbeuDIwA
提取码:id39
image

  1. AC696X AUX 输入信号有效值没有超过600MV,但从DAC输出出现失真问题处理 -------20220705 WTS 1、如果AUX走的模拟通道,把AUX模拟增益调到0:
    image

2、如果AUX走的是AD采样通道,请将采样初始化时的AUX增益调到0:

image

  1. AC696X_170SDK 使用默认DEMO板级调式或烧录出的样机蓝牙MAC地址变成固定(没有随机生成)问题-------20220709 LZK 处理方法:
    1、预定义 CONFIG_TWS_COMMON_ADDR_SELECT宏:
    image

2、APP_PROTOCOL_DMA_CODE 这个宏不带APP时,把它设置为 0 

image

  1. AC696X_170SDK或者打漏电补丁后,某些IO无法输出打印信息(DP,DM,PC4等) WGH static u16 debug_io_dir = 0;
    static u16 debug_io_die = 0;
    static u16 debug_io_dieh = 0;
    static u16 debug_io_pu = 0;
    static u16 debug_io_pd = 0;
    static const u32 gpio_regs[] = {​
        (u32) JL_PORTA,
        (u32) JL_PORTB,
        (u32) JL_PORTC,
        (u32) JL_PORTD,
    ​};
    int debug_io_status_save(u32 gpio)
    {​
        if (gpio > IO_PORT_MAX) {​
            return -EINVAL;
        ​}
        struct gpio_reg *g;
        u32 mask;
        if (gpio >= IO_MAX_NUM) {​
            gpio = gpio - USB_IO_OFFSET - IO_MAX_NUM;
            debug_io_dir = (JL_USB_IO->CON0 & BIT(gpio + 2));
            debug_io_pd = (JL_USB_IO->CON0 & BIT(gpio + 4));
            debug_io_pu = (JL_USB_IO->CON0 & BIT(gpio + 6));
            debug_io_die = (JL_USB_IO->CON0 & BIT(gpio + 9));
            debug_io_dieh = (JL_USB_IO->CON0 & BIT(gpio + 13));
            return 0;
        ​}
        g = (struct gpio_reg *)gpio_regs[gpio / IO_GROUP_NUM];
        if (!g) {​
            return -EINVAL;
        ​}
        mask = BIT((gpio) % IO_GROUP_NUM);
        debug_io_dir = (g->dir & mask);
        debug_io_die = (g->die & mask);
        debug_io_dieh = (g->dieh & mask);
        debug_io_pu = (g->pu & mask);
        debug_io_pd = (g->pd & mask);

    return 0;
​}
void debug_io_status_post(u32 gpio)
{​    gpio_set_direction(gpio, debug_io_dir);
  gpio_set_die(gpio, debug_io_die);
    gpio_set_dieh(gpio, debug_io_dieh);
    gpio_set_pull_up(gpio, debug_io_pu);
    gpio_set_pull_down(gpio, debug_io_pd);
​}

将代码放在下面修改:
image

  1. AC696n_earphone_v0.2.0 设置立体声通话有整句回音处理方法 20220714---- WTS 打以下补丁:

【金山文档】 ac696n_earphone_v0.2.0_立体声通话回音消除加G板补丁
https://kdocs.cn/l/ce3hCT9oD2Jd

  1. AC696n_earphone_v1.7.0 替换eq_cfg_hw.bin的正确位置 20220815---- WGH 鉴于许多客户反馈695V310和696V170版本说替换eq_cfg_hw.bin无效问题,在此说明的原因,和解决方法。
    原因:
    695V310和696V170 添加了新音效,tool文件夹目录下的download.c文件做了更改,会对tools\effect_file文件夹下.bin文件做文件拷贝的动作。
    image

最后执行到每个.bat批处理文件后,会对tool文件夹下eq_cfg_hw.bin进行拷贝,作为下载进flash的资源文件,所以会出现替换tool文件夹下的eq_cfg_hw.bin无用的现象等。
image

解决方法:
根据不同的宏定义,替换相应的bin文件,比如默认的需要修改music_base.bin
image

191.AC696n_soundbox_sdk_v1.2.2做TF和U盘共用, 播放TF的提示音时插入U盘有概率不能识别U盘 20220907---- FS

解决方案:
dev_multiplex_api.c文件中,mult_usb_mount_before(usb_dev usb_id)函数,
删除 if (mult_flag.active == SD_ACTIVE)判断,如图:
INCLUDEPICTURE \d "C:\Users\SPC20-~1\AppData\Local\Temp\ksohtml\wps948F.tmp.jpg" * MERGEFORMATINET 
image

192.AC696N_soundbox_sdk_1.7.0 ADC电池电压采样波动大,通话过程中采样波动大的问题,通话过程中VDDIO档位变化,未跑正常流程问题 CYL

解决办法:注释或去除adc_api.c中adc_scan函数中的的部分程序,如下图
image

193.696系列030、031版本SDK叠加播放sin提示音会打断音乐问题处理办法 20220930 FSW

log上会发现如下差异
image

修改方法是提高播歌系统时钟,如下图
image

194.696_1.7.0_sdk开混响+混合录音出现混响和录音文件变调问题(开混响无法正常录音同下) 20221026 LCP

对比此文件以及公版1.7.0_sdk修改:
链接: HYPERLINK "https://pan.baidu.com/s/1EfkKx7adHwKdZT4Wq56Mbg" \t "_blank" https://pan.baidu.com/s/1EfkKx7adHwKdZT4Wq56Mbg 提取码:8888

194.696_1.7.0_sdk ADKEY复用SPI或者其他复用后,概率会出现读AD值的时候出现65535的值 20221130 lzk

原因:AD采样有概率被打断导致复用判断调节无法正常退出
image

195 音乐模式读取歌曲名称异常:获取u盘歌曲名称的时候,有一首特定的歌曲读取文件名的时候少了MP3里面的3(也就是xxxx.mp3只读到xxxx.mp) 20230307 ZGH

image

const int FATFS_WRITE = 1; // 控制fatfs写功能开关。
const int FILT_0SIZE_ENABLE = 1; //是否过滤0大小文件
const int FATFS_LONG_NAME_ENABLE = 0;
const int FATFS_RENAME_ENABLE = 0;
const int FATFS_FGET_PATH_ENABLE = 0;
const int FATFS_SAVE_FAT_TABLE_ENABLE = 1;

替换system.a库 HYPERLINK "https://kdocs.cn/l/cdjv5u1t7H6D" 【金山文档】 system_AC696x_150_读取歌曲名异常问题

  1. AUX模式下:AD方式打开LINEIN通道,退出模式后没有关闭 image

197 AC696_170_SDK在打完AC696N SDK FM不停台和漏电联合补丁修改V2补丁后TWS播歌概率出现卡顿丢包现象 20230519 LTY

原因:蓝牙和FM是公用的RF,修改不停台的修改影响了蓝牙
解决方法:替换cpu.a和btctrler.a库。
 HYPERLINK "https://kdocs.cn/l/carlE20OgANr" 【金山文档】 修复170版本打完补丁后TWS播歌概率卡顿问题

198 AC696 开关混响导致内存泄漏 2023年6月1日 LZK

image

处理方法:
重写混响关闭函数:(把原来的 audio_energy_detect_close 改为 user_audio_energy_detect_close)
typedef struct _audio_energy_detect_channel_param {​
s16 mute_energy; // mute 阈值
s16 unmute_energy; // unmute 阈值

u32 mute_time_ms;       // 能量低于mute阈值进入mute状态时间  
u32 unmute_time_ms;     // 能量高于unmute阈值进入unmute状态时间  
u32 count_cycle_ms;     // 能量计算的时间周期  

u32 mute_points;        // 能量低于mute阈值进入mute状态点数  
u32 unmute_points;      // 能量高于unmute阈值进入unmute状态点数  

s32 sum_abs_value;      // 数据绝对值的和  
s32 sum_value;          // 数据的和  

s16 average_value;      // 能量计算周期的绝对值平均值  
s16 dc_value;           // 能量计算周期的直流值  

u32 mute_count;  
u32 unmute_count;  

u16 cycle_count;  
u16 count_cycle;  

u16 mute_time_10ms;  
u16 mute_count_10ms;  

s16 energy;  

u8  pcm_mute: 1;  
u8  onoff: 1;  
u8  skip: 1;  
u8  dcc: 1;  
u8  mute_status: 1;  

​} audio_energy_detect_channel_param;

typedef struct _audio_energy_detect_hdl {​
struct audio_stream_entry entry;
OS_MUTEX mutex;
audio_energy_detect_channel_param ch_param;
void (event_handler)(u8, u8); // event channel
u32 sample_rate;
u16 mute_check_10ms_timer;
u8 ch_total;
u8 run_flag;
​} audio_energy_detect_hdl;
/
*****************************************************

  • Function name : audio_energy_detect_close

  • Description : 关闭能量获取句柄

  • Parameter :

  • @_hdl 能量获取句柄

  • Return : 0:正常 other:出错
    ********************************************************/
    int user_audio_energy_detect_close(void *_hdl)
    {​
    audio_energy_detect_hdl *hdl = (audio_energy_detect_hdl *)_hdl;
    if (hdl == NULL) {​
    return -1;
    ​}

    os_mutex_pend(&hdl->mutex, 0);

    if (hdl->mute_check_10ms_timer != 0) {​
    sys_s_hi_timer_del(hdl->mute_check_10ms_timer);
    hdl->mute_check_10ms_timer = 0;
    ​}
    if (hdl->ch_param != NULL) {​
    free(hdl->ch_param);
    hdl->ch_param = NULL;
    ​}

    os_mutex_del(&hdl->mutex, 0);
    if (hdl != NULL) {​
    free(hdl);
    hdl = NULL;
    ​}
    return 0;
    ​}

198 AC696 170 获取大小有问题 fget_free_space 128M的flash查询数据正常。64M以下的查询全部是0 LZK

  1. 替换库文件: 【金山文档】 system(AC696N_170 文件系统容量读取问题)
     HYPERLINK "https://kdocs.cn/l/clqAzdSj03pA" https://kdocs.cn/l/clqAzdSj03pA
    使用新的库
    【金山文档 | WPS云文档】 system_AC696N_170_2023_6_15_修复小容量设备获取剩余空间,库偏移得到0_支持fat12
     HYPERLINK "https://kdocs.cn/l/crR6j0dsk5m9" https://kdocs.cn/l/crR6j0dsk5m9

2、添加两个宏定义
const int FATFS_WRITE = 1; // 控制fatfs写功能开关。 const int FILT_0SIZE_ENABLE = 1; //是否过滤0大小文件
INCLUDEPICTURE \d "https://jl-pms.oss-cn-shenzhen.aliyuncs.com/public/2023/06/06/539e92c9-df06-429e-93e9-53caef603878.png" * MERGEFORMATINET 
image 

199 ac696n_soundbox_sdk_v1.7.0版本sdk不能SPP在线调EQ fs

修改方法:替换文件ac696n_soundbox_sdk_v1.7.0开spp在线调eq替换文件,并按照下图内容修改程序
【金山文档】 ac696n_soundbox_sdk_v1.7.0开spp在线调eq替换文件:https://kdocs.cn/l/cgB19PMg5TJQ

image

image

image

200. ac696x_earphone耳机系列sdk串口在线调EQ连接不上 20230625 GFH

image

检查是否测试盒占用了串口,需要关掉
image

  1. ac696n_soundbox_sdk_v1.7.0版本sdkSPP在线调EQ 所有节点都会有以下异常弹窗,导致功能无法正常使用 image

修改方法:该问题存在于EffectTool工具的部分版本,将工具升级到0.1.46 之后的最新版本即可
201. ac696n_soundbox_sdk_v1.7.0版本 如果修改固定采样率会出现 在线调试音效效果跟实际音效效果对不上。 场景1:客户使能了混响并把采样率从44.1K 改成 32K .需要按以下修改修复问题
image

修改方法:

替换库文件,重新编译
【金山文档】 AC696N_1.7.0_eq采样率更新无效导致的频偏问题修正
 HYPERLINK "https://kdocs.cn/l/ceXHD1GO1Tpm" https://kdocs.cn/l/ceXHD1GO1Tpm

添加以下定义:
lib_media.config.c
image

  1. ac696n_soundbox_sdk_v1.7.0版本做发射器开SPDIF功能后,接收器回连出现卡顿问题。 原因:回连后采样率由44100->48000导致,需要改库解决;
    替换库如下:
    【金山文档】 btstack_696_170_sdk_修复发射器采样率问题
    https://kdocs.cn/l/ckYRNFAZzYrK

  2. ac696n_soundbox_sdk_v1.7.0 SMP文件无法播放 WGH 原因:长文件名的歌曲后缀名SMP,缺少"P";
    替换库如下:
    【金山文档】 system_696V170_修复SMP加密文件后缀名识别失败问题
     HYPERLINK "https://kdocs.cn/l/cvzP5TVkDX7f" https://kdocs.cn/l/cvzP5TVkDX7f

替换后rebuild后会出现编译报错,需apps\soundbox\log_config\lib_system_config.c添加
const int FILT_0SIZE_ENABLE = 1;//是否过来0大小的音频文件
const int FATFS_WRITE = 1;//是否需要去掉FATFS的写功能

apps\common\music\music_decrypt.c
image

  1. ac696n_soundbox_sdk_v1.7.0 tws对箱公版tws配置只修改为对箱使用主机的mac地址,出现概率AB箱子分别连接CD手机,AB箱子分别发起搜索配对,能配对连接上并死机的问题。231026 CYL image

修改方法:
image

此处的置一并不会让tws在任何时候都能搜索配对,只是将底层的一个标识置1。让底层跑连接手机判断的流程。
205. ac696n_soundbox_sdk_v1.1.1 多台样机(3台以上)连接苹果手机,回连时出现死机复位231123 LTY  HYPERLINK "https://kdocs.cn/l/cue278tZLHUG" 【金山文档】 696_111SDK多连苹果手机回连出现复位问题
206. ac696n_soundbox_sdk_v1.7.0 华为手机连接后,在手机端关闭音量同步,手机切换为其他蓝牙设备再切换回696音箱后音量会被固定修改问题 fs 原因:如果在手机端先关闭音量同步,手机切换为其他蓝牙设备再切换回696音箱后,音箱端跑音量同步代码时,下图set_music_device_volume函数传进来的参数音量值会一直固定120,导致即使手机端关闭音量同步,切换设备后音量都会被同步修改为120。
INCLUDEPICTURE \d "https://static.dingtalk.com/media/lALPD0eJ-OdMRSjNA5rNA5Y_918_922.png" * MERGEFORMATINET 
image 
修改方法:替换库文件
【金山文档】 btstack_696v170_蓝牙音量同步问题修改
 HYPERLINK "https://kdocs.cn/l/cfkrdaGKt96j" https://kdocs.cn/l/cfkrdaGKt96j

  1. ac696n_soundbox_sdk_v1.7.0 使能混响后tws出现音频不同步问题 fs 现象:696 使能混响(不需要打开)以及tws功能后,第一次开机tws连接主副机音频是同步的,tws连接完成播放音乐不暂停,tws副机关机再重启自动回连主机后音频不同步,音频重心偏向一边。
    原因:TCFG_MIC_EFFECT_ENABLE控制的功能使能了EQ的32bit输出,后级的位宽转换模块在从机掉线后,主机重新复位同步时未清理缓冲数据导致,位宽转换模块加入缓冲清理处理后解决;
    修改方法:
    ①替换库文件
    【金山文档 | WPS云文档】 media_696v170_混响使能后tws出现音频不同步问题修改20240109
     HYPERLINK "https://kdocs.cn/l/cvTiGNvFSRIZ" https://kdocs.cn/l/cvTiGNvFSRIZ
    ②关闭WAV解码

image

  1. ac696n_soundbox_sdk_v1.6.0 音量同步功能修改 fs 实现功能:支持同步音量的手机连接时设置默认50%音量,如果不是音量同步的手机则设置最大音量。
    修改方法:
    【金山文档 | WPS云文档】 btstack-696-v160修改音量同步细节
     HYPERLINK "https://kdocs.cn/l/clNXaUbl8esW" https://kdocs.cn/l/clNXaUbl8esW

  2. ac696n_soundbox_sdk_v1.7.0 串口驱动更改 现象:公版uart_dev.c文件的串口中断函数有部分错误,当串口接收数据超过产生RT中断的字节数时,就会出现接收数据异常。
    修改方法:可以按下图增加DMA读取和超时标志位清除。也可直接替换新的demo和驱动文件。
    image

【金山文档 | WPS云文档】 uart+单线(br23,25,28)
 HYPERLINK "https://kdocs.cn/l/cdooMTougw2g" https://kdocs.cn/l/cdooMTougw2g

  1. ac696n_soundbox_sdk_v1.7.0 安卓手机时间获取异常 fs 现象:连接过Windows系统的电脑后,时间获取会异常无法获取到时间,断开连接后重新去连接安卓手机也无法恢复,需要重启才能恢复正常
    解决方案:【金山文档 | WPS云文档】 696x_v1.7.0版本获取安卓时间补丁_20240906
     HYPERLINK "https://kdocs.cn/l/ciQX4i7f9gFn" https://kdocs.cn/l/ciQX4i7f9gFn

  2. ac696n_soundbox_sdk_v1.7.0 U盘SD卡复用,先插入SD卡再插入U盘播歌,切换模式后,重新插拔U盘,部分U盘无法挂载成功(sandisk容易复现) lty 原因:拔出U盘的时候调用mult_sdio_resume()将复用IO设置成输出高,但是插入U盘的时候被条件框住没有调用到mult_sdio_suspend()将设置为高阻。
    解决方案:在mult_usb_mount_before()函数中将限制条件注释掉。
    image

  3. ac696x_earphone_v0.2.0 出仓无法回连iPhone16 LJW 修改点:

  4. 替换btctrler.a;  HYPERLINK "https://kdocs.cn/l/cfyXvuIt50sy" https://kdocs.cn/l/cfyXvuIt50sy

  5. 添加代码:const int config_bt_security_vulnerability = 0;

  6. ac696n_soundbox_sdk_v1.7.0 开启SMART_BOX_EN 使能后,spp 通信接收数据回调在应用层看不到 MJW 问题原因:由于rcsp 本身开启了spp 通信并使用00001101-0000-1000-8000-00805F9B34FB 作为通信uuid ,所以客户直接使用该uuid 通信会导致数据接收回调使用的是库里面的。 两种解决办法(推荐第一种): ①可以使用双通道spp使用,换用另一个uuid 去做自己的自定义通信,同时不影响原有的rcsp中的正常功能。办法详情见链接:https://kdocs.cn/l/cjGZ789aCXJW
    ②一定坚持使用00001101-0000-1000-8000-00805F9B34FB 作为spp 服务的 UUID 的话,就需要换库实现,库中多封装了一个回调出来,接收到的数据库中做了对应的处理,并开放一个可供上层调用的 回调接口。 【金山文档 | WPS云文档】 btstack___ac696n_soundbox_sdk_v1.7.0_使用标准UUID增加回调
     HYPERLINK "https://kdocs.cn/l/cjenHLS2P6Ii" https://kdocs.cn/l/cjenHLS2P6Ii

  7. ac696n_soundbox_sdk_v1.7.0 小度使用按键进行语音唤醒,概率出现APP断连 HHM 修改方法:替换dueros_stack.a库
    【金山文档】 dueros_stack-696v170 修复SPP拼包问题,支持配置是否支持电量显示
     HYPERLINK "https://kdocs.cn/l/cpMSRl50kxUC" \o "dueros_stack-696-v170-20250523.zip" https://kdocs.cn/l/cpMSRl50kxUC
    // 电量显示 不支持:0, 对耳:2, 对耳 + 盒子:3, 单机:4
    void dma_change_battery_structure(u8 flag); //默认返回0
    注:公版小度默认不开启电量显示回调。
    INCLUDEPICTURE \d "http://www.kdocs.cn/api/v3/office/copy/TzA2c0FjOHIvK002bU1XVnJqVUY5aG1mVGxhQk1KZURUYVNsRXRTT3ZWcSsrNC9TVXNhdWxxaXk5aDZ6ZzllbjR5UTdDQVhma01MdUJQcGFmaW9OaGNkN0gwaWYwVGNPZmxCcDRwT20ybGE1OXJCZmtZSXA3TDJpWCtib1ZZS29JOVdaQ0Y0YjFXSXVEbkhzMXJCTk10eHh4MnBTeTJmcCtURmsvczhPeGJEdDJORkYvVlZ3R3EraEk2Y09iTU8rVDBVSHVoOGtrQUg0UUh5VFdvQ0M5MDRqQTNLWXVjdXFVZ0xtcG1DcVNqSCszTS9oRWk2NVZlU0ZWeWg1WkVJaEFSNTJYK3ljWjhJPQ==/attach/object/4WW3UQBAACQBC?" * MERGEFORMATINET 
    image 
    image

const u8 *get_dma_mac_addr()
{​
    static u8 mac_addr[6];
    memcpy(mac_addr, bt_get_mac_addr(), 6);
#if TCFG_USER_TWS_ENABLE
    int read_len;
    read_len = syscfg_read(CFG_TWS_COMMON_ADDR, mac_addr, 6);
    if (read_len == 6) {​
        return mac_addr;
   
#endif
    return mac_addr;
​}

  1. ac696n_soundbox_sdk_v1.7.0 开启TWS后通话有明显回音 HHM 修改方法:

  2. 固定最高主频

  3. 按文档进行调试: HYPERLINK "https://www.kdocs.cn/l/ck1XA2TmirZX?openfrom=docs" 通话调试流程指南

  4. ac696n_soundbox_sdk_v1.7.0  蓝牙模式播放录音文件会异常死机  HHM 处理方法:
    改用malloc获取内存,即可在蓝牙模式播放录音文件,不过会增加内存占用。
    INCLUDEPICTURE \d "https://alidocs.dingtalk.com/core/api/resources/img/5eecdaf48460cde56b0d8f658847db3ab484fc13059a99adafdec71cd65735654a339c82faa74ac965a117e9692870647de0961072a8c4c86fea04aa21a1ac6113132071b3850ad5f1f67a72fa2dfb3c3aee77f3daf6c4a962a74c4c60796216?tmpCode=185911bf-9f55-4224-ab30-834d6f825291" * MERGEFORMATINET 
    image 
    Gitlab:  HYPERLINK "http://192.168.1.245/freebrand/support/soundbox/ac696x_soundbox_sdk/-/tree/feature_bt_mode_play_record_file" \t "_blank" Files · feature_bt_mode_play_record_file · 自由品牌 / 客户支持 / SOUNDBOX / ac696x_soundbox_sdk · GitLab

  5. ac696n_soundbox_sdk_v1.7.0 使能DRC后在线调试mic drc0无效 HHM 修改方法:
    EQ节点需要设成32bit输出,才能正常使能MIC DRC。
    INCLUDEPICTURE \d "https://alidocs.dingtalk.com/core/api/resources/img/5eecdaf48460cde5c1780cdede08e93d6ad5e015cefb9e75afdec71cd65735654a339c82faa74ac965a117e9692870643f899ff5802eff9fb2ea59db885cb885bb73315e40998bfaff11b7ed7ed4d4b041f1822233e8755aa8af4430009de0b1?tmpCode=panAlkUpXwBBGFgYauJBM" * MERGEFORMATINET 
    image 

  6. ac696n_soundbox_sdk_v1.7.0 混响选择MIC_EFFECT_REVERB 出现异常死机问题 LZK 原因:
    image

修改方法:
使能:
#define  ENABLE_BYPASS_CH_AND_EQ2      1//使能bypass ch and EQ2

本文档包含以下子页面

Prev
AC698D2 抗干扰优化
Next
AC695X软件问题整理