AC696X软件问题整理
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

2.AC696系列应用层关闭长按复位功能 20200504
// P33_CON_SET(P3_PINR_CON, 0, 1, 1); ///开启8S复位
P33_CON_SET(P3_PINR_CON, 0, 1, 0); ///关闭8S复位
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);
}
}

设置port_sel 对应的寄存器如下图所示:
4.AC696系列耳机SDK版本V0.1.3版本注意 20200520
如下方法解决AC696的播放歌曲偶尔咔音和通话咔音问题。也解决关闭TWS开单耳通话没声音问题。
在sdk_ld.c文件加入如下语句, *(.sbc_eng_code)
注意:同时看下本文档的第15点的相关点。
把系统时钟提升到96M。
注意:同时看下本文档的第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) 中加入:

6.AC696系列SDK0.1.3 关掉TWS功能后蓝牙播歌没有声音问题修改 20200516
修改ac696n_earphone_v0.1.3\sdk\cpu\br25\sdk_ld.c文件如下:
7.AC696系列 软件或电阻检测分左右耳之后,用测试盒配对,能显示配对成功但实际没有配对上处理 20200602
修改如下:
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;
}
9.AC696版本支持MTY格式提示音 20200618



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

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

PD4是内部flash的一个供电脚,不能被操作到,操作到会影响flash的通讯。引起的问题:
- 写
- 出现错误;2、flash升级有问题;

11.AC696N 2M程序烧写到4M容量芯片注意事项 20200619
若2M版本需要兼容烧录到2M和4M 的flash芯片中,需要修改isd_config.ini文件:isd_config.ini需要配置BTIF 不小于4Kbyte 与 VM大小不小于8K(如下图所示)。重新生成的烧写文件即可。
INCLUDEPICTURE \d "C:\Users\Administrator\AppData\Roaming\Foxmail7\Temp-2812-20200618092104\Attach\Catch(06-18-13-54-06).jpg" * MERGEFORMATINET
问:那么有疑问,改为支持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

14.AC696X 跑LDO15若出现部分机子通话时样机复位处理方法 20200619
备注:处理思路是提高内核电压,提高抗干扰能力

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

编译后如下出错。
解决方法:
17.AC696测试盒配对的TWS清配对注意点 20200701
手动清除TWS配对信息后,无法配对。
可能要注意测试盒配对优先的宏配置引起的问题。
18.AC696系列耳机版本V014-P1优化 20200721
如果不改,进入软关机或者进入低功耗时候,vddio电压会设置到最低档2.1V用SDK默认的电压值2.8V即可。
#include"board_config.h"
vddiow_level = TCFG_LOWPOWER_VDDIOW_LEVEL;
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);


替换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
如类似下图
重点:变量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

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通信时把卡口控制挂起(相当于设置卡口高阻态),通信完后恢复):

24.AC696X耳机和音箱SDK的pwm功能 20200714
对于使用AC696X需要PWM功能的,可以见如下参考例子,详情请见网盘链接:
链接:https://pan.baidu.com/s/166ibbi08er-tHo5LVHr11Q
提取码:s2qq
特别需要注意的是,需要先看里面的readme.txt文档说明,另外一个是音箱可以支持三路PWM,耳机的SDK有且仅有一路PWM。
25.AC696X在蓝牙播放歌曲的时候播发msbc提示音注意点 20200714
696x系列在蓝牙播歌的时候播发msbc提示音的时候会播放不了或者出现死机问题,因为程序默认设置是叠加方式的,并且msbc和蓝牙sbc是同一个解码器,不能同时使用,要做互斥使用,所以在蓝牙播歌的时候播放msbc的提示音需要设置为打断方式即可。具体参考如下设置:将播放提示音的接口的第二个参数传递1表示打断方式,0表示叠加方式。
26. AC696X 混响和回声,有变量选择 20200716

27. AC696X EQ在线调式注意点 20200716 CCB
开了eq在线调试,eq_cfg_hw.bin默认不起作用,所以如果需要将eq_cfg_hw.bin加到程序中试听,就必须在软件中关闭eq在线调试。
- 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);
}
linein复用CMD检测配置例子 20200724 LZK

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 在实际使用中,有没有被调用。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);SD_PG/PA0 脚无法正常控制 20200724 LZK 1,如果使能SD卡功能,检查SD的power 变量是否配置了电源控制函数,需要设置成NULL

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
修改如下:
添加设备(优先)独立模式功能功能具体修改如下:
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文件。

37.696系列K歌宝解决第一声延时长的问题 20200803 YWP
除了程序上我们看得到的干声和湿声的增益,其次还有MIC模拟打开出声音的优化。
干声和湿声的增益大小范围是0-4096.如下图。
干声是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);
}
38. music模式下LED7显示、播放对应设备名,并在播放完之后显示文件号 20200808 SQ
- 添加提示音文件

#define TONE_MUSIC_USB SDFILE_RES_ROOT_PATH"tone/usb."
#define TONE_MUSIC_SD SDFILE_RES_ROOT_PATH"tone/sd."
添加显示设备名函数 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);
}
MENU_USER_USB,
MENU_USER_SD,
调用设备显示 在切换模式时不显示lod

case MENU_USER_USB:
led7_show_usb(hd);
break;
case MENU_USER_SD:
led7_show_sd(hd);
break;
显示、播放设备名并在播放完提示音之后显示曲目 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);
}
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); }

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




切换设备时设置标志位。默认sdk不会再music模式下切换设备 需要自己添加。
39. 报号前播放指定一个提示音 20200808 SQ

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

避免音量为0时播放最小提示音没有声音
41.Linein模式走模拟使用抢断方式播放提示音带有Linein声音 20200808 SQ
1)确认linein通道为模拟通道
2)播提示音时把linein通道mute掉,播放结束之后延时umute。延时umute 解决连续播提示音时提示音间会有linein声音。

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);

42.AC696系列V024V025版本的FM背噪杂音的库优化 20200808 PYP
替换cpu.a库,然后如下截图文件对应修改。
资料如下从百度网盘提取:
链接: https://pan.baidu.com/s/1JDU0U9TSYzuSq_P1w69pxw
提取码: 933p
43.【音箱】AC696系列DAC输出前后有PO声(DAC设置高阻引起) 202008014 LZK
如果你方案的DAC输出方式是隔直方式,请按以下修改。
app_audio.c ——注释掉 DAC设置高阻的函数
44.【音箱】AC696系列AUX走模拟时播叠加提示音时,音乐出现卡顿处理方法 202008015 WTS
AC696X 音箱SDK在AUX模式下走模拟通道,在播系统叠加提示音时(非外部提示音,外部提示音只能用打断方式),音乐出现卡顿处理(红色字体为增加的修改):



45.AC696系列单独调节系统叠加提示音音量方法 202008015 WTS
直接对叠加音频的数据进行放大或缩小(红色是修改部分):
46.AC696系列直接在代码中修改叠加提示音方法 202008015 WTS
这里只拿其中一个提示音例子来讲:

备注:基本修改的就只有频率和正弦波点数(播放时长),其他参数不要随意改。
如果想通过现有的一些提示音提取频率、持续点数信息,可以按以前“otp_AC691x_OTP工具使用说明.pdf”文档操作:


“otp_AC691x_OTP工具使用说明.pdf ”可以在以下网盘路径获取:
链接:https://pan.baidu.com/s/1E3aoxU0xKvZloOuk6m1ivg
提取码:bj0u
47.AC696系列音箱SDK2.5 判断录音录到哪个设备 202008015 WTS
可以通过rec->dev->dev_name判断:
48.AC696系列音箱SDK2.5快速按遥控有时不灵敏修改方法 202008015 WTS
可以通适当减小click_delay_time 参数。注意这个计数会影响双击、三击等多击的识别。如果遥控没有双击、三击等多击功能,调小这个参数没有影响。但如果有双击、三击等多击功能。调太小的话,会影响到多击功能识别(容易识别成单击),因此要跟进实际情况调节使用:

49.AC696系列如果误拿ROM中用到的IO口去做唤醒口,出现充电脚5V拔出后,耳机不会自动开机问题解决方法 202008020 WTS
开机时ROM中用到的IO口,在开机时电平会跳高或跳低,持续50MS左右。因此不要拿这些IO口去做唤醒脚或推灯。如何知道哪些IO口是开机ROM中用到的,请看IC用户手册中的IO口表:

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

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():

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

修改内容部分:
__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;
}
}

u8 get_charge_wkup_type(void)
{
return __this->wkup_type;
}
- 在charge.h文件中,做以下修改:

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只有一个接受到红外按键消息,这个时候没有接受到按键消息的需要执行来自对箱消息。
实现方法:
加入下图代码,主要是通过获取系统时间来判断是否需要执行对箱消息来实现。
51. AC696X 音箱 SDK低电检测使用复位脚问题 LHY 2020 0822
在电量检测时候,一般都会使用分压电路(例如上下拉9.1k电阻)来采集电压,会导致引脚电压在1.6-2.0V之间,尤其在1.6-1.8V时候由于处于高低电平无法识别的区间,这时候如果使用复位脚作为检测脚会导致异常复位,建议关闭检测脚复位功能,或者提高电压变化区间。
AC696X 耳机 SDK016面条耳机,把按键消息配置在工具里面,按键的消息会错位 XNW 20200824 处理方法:删掉下图的按键事件

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


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

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

在eq mode更新的回调函数中添加
以上截图所有程序修改代码如下:
#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;
}
}
- 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格式,入参考代码的修改方式:
然后在播放提示音结束的地方判断是否需要播放来电铃声
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字节
025版本带混响功能有概率死机 20200910 xin 链接: https://pan.baidu.com/s/1TJYHDZSh68HEv4ahxkkc-A 提取码: pnsj
提取media.a库,rebuild即可
58.AC696的V025版本SDK进入蓝牙会自动退出蓝牙模式问题 20200911 YWP
bt_auto_exit();函数会计算到没有连接或者其他条件成立会自动退出蓝牙模式。
59.AC696系列外插MIC做混响或扩音设计注意 20200915 YWP
目前我们AC696系列给出的原理图,MIC部分电路都是省电容的电路(如下图),如果客户用作带有混响或者扩音的功能,不建议使用省电容的电路,建议需加隔直电容,偏置用芯片的MIC_(PA2)。
原因如下:
如果是省电容,芯片会执行内部的校准MIC偏置程序,由于做的是带混响或者扩音器,PCBA板一般没有MIC,那么我们内部的MIC校准程序校准不到值,就会导致开机慢和批量出现不一致的问题,或者产生其他由于MIC偏置导致的MIC声音的问题出来。
所以如果是MIC不在PCB板子上的带有混响或者扩音的机器,必须用加隔直电容MIC方案。参考电路如下。MIC的偏置一定要选择芯片的MIC_BIAS(PA2),如果用VDDIO,一来底噪大,二来会跟随VDDIO变动出现杂音。
MIC_BIAS的偏置请设置在3.0V以下,免得由于电池低电下跟随电压抖动出现杂音。
60.AC6965E的AUX/LINEIN设计注意 20200915 YWP
AC6965E是只绑定出DACL声道出来的IC,如下图,所以在使用AUX/LINEIN上选用通道需注意。为了不需要程序多设置,AUX的通道请选择对应的AUXn_L作为LINEIN的输入。如果选用AUXn_R进,LINEIN下是没有声音输出的,因为声音从DACR出去了,没有从DACL出去。
扩展:
所以如果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的。
蓝牙后台:
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 混响延时测试数据(仅供参考)
混响MIC数据入口
(回声)混响音量
- 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) 函数中添加以下内容
(回声)混响延时
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,
};
有外部音效文件,使用音效文件的值
人声消除

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

2、cpu\br28\audio_mic\effect_reg.的混响功能配置选择MIC_EFFECT_CONFIG_DVOL,做为话筒的音量控制
- 话筒音量调节用接口 /----------------------------------------------------------------------------/
/**@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
- 在mixer数据流添加数字音量节点 1.1 在cpu\br25\audio_dec\audio_dec.c里添加

#if USER_MIC_EFFECT_VOL_DEGAULT
#include "application/audio_dig_vol.h"
void *digvol_last = NULL;
void *digvol_last_entry = NULL;
#endif
#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
- 添加数字音量节点后,音量调节函数需要做修改 2.1 cpu\br25\audio_common\app_audio.c

#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
- AC696 1.1.0 SDK U盘/SD卡提示音独立实现方法 20200925 LHY 1.下面是定义盘符

2.U盘/SD卡提示独立处理代码如下,无论是第一次上电还是后面插拔都会走到KEY_MUSIC_PLAYER_START
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后面调用。
67.AC696系列 外挂FLASH使用方法与注意点 20201016 LHY
1、配置SPI

2、配置FLASH

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


4、遇到问题需要的注意点
(1)、首先先保证能够读取到ID号,如果读取不到先从硬件排查是否接错IO口
、通过flash大小匹配设置项

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

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


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

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

2、音乐模式初始化激活优先设备
3、由于不同SD卡和U盘上线时间不同所以需要去等待另一个设备上线

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

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



- AC696系列 SDK1.1.1 对箱设置单声道时,播歌下关其中一个音箱后,另外一个有时会复位需要更换的库 ------WTS 20201022 请使用以下网盘的media_app.a库文件替换后,rebuilt 工程处理:
链接:https://pan.baidu.com/s/15Z_7iM3Eq5OkUWIA_TIlig
提取码:jiel
- AC696系列 SDK1.1.1 播完U盘或卡后,不会自动播放下一个设备音乐的修改方法 ------WTS 20201022 请使用以下网盘上的资料“AC696X SDK1.1.1 播完U盘或卡后,不会自动播放下一个设备音乐修改方法.zip” 处理:
链接:https://pan.baidu.com/s/1bAEP3mC5KUJoyYgWBGSCIA
提取码:jiel
- AC696 系列 SDK1.1.1 切蓝牙模式播提示音的时候(蓝牙初始化未完成)插入TF卡,无法切入TF卡模式,程序卡死问题处理方法 -------LAQ 20201022
按下图进行修改

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

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

(2)请使用以下网盘的lib_reverb_cal.a库文件替换后,rebuilt 工程处理:
链接:https://pan.baidu.com/s/1fuMWdyV3DlzuKehWempfkg
提取码:wf9g
AC696 系列 SDK1.1.1 插卡无法扫描到隐藏文件和带.的文件名的文件的处理方法 -------LJW 20201023

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

AC696 系列 SDK1.1.1 自动mute使用方法 -------LHY 20201028
打开自动mute的宏

2、获取mute状态
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
- 这个问题主要存在于快速拔卡切到蓝牙模式时,如果蓝牙未初始化成功会导致卡死在蓝牙退出函数导致死机问题,所以在从蓝牙切到其他模式都会先判断蓝牙是否初始化完,未初始化完需要等待初始化完成。



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

以下是电脑上MIC 音量值查看的地方(参考):
85.AC696 系列 SDK1.1.1 DACR做linein输入时没声音的处理方法 -------LJW 20201103
请按如下修改:
86.AC696 系列 SDK1.1.1 打开PC模式时某些U盘无法读取的处理方法 -------LJW 20201103
请按如下修改:(该方法同样适用695系列SDK)
87.AC696 系列 SDK1.1.1 播放MP3提示音回复位的处理方法 -------LJW 20201105

88.AC696 系列 SDK1.1.1 单声道开启人声消除无效果的处理方法 FSW 20201105
公版SDK配置
#define TCFG_AUDIO_DAC_CONNECT_MODE DAC_OUTPUT_MONO_L
#define AUDIO_VOCAL_REMOVE_EN 1
后,人声消除无效果,可按以下修改处理。



新建头文件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

91.AC696 系列 优化插麦克风底噪问题 LHY 20201110
第一种:修改threshold的值,原来是-45000,修改时候不要大于-20000
第二种:直接从数据流入手去清空数据
主要是先打印下in指针中的数据,将in转换为s16类型指针,outlen单位是字节不是s16,所以需要自己去计算出数据个数,打印在插麦克风并没有播歌情况下所有数据大小,取最大的值(绝对值)作为阀值,在mic_effect_effect_run执行开始时候去检查数据,如果数据都在阀值范围,直接将in中所有数据清空。
92.AC696 系列 高关功放在软关机下的处理 LHY 20201110
由于高关功放需要引脚输出高电平来暂停功放芯片工作降低功耗,之前的做法是进入idle假关机,现在直接软关机后再配置相对应引脚设置为所需要的电平

93.AC696 系列音箱V1.1.1 获取音频数据的方法 FSW 20201110
在your_data_process中进行自己的处理

94.AC696 系列音箱V1.1.1 添加自定义的数字音量控制的方法 FSW 20201110
可实现在不改变模拟音量的情况下,改变蓝牙、U盘、SD卡等数字音源的音量


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




98.AC696 系列SDK1.1.1 连接手机状态下无法连接或者断开对箱解决方法 LHY 20201117
下面方法存在BUG,方法已作废
1、直接注释掉下面代码,或者改为#if 0

99.AC696/AC695修改蓝牙配对码PINCODE 20201118 YWP
/提供接口外部设置配对方式/
extern void __set_simple_pair_flag(u8 flag);

100.AC696X音箱SDK自动调节VDDIO电压 20201119 YP
自动调节vddio电压等级,提供对应的接口,如下:有一点要注意,vddio的电压会影响到电池电量检测,另外这个电压也要比DACVDD大最少0.3V,否则会引发底噪。
101.AC696X音箱SDK 内置充电有时会处于很小(20mA)左右的处理方法 20201119 YP
音箱SDK内置充电最大可以用300mA电流档位,但是有些时候比如在电池处于低电的时候,充电的电流可能只有20mA左右,充电比较慢,是因为SDK默认初始化的充电电流设置为20mA,可以根据自身的需求更改这个初始值,这个值设定为电池容量的1/10C的比例,根据电池标定来设置。
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);
}

103.耳机工程升级到SDK020,发现同样的参数,回音比以前的版本明显,调回音压制参数效果不明显的处理方法 XNW 2020112
按照一下图片参数处理:
104.696x 音箱SDK添加定时器扫描函数后有几率搜不到蓝牙问题 20201124 YP
AC696X音箱的SDK,在开机就需要跑一些定时器的扫描函数的,添加之后会出现有几率进入蓝牙模式之后无法搜到蓝牙名字的问题,原因是开机添加的定时器(sys_timer_add等之类的)会触发消息,把消息池撑满,导致进入蓝牙的时候,造成蓝牙的一些事件消息无法接收处理,出现丢事件消息无法初始化蓝牙,从而搜不到蓝牙名字,对于此问题的处理是需要更换一下添加定时器扫描函数的地方,避免消息事件被频繁触发堆满消息池。对于以上的修改,可参考下图
105.696x 音箱SDK蓝牙模式下打开LINEIN进行叠加 20201127 LHY
走数字通道(因为696只有一路LADC,所以linein无法走数字立体音,只能走单声道)

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

106.696x 音箱SDK搜不到蓝牙问题(补充) 20201127 LZK
【具体现象】 :第一次上电开机或者切到蓝牙模式下,搜索不到蓝牙名。查看打印消息发现进入蓝牙模式后没有BT_STATUS_INIT_OK的打印出来
【修改方法】
- 优先看第104点“696x 音箱SDK添加定时器扫描函数后有几率搜不到蓝牙问题”
- 如果根据第104点修改后,还是会出现。可尝试添加重发机制如下。(以下函数放在bt.c文件里面即可。)
- 添加完后,查看打印有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值。

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

109AC696系列SDK1.1.1 录音的同时DAC输出录音数据的处理方法 LJW 20201203
1.请按如下修改:
- 修改录音的采样率

- 3.配置mic_effect为REVERB

- 4.关掉混响的效果

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

111.AC696系列SDK1.1.1 外部EQ文件替换EQ模式中的任何一种模式 HJY 20201203
【修改方法】在eq_config.c文件中,以替换eq_tab_normal模式为例。

112.AC696系列SDK1.1.1 外部添加双EQ文件的方法 HJY 20210419
【修改方法】使用新EQ工具





113.AC696系列SDK1.1.1 如果出现莫名其妙的自动关机(非复位死机),可以试下按下图修改 20201204 FSW
AC696系列SDK1.1.1 如果出现莫名其妙的自动关机(非复位死机),需要修改sys_auto_shut_down_enable函数(原因是不同的流程可能导致重复执行sys_auto_shut_down_enable),修改如下
114.AC696X 111 SDK版本使用U盘或者SD卡不能进行跳转升级的问题 20201204 YP
AC696X 音箱111 版本的SDK使用跳转无法升级的问题,或者编译不过的问题,需要做如下修改:
编译不过需要如下更改:
不能跳转升级的问题,需要做如下修改,系插入设备升级的时候,蓝牙模块没有关闭导致升级不了,需要如下修改,关闭蓝牙模块,防止ram被修改导致无法升级:
补充一点:关于AC696X_V111版本跳转升级的问题,先插入有升级文件的设备开机会导致升级不了的问题,系因为有一些audio dac 模块没有关闭,按以下修改即可:
115.AC69系列sdk V111版本无缝循环播放的处理 20201207 YWP
ac696n_soundbox_sdk_v1.1.1版本实现无缝循环播放,如下截图宏FILE_DEC_REPEAT_EN置1.
同时循环播放的音乐文件首尾的静音资源要剪切掉,以免干扰无缝播放。
如果想要实现一直无缝播放,需要让函数一直返回0,
返回非0,则循环结束
116.AC69系列sdk V111插两驱动类型的(第一驱动类型为光盘模式)U盘死机 20201207 SQ
目前小机只支持:
MBR分区表引导的磁盘
分区表中只有一个磁盘分区。
磁盘格式为:FAT32、exFAT 2)插入windos电脑可以看到U盘的两个驱动类型

代码修改如下

#define MULTI_DISK 1

#if USB_HOST_SUPPORT_MSD

#if MULTI_DISK
u32 total_lun = disk->lun;
#else
u32 total_lun = 1;
#endif
/* u32 rx_len = num_lba * disk->capacity[curlun].block_size; */
u32 rx_len = num_lba * 512; //filesystem uses the fixed BLOCK_SIZE
/* u32 tx_len = num_lba * disk->capacity[curlun].block_size; */
u32 tx_len = num_lba * 512; //filesystem uses the fixed BLOCK_SIZE

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; */
}

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


usb_stor_set_curlun(disk,*(u32*)arg);
117.AC696系列sdk 1.1.1 麦克风(混响)无法调数字音量解决方法 20201211 LHY
1、调用mic_effect_set_dvol函数(大小0~30)无法调节数字音量的主要是没有初始化数字音量,导致在设置时候直接return
118.AC696系列sdk 1.1.1 主机连上手机后,副机发起配对无法连接主机处理方法 20201211 WTS
1、按以下截图修改处理:

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,搜索流程修改如下

120.AC696N SDK1.1.1 录音模式播放录音文件时插入U盘播歌,再回录音模式播放录音文件时无法播放问题 20201211 LAQ
更新库文件:
链接:https://pan.baidu.com/s/1wpWLxx1jR7IA0gN1_cC0lw
提取码:JLKJ
121.AC696N SDK1.1.1 退出FM之后功耗大 20201214 SQ

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;
AC696N SDK1.1.1 利用定时器保存音乐断点 20201214 LJW

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

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


- SDK1.1.1 开TWS同时开混响有一边音乐断续问题 20201218 WTS
更新库文件:
链接:https://pan.baidu.com/s/1hZZrlezY0Z7ybZsAPi6gSg
提取码:p5an
软开机有时候需要按几次才能正常开机解决方法 20201218 LHY

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


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

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


2.以修改eq_tab_custom的第二个频点为例
#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;
}
修改任意eq效果的某个频点增益
把需要修改的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的任意频点增益
SDK1.1.1对箱功能需要与692x一样 20201224 SQ 692对箱:按键配对、发起配对为主机、非主从切换、主机为L耳

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




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


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

SDK1.1.1麦克风能量获取方法 20210105 LHY 链接:https://pan.baidu.com/s/1n5jmjU4CS6r_2PMCOcx5qA
提取码:8888下载上面代码,对比SDK1.1.1公版程序,修改到自己工程中
通过下面函数去获取麦克风能量值

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

关掉MIC的内部偏置PA2,使用外部偏置;
MIC使用省电容的方式;
SDK 1.2.0 linein为DAC进使用打断方式播放提示音,一直有linein背景音 20210112 SQ

//linein PP 状态记录 与查询返回
bool user_comm_linein_status(u8 cmd){
static bool _status_ = 1;if(1 == cmd){_status_ = cmd;}else if(!cmd){_status_ = 0;}return _status_;}
148. 149. user_comm_linein_status(linein_get_status()); 
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挂起了,没有恢复的地方,导致近端没有声音,可以按照如下修改:
136.AC696X V111版本的SDK 连接手机后,无法控制手机拍照的处理方法 20210126 LJW


- 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);
}

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
INCLUDEPICTURE \d "https://tcs.teambition.net/thumbnail/3123723f090e473f78ebc0e57e00ee1330f3/w/800/h/283" * MERGEFORMATINET
AC696X V020版本的SDK 普通包关TWS,设置立体声输出,通话结束后会复位的处理方法 20210317 LJW 更新库文件:
链接:https://pan.baidu.com/s/14MUby8KwRVD4HnN14dm8xw
提取码:8888AC696X V020版本的SDK 设置立体声输出,播左右声道歌曲后DAC没有声音或声音变小的处理方法 20210317 LJW

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; ////u84
for(u16 i=0; i<rlen; i++) ///lrlrlr......
{
tmp_l = f_lr[i2];
tmp_r = f_lr[i2+1];
f_lr[i2] = tmp_r;
f_lr[i2+1] = tmp_l;
}
}
return len;
}

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

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; ////u84
for(u16 i=0; i<rlen; i++) ///lrlrlr......
{
tmp_l = f_lr[i2];
tmp_r = f_lr[i2+1];
f_lr[i2] = tmp_r;
f_lr[i2+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;
}

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


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
背景:
- 切出music模式保存“时间”信息
- 切换歌曲保存“歌曲”信息 现象:
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;
......
......
......
}
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的能量值,可以做如下修改:

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
使用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使用。
AC696X V122版本的SDK音频文件属性不勾选“可以存档文件”的不能播放的问题
20210430 LJW

请替换库
链接: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

AC696X V122版本的SDK插U盘播歌速度变快的问题处理 20210430 LJW 替换文件
链接:https://pan.baidu.com/s/1U1sA9qunaIs1888QqMS2_A
提取码:8888AC696X 音箱工程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
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
提取码:8888AC696X 音箱工程V1.2.3部分手机不能拍照--红米K30 20210513 XNW 解决方法:替换一个库文件
连接: HYPERLINK "https://pan.baidu.com/s/1NbimZQqdKnvPWoZxvUJs-A" \t "_blank" https://pan.baidu.com/s/1NbimZQqdKnvPWoZxvUJs-A
提起吗:8888AC696X 音箱工程V1.2.3U盘和TF卡复用,一直切设备,某些U盘会掉线的处理方法 20210513 LJW

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

程序中修改:

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



- 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);
改成touch_event 或者其他没有用到的事件类型
SYS_EVENT_HANDLER(SYS_TOUCH_EVENT, uart_event_handler, 0);
方法2:
//设备事件响应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;
}
}
- ac696n_soundbox_sdk_v1.2.3对箱配对后无法连接其他对箱解决方法 20210623 LCP

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

158. ac696n_soundbox_sdk_v1.1.1 TWS非公共mac地址,去除配对限制 20210726 SQ
现象:tws配对最后 如果想哪其中一个与其他机子配对 出现不能配对,需要删除tws配对信息之后才能配对
程序修改
#define USER_TWS_DISCONNECTED_REMOVE 1//解除tws配对限制 公版sdk tws 没有解除配对就不能重新配对



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)在任务中执行
- 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.2.3 SDK 打开TWS跳转升级无法维持IO电平 20210702 lzk 替换btctrler.a文件,下载地址如下
HYPERLINK "https://audiodoc.notion.site/IO-8208aad74df045a0b172f3cf5ce18021" https://audiodoc.notion.site/IO-8208aad74df045a0b172f3cf5ce18021
跳转升级具体修改
1.3.0 MCU uart串口升级注意事项 20210705 HJY uart_update.c文件中删除多余代码。

配置文件修改:
对应的板级.c文件中可修改升级管脚
- AC696音箱 TWS配对慢优化方法 20210705 LZK 可以减少蓝牙空闲状态时间。
方法如下:
SDK默认值为1600(时间实际为 1600*0.625ms),建议修改为200。该值最小为100,注意不能使用低功耗适用于音箱对功耗要求不高的产品使用。
166. ac696n_soundbox_sdk_v1.2.1-v1.3.0 蓝牙开混合录音WAV格式 ,录音音频出现卡音问题 20210707 WGH 
从打印上看会打印~,是写PCM cbuf时候返回0。
修改点:
Audio_enc_file.c



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

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

ac696n系列耳机工程,如果用外置触摸,触摸通过主控的IO口供电,测试盒串口升级,升级到70%,又重新升级问题修改方法 20210810 XNW 问题的原因:在串口升级过程中,给触摸供电的IO口输出低,导致触摸一直给主控的PB1输出一个3.3平,导致主控8秒复位
修改方法:在INI文件中设置触摸的供电脚在升级过程中给触摸正常供电
注意:这样改后,触摸的供电口任然有1.6秒的输出低,但不会触发8秒复位功能。
AC696X AUX输入信号没有大于1.2V,但DAC输出问题处理 20210811 WTS 公版SDK把AUX增益默认配置为放大6db,可以适当调小(1级为2db):

AC6969D芯片使用内置flash录音修改文件 20210823 LCP 网盘文件对比608_1.2.1_SDK修改
链接: HYPERLINK "https://pan.baidu.com/s/1QvCiSvV6dQgVt7ESEBjCng" \t "_blank" https://pan.baidu.com/s/1QvCiSvV6dQgVt7ESEBjCng
提取码:6666AC696X SDK130 对箱配对上后想保持音箱都输出立体声修改方法 20210824 WTS 在audio_dec_bt.c 中重定义以下函数:

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

- AC696音箱蓝牙发射器和接收器之间进行对讲的demo 20211028 FSW
注意user_send_cmd_prepare(接收器用)和user_emitter_cmd_prepare(发射器用)!!!!!!!!!!!!!
打开AG
启动和结束
自动接听
- AC696 0.2.0耳机SDK版本 使用联合音量对箱后出现左右耳音量不同步解决方法 20211109 LHY



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

AC696 音箱1.5.0 SDK版本 Linein走数字通道Automute不起作用 20220211 SQ
https://kdocs.cn/l/ceB5MK3Mz7Hz
代码修改:

- 替换media_app.a库
- 修复automute linein模式下获取能量值 值不对的问题
- 添加更新automute参数的接口

- 新增接口使用案例:


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

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
- AC696_earphone_v030版本SDK添加连接确认功能 ---YP 20220506 AC696_earphone_v030版本SDK添加连接确认功能,需要更新蓝牙库,然后上层修改如下:

库文件获取:
链接:https://pan.baidu.com/s/1AkhKEVAizfbiABG9T8qX4w
提取码:ZHJL
182. AC696 音箱SDK 使用ANCS功能


183.695V310以及旧版本SDK 当歌曲内容恰好存放于设备地址的底部,播放歌曲会异常退出设备 20220614 WGH
修改以下文件:apps\common\usb\host\usb_storage.c

184.AC696 1.3.3SDK 打开人声消除的宏定义,声音失真
声音输入声音叠加后导致失真
INCLUDEPICTURE \d "https://www.kdocs.cn/api/v3/office/copy/UDF4OW1JVWMrbnJmN0l3RmhGZFNpR0hMRWxobHNpa2c3OVlveFU2Ly9vNGxJTU9maU1yM0c0L2REQWZSMVZKalQrYVdhaHRNNFI0bDlpZXlVaUpYdkxKVzNTdVZFaC9GNmVSSDV3RGdYY0NBRXV1ekVST3ZNRHNjaUoydW11USs0NkJDbFB5Vk54cUZtUms4UE5hTkgrZGRQVVFBQzBDekJIVnN1UHBIOGFJS04ybng3VklRZzZTVjNEOUtJL0pVVzZpMnNOc2ozQXVwTDAwZlJ4Yz0=/attach/object/NMVHSAQAEY" * MERGEFORMATINET
修改方法:
替换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
- AC696X AUX 输入信号有效值没有超过600MV,但从DAC输出出现失真问题处理 -------20220705 WTS 1、如果AUX走的模拟通道,把AUX模拟增益调到0:

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

- AC696X_170SDK 使用默认DEMO板级调式或烧录出的样机蓝牙MAC地址变成固定(没有随机生成)问题-------20220709 LZK 处理方法:
1、预定义 CONFIG_TWS_COMMON_ADDR_SELECT宏:
2、APP_PROTOCOL_DMA_CODE 这个宏不带APP时,把它设置为 0

- 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);
}
将代码放在下面修改:
- AC696n_earphone_v0.2.0 设置立体声通话有整句回音处理方法 20220714---- WTS 打以下补丁:
【金山文档】 ac696n_earphone_v0.2.0_立体声通话回音消除加G板补丁
https://kdocs.cn/l/ce3hCT9oD2Jd
- 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文件做文件拷贝的动作。
最后执行到每个.bat批处理文件后,会对tool文件夹下eq_cfg_hw.bin进行拷贝,作为下载进flash的资源文件,所以会出现替换tool文件夹下的eq_cfg_hw.bin无用的现象等。
解决方法:
根据不同的宏定义,替换相应的bin文件,比如默认的需要修改music_base.bin
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 
192.AC696N_soundbox_sdk_1.7.0 ADC电池电压采样波动大,通话过程中采样波动大的问题,通话过程中VDDIO档位变化,未跑正常流程问题 CYL
解决办法:注释或去除adc_api.c中adc_scan函数中的的部分程序,如下图
193.696系列030、031版本SDK叠加播放sin提示音会打断音乐问题处理办法 20220930 FSW
log上会发现如下差异
修改方法是提高播歌系统时钟,如下图
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采样有概率被打断导致复用判断调节无法正常退出
195 音乐模式读取歌曲名称异常:获取u盘歌曲名称的时候,有一首特定的歌曲读取文件名的时候少了MP3里面的3(也就是xxxx.mp3只读到xxxx.mp) 20230307 ZGH

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_读取歌曲名异常问题
- AUX模式下:AD方式打开LINEIN通道,退出模式后没有关闭

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

处理方法:
重写混响关闭函数:(把原来的 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
- 替换库文件:
【金山文档】 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
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



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

检查是否测试盒占用了串口,需要关掉
- ac696n_soundbox_sdk_v1.7.0版本sdkSPP在线调EQ 所有节点都会有以下异常弹窗,导致功能无法正常使用

修改方法:该问题存在于EffectTool工具的部分版本,将工具升级到0.1.46 之后的最新版本即可
201. ac696n_soundbox_sdk_v1.7.0版本 如果修改固定采样率会出现 在线调试音效效果跟实际音效效果对不上。 场景1:客户使能了混响并把采样率从44.1K 改成 32K .需要按以下修改修复问题
修改方法:
替换库文件,重新编译
【金山文档】 AC696N_1.7.0_eq采样率更新无效导致的频偏问题修正
HYPERLINK "https://kdocs.cn/l/ceXHD1GO1Tpm" https://kdocs.cn/l/ceXHD1GO1Tpm
添加以下定义:
lib_media.config.c
ac696n_soundbox_sdk_v1.7.0版本做发射器开SPDIF功能后,接收器回连出现卡顿问题。 原因:回连后采样率由44100->48000导致,需要改库解决;
替换库如下:
【金山文档】 btstack_696_170_sdk_修复发射器采样率问题
https://kdocs.cn/l/ckYRNFAZzYrKac696n_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
- ac696n_soundbox_sdk_v1.7.0 tws对箱公版tws配置只修改为对箱使用主机的mac地址,出现概率AB箱子分别连接CD手机,AB箱子分别发起搜索配对,能配对连接上并死机的问题。231026 CYL

修改方法:
此处的置一并不会让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
修改方法:替换库文件
【金山文档】 btstack_696v170_蓝牙音量同步问题修改
HYPERLINK "https://kdocs.cn/l/cfkrdaGKt96j" https://kdocs.cn/l/cfkrdaGKt96j
- 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解码

ac696n_soundbox_sdk_v1.6.0 音量同步功能修改 fs 实现功能:支持同步音量的手机连接时设置默认50%音量,如果不是音量同步的手机则设置最大音量。
修改方法:
【金山文档 | WPS云文档】 btstack-696-v160修改音量同步细节
HYPERLINK "https://kdocs.cn/l/clNXaUbl8esW" https://kdocs.cn/l/clNXaUbl8esWac696n_soundbox_sdk_v1.7.0 串口驱动更改 现象:公版uart_dev.c文件的串口中断函数有部分错误,当串口接收数据超过产生RT中断的字节数时,就会出现接收数据异常。
修改方法:可以按下图增加DMA读取和超时标志位清除。也可直接替换新的demo和驱动文件。
【金山文档 | WPS云文档】 uart+单线(br23,25,28)
HYPERLINK "https://kdocs.cn/l/cdooMTougw2g" https://kdocs.cn/l/cdooMTougw2g
ac696n_soundbox_sdk_v1.7.0 安卓手机时间获取异常 fs 现象:连接过Windows系统的电脑后,时间获取会异常无法获取到时间,断开连接后重新去连接安卓手机也无法恢复,需要重启才能恢复正常
解决方案:【金山文档 | WPS云文档】 696x_v1.7.0版本获取安卓时间补丁_20240906
HYPERLINK "https://kdocs.cn/l/ciQX4i7f9gFn" https://kdocs.cn/l/ciQX4i7f9gFnac696n_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()函数中将限制条件注释掉。
ac696x_earphone_v0.2.0 出仓无法回连iPhone16 LJW 修改点:
替换btctrler.a; HYPERLINK "https://kdocs.cn/l/cfyXvuIt50sy" https://kdocs.cn/l/cfyXvuIt50sy
添加代码:const int config_bt_security_vulnerability = 0;
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/cjenHLS2P6Iiac696n_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

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;
}
ac696n_soundbox_sdk_v1.7.0 开启TWS后通话有明显回音 HHM 修改方法:
固定最高主频
按文档进行调试: HYPERLINK "https://www.kdocs.cn/l/ck1XA2TmirZX?openfrom=docs" 通话调试流程指南
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
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 · GitLabac696n_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
ac696n_soundbox_sdk_v1.7.0 混响选择MIC_EFFECT_REVERB 出现异常死机问题 LZK 原因:

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