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

AC695N&AC696N&AC608N音箱问题整理

📎 原始文档:https://www.kdocs.cn/l/cb7ilYoBPohC AC695N&AC696N&AC608N音箱问题整理
前言:本文档整理将以各个SDK遇到的共性问题做整理汇总,可直接根据所使用的sdk版本及功能快速索引相关问题点

问题处理文档:

AC696X软件问题整理.docAC696X软件问题整理.pdf
AC695X软件问题整理.docAC695X软件问题整理_1722249702.pdf
AC608X软件问题整理.doc

入门

  1. 打印开关
    1. 总打印
//app_config.h
#ifndef CONFIG_DEBUG_ENABLE
2. lib
//app_config.h
#ifdef CONFIG_RELEASE_ENABLE
#define LIB_DEBUG    1
#else
#define LIB_DEBUG    1
#endif
3. log
//log.h
//等级宏定义0~6
#define   __LOG_VERB      0
#define   __LOG_DEBUG     1
#define   __LOG_INFO      2
#define   __LOG_WARN      3
#define   __LOG_ERROR     4
#define   __LOG_CHAR      5

//等级开关
#ifdef CONFIG_RELEASE_ENABLE
#undef __LOG_LEVEL
#define __LOG_LEVEL 0//xff//有效值0~6 例如设置为0 log等级大于等于0都有打印输出
#endif

//对应接口 与printf接口使用方法一致
//log_v
//log_d
//log_i
//log_w
//log_e
//log_c

模块打印等级开关
image

image 4. 带颜色

//log.h
//以下为带颜色的打印接口,注意需要打印等级设置为0
#define r_printf(x, ...)  log_i("\e[31m\e[1m" x "\e[0m", ## __VA_ARGS__)
#define g_printf(x, ...)  log_i("\e[32m\e[1m" x "\e[0m", ## __VA_ARGS__)
#define y_printf(x, ...)  log_i("\e[33m\e[1m" x "\e[0m", ## __VA_ARGS__)
#define r_f_printf(x, ...)  log_i("\e[31m\e[5m\e[1m" x "\e[0m", ## __VA_ARGS__)
#define g_f_printf(x, ...)  log_i("\e[32m\e[5m\e[1m" x "\e[0m", ## __VA_ARGS__)
#define y_f_printf(x, ...)  log_i("\e[33m\e[5m\e[1m" x "\e[0m", ## __VA_ARGS__)
5. 上电时间
//lib_system_config.c
///打印是否时间打印信息
const int config_printf_time         = 1;
6. 断言
//lib_system_config.c
///异常中断,asser打印开启
#ifdef CONFIG_RELEASE_ENABLE
const int config_asser         = 1;
#else
const int config_asser         = 1;
#endif
    1. 断言打印相关输出可以参考[串口调试](https://doc.zh-jieli.com/AC63/zh-cn/master/getting_started/code_debug/printf_debug.html)里面的案例判断是什么原因导致断言
    2. 断言打印与skd.lst配合查找断言地址与程序api地址
        1. sdk.lst生成

image

//download.c
%OBDUMP% -D -address-mask=0x1ffffff -print-dbg %ELFFILE% > sdk.lst
  1. 使用USB DP/DM做打印
    1. 打印引脚设置问DP/DM
#define TCFG_UART0_TX_PORT                  IO_PORT_DP//IO_PORT_DM                            //串口发送脚配置
2. 其他与DP/DM有关的功能关掉
//1.关闭pc模式
#define TCFG_APP_PC_EN                        0
//2.关闭USB功能
#define TCFG_UDISK_ENABLE                    DISABLE_THIS_MOUDLE//U盘模块使能
//3.关掉usb 复用
#define TCFG_USB_DM_MULTIPLEX_WITH_SD_DAT0       DISABLE
//4.如果在线调音使用了usb的DP/DM就要关掉在线调音功能
#define TCFG_TOOL_TX_PORT                    IO_PORT_DP      //UART模式调试TX口选择
#define TCFG_TOOL_RX_PORT                    IO_PORT_DM      //UART模式调试RX口选择
//关掉在线调音功能
#define TCFG_SOUNDBOX_TOOL_ENABLE            DISABLE              //是否支持音箱在线配置工具
#define TCFG_EFFECT_TOOL_ENABLE                DISABLE              //是否支持在线音效调试,使能该项还需使能EQ总使能TCFG_EQ_ENABL,
  1. 编译之后升级文件存放路径
  2. 生成并运行tools下的download.bat image
  3. 确认固件生成的文件位置
    1. 使用编辑的方式打开tools下的download.bat
    2. 确认相对位置 image
  4. 升级文件 image

开发注意点

  1. 各系列升级相关最新版-OTA-bin文件

AC695X (参考):

【金山文档】 20230519-695x最新版ota升级文件
https://kdocs.cn/l/ctZVymYjHLS7

AC696X (参考):

【金山文档】 20230526-696x最新版的ota升级文件
https://kdocs.cn/l/ch453NuDJ0xg

AC696X改去掉判断校验强制蓝牙测试盒部分升级蓝牙名:

福勇改ota.bin 696蓝牙测试盒忽略VM大小限制强制升级蓝牙名.7z
2. 各系列相关的最新库文件

  • system.a
SDK日期、修改问题链接
AC695N_soundbox_sdk_release_3.1.02023年10月10日:支持多级目录695_V310_支持多级目录_20231010.zip
AC696N_soundbox_sdk_V1.7.02025-1-15:fget_free_space()函数对FAT12系统返回NULL696V170_解决fget_free_space函数.rar
编译不过在lib_system_config.c添加以下定义

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

|

  • btstack.a
SDK日期、修改问题链接
AC695N_soundbox_sdk_release_3.1.02023年9月15日:修改蓝牙音量同步问题【金山文档】 btstack_AC695N_3.1.0_2023年9月15日修改蓝牙音量同步问题
https://kdocs.cn/l/cgo3TXY1x8zi
  1. AC695N 开发带RTC功能 RTCVDD只能用外部电源如纽扣电池或IOVDD供电
    image

  2. 芯片相关寄存器打印

AC695N

  • ADDA 寄存器打印值
void audio_adda_dump(void) //打印所有的dac,adc寄存器
{
    printf("DAC_VL0:%x", JL_AUDIO->DAC_VL0);
    printf("DAC_TM0:%x", JL_AUDIO->DAC_TM0);
    printf("DAC_DTB:%x", JL_AUDIO->DAC_DTB);
    printf("DAC_CON:%x", JL_AUDIO->DAC_CON);
    printf("ADC_CON:%x", JL_AUDIO->ADC_CON);
    printf("DAC RES: DA0:0x%x DA1:0x%x DA2:0x%x DA3:0x%x ,ADC RES:ADA0:0X%x ADA1:0X%x ADA2:0X%x  ADA3:0X%x\n", \
           JL_ANA->DAA_CON0, JL_ANA->DAA_CON1, JL_ANA->DAA_CON2, JL_ANA->DAA_CON3, \
           JL_ANA->ADA_CON0, JL_ANA->ADA_CON1, JL_ANA->ADA_CON2, JL_ANA->ADA_CON3);
}

void audio_adda_gain_dump(void)//打印所有adc,dac的增益
{
    u8 dac_again_fl = JL_ANA->DAA_CON1 & 0x1F;
    u8 dac_again_fr = (JL_ANA->DAA_CON1 >> 5) & 0x1F;
    u8 dac_again_rl = (JL_ANA->DAA_CON1 >> 10) & 0x1F;
    u8 dac_again_rr = (JL_ANA->DAA_CON1 >> 15) & 0x1F;


    u32 dac_dgain_fl = JL_AUDIO->DAC_VL0 & 0xFFFF;
    u32 dac_dgain_fr = (JL_AUDIO->DAC_VL0 >> 16) & 0xFFFF;
    u32 dac_dgain_rl = JL_AUDIO->DAC_VL1 & 0xFFFF;
    u32 dac_dgain_rr = (JL_AUDIO->DAC_VL1 >> 16) & 0xFFFF;


    u8 mic0_gain = (JL_ANA->ADA_CON0 >> 8) & 0x1F;
    u8 mic0_db = (JL_ANA->ADA_CON4 >> 29) & 0x1; //0db还是6db

    u8 linein_r_gain = (JL_ANA->ADA_CON0 >> 4) & 0xF;
    u8 linein_l_gain = JL_ANA->ADA_CON0 & 0xF;
    printf("MIC_G:%d,MIC_0_6:%d, linein_gain:%d,%d,DAC_AG:%d,%d,%d,%d,DAC_DG:%d,%d,%d,%d\n", mic0_gain, mic0_db, linein_l_gain, linein_r_gain, dac_again_fl, dac_again_fr, dac_again_rl, dac_again_rr, dac_dgain_fl, dac_dgain_fr, dac_dgain_rl, dac_dgain_rr);

}
  1. 开启AAC格式支持 打开下面的宏定义
#define TCFG_BT_SUPPORT_AAC                 1   //AAC格式支持

注意点:

  • AC696音箱版本SDK还需要打开(1.5.0SDK及以上才支持AAC) SDK\apps\soundbox\log_config\lib_media_config.c
const int config_aac_dec_use_malloc     = 1;
  1. 695/696 关掉dac的淡入功能 原理:dac stop 的时候不要把音量降到0,这样设置之后可能听感上底噪会变大
//播放音频之前调用
audio_dac_vol_mute_lock(1);

开关之前的dac输出对比(硬件设计原因dac 淡出没法关闭)
imageimage

共性问题

  1. AC696N V1.7.0 开启TWS后,连接测试盒无法显示SDK版本号 修改方法:
//重新注册一个回调函数进去
bt_testbox_ex_info_get_handle_register(TESTBOX_INFO_SDK_VERSION,user_bt_get_sdk_ver_info);

//回调函数例子:
u8 *user_bt_get_sdk_ver_info(u8 *len)
{
    y_printf("获取版本号\n");
    const char *p = sdk_version_info_get();
    if (len) {
        *len = strlen(p);
    }

    log_info("sdk_ver:%s %x\n", p, *len);
    return (u8 *)p;
}

修改后显示
image 2. AC696N V1.7.0 开启PINCODE连接后,部分手机无法连接 修改如下:
image

  1. AC695N V3.1.0 音箱模式下本地转发概率不同步 问题原因:暂停再播放,数据流程位宽转换节点缺少data_clear处理,导致再播放时缓存未清空。导致不同步
    解决:位宽转换节点增加data_clear处理
    修改方法:
    【金山文档】 AC695N_310_tws对箱播歌暂停在播放不同步问题处理
    https://kdocs.cn/l/cqIAFYTMtrbg
  2. AC696N V1.7.0 &AC695N V3.1.0 在线调音出现频率偏移问题 场景1:客户使能了混响并把采样率从44.1K 改成 32K .需要按以下修改修复问题
    image
  • AC696 修改方法: 替换库文件,重新编译
    【金山文档】 AC696N_1.7.0_eq采样率更新无效导致的频偏问题修正
    AC696N_1.7.0_eq采样率更新无效导致的频偏问题修正.zip
    (如果打开WAV格式编译失败添加以下代码)
    image

apps\soundbox\log_config\lib_media_config.c

//解码一次输出点数,驻议范围32到900,例如128代表128对点
//超过128时,解码需要使用nalloc,如config_wav_dec_use_malloc=1
const int WAV_DECODER_PCM_POINTS = 128;

// outputi超过128时,如果不使用nalloc,需要增大对应buf
// 可以看打印中解码器希要的大小,一般输出每增加1长度增加4个字节
int wav_mem_ext[(1336+3)/4] SEC(.wav_mem);//超过128要增加这个数组的大小

以上修改后,U盘解码WAV歌曲会出现断言死机,则开启config_wav_dec_use_malloc = 1;

image

  • AC695 修改方法: 打以下补丁:
    AC695N_soundbox_sdk_release_3.1.0_无声问题处理.zip
    同时将linein点数修改为根据MIC_EFFECT_SAMPLERATE计算后得出,如下图:
    image
  1. AC608N 部分出现播放U盘音乐文件速度变慢的情况 添加以下修改:
    AC608n soundbox sdkv1.2.1、v1.2.2修正部分无晶振芯片频率偏低的问题.rar
  2. AC696N 外挂flash录音TCFG_NOR_REC 范围溢出问题 处理方法:
    长度减少8K的长度
    image
  3. 695 soundbox 3.1.2 文件系统frename 异常 【金山文档 | WPS云文档】 system_BR23_312_优化rename跨簇处理和长文件名处理
    https://www.kdocs.cn/l/copHGbehTjEh
  4. 695 soundbox 3.1.2 蓝牙iis从机48K输出偶尔打印iis end

注意:

  1. 出现 iis end 表示iis tx读空,有断音的情况。加变采样功能、加大缓存可以优化
  2. 从机模式clk容易收到外界干扰、主机提供的clk不准,这种杂音情况 解决不了
  3. 建议使用主机模式

代码:

Files · feature_蓝牙iis从48K输出偶尔杂音 · SOUNDBOX / 非可视化 / ac695n_soundbox_sdk · GitLab

主要修改:

  1. 加大缓存 image
  2. 开变采样 image

问题处理

USB预读功能开启

总宏开关:

// 如 AC695/696有以下配置
/* u盘预读功能配置, 二选一
 * 当两种方式都不使能,则表示不开启预读 */
#define  UDISK_READ_BIGBLOCK_ASYNC_ENABLE    0  
#define  UDISK_READ_512_ASYNC_ENABLE         1  

默认SDK会根据解码的格式去选择是否打开预读如下
image

  1. AC696N 供电选择(LDO IN & VBAT)
P33_CON_SET(P3_ANA_CON0, 6, 1, 0);// 1: LDO IN  0: VBAT
  1. AC696N V1.7.0 SD卡电源使用SDPG供电在非音乐模式下,电源会掉问题
  • SD卡电源会掉有可能引发AUX检测复用SD卡 IO/AD复用SD卡 IO 等复用SD的应用出现异常 解决方法:不使用SD默认流程的 SD电源控制流程,通过APP层自行控制SD的电源
    image
void sdpg_config(int enable); // SDPG的电源控制函数 
注意:新版SDK使能是有挡位设置的。最高4档

image 3. AC696N V1.7.0 双备份编译报错空间不足 image 修改方法:
修改ini文件中的FLASH_SIZE 参数
image 4. AC696N V1.7.0 &AC695 V3.1.0关闭SD低功耗的功能 已经打最新补丁(截止2023年11月8日)

extern void set_sdx_enter_lowpower_disable(u8 dis);
传1, 就会关

cpu_AC696N_170_sd_driver_can_close_lowpower_mode_20231108.zip
AC695_310SDK_update_sd_driver_20231127_cpu(1).zip

  1. AC695N 外挂fm通道 AUX选择修改 原因:SDK默认打开AUX通道,所以会导致FM模式下也会打开AUX通道。原本配置的FM AUX通道没有作用如下
    image 修改方法:
    添加判断进行区分

  2. AC695N V3.0.6 优化pincode连接问题(使用最新即可) 2024年10月21日-处理部分主机第一次连接卡顿问题
    替换蓝牙库
    btctrler--695-v306测试发MAX slot C.zip
    2024年9月26日- 优化部分主机连接问题

  3. AC695N V3.1.0 Linein 采样延时优化 优化后
    image 修改方法:(该修改已经包含《AC695N_3.1.0_tws对箱播歌暂停在播放不同步问题处理》)
    【金山文档】 AC695N 3.1.0 Linein 采样延时优化问题处理
    https://kdocs.cn/l/cbSrIHKQrzSB
    打上该补丁后需要再增加修改如下图:
    原因:切换到linein模式后再开麦跑到audio_mic_open时adc中断点数会被修改为32,与mic中断点数不一致,导致通话时死机
    image

  4. AC695N V3.1.0 添加IMA ADPCM编码 添加补丁的内容:
    【金山文档】 AC695_3.1.0_加ima adpcm编码补丁
    https://kdocs.cn/l/cgbh3cidCir2

  • 其中有个变量控制WAV的编码格式
const int const_sel_adpcm_type = 0;//1:使用imaen_adpcm,  0:msen_adpcm
  1. AC695N EXFAT文件系统 设置文件创建时间失败补丁
SDK下载链接
3.0.1【金山文档】 system_AC695N_301_2023_6_25_支持exfat创建时间
https://kdocs.cn/l/chYlJ55sQf3h
3.0.4【金山文档】 system_AC695N_304_2023_2_25_支持exfat创建时间
https://kdocs.cn/l/cicOGoy1yhzy
3.0.6【金山文档】 system_AC695N_306_2023_7_26_支持exfat创建时间
https://kdocs.cn/l/cn8fQod8MNMU
3.1.0【金山文档】 system_AC695N_310_2023_4_13_支持exfat创建时间
https://kdocs.cn/l/cgX7ThkllKJS

如果出现编译报错:
image 10. 696 文件系统

SDK版本时间更新信息下载连接
17020260618fat文件系统,文件写入数据之后立即读取system.a
  1. AC695N V3.1.0 U盘播放WAV/FLAC/APE等歌曲,进行扫盘操作导致音频卡顿处理 处理方法:按照如下图配置
    imageimageimage

如果以上还没有解决问题,可能还需要使用到fseek加速。
参数一下SDK:
AC695N_soundbox_sdk_release_3.1.0_U盘播放过程浏览文件卡顿.rar
更新版本的(更换system.a 增加多扇区读写):
AC695N_soundbox_sdk_release_3.1.0_U盘播放过程浏览文件卡顿_(system_a增加多扇区读取)1226.rar
如果编译报错缺少以下变量,需要在外面定义下:
const int FILT_0SIZE_ENABLE = 1; //是否过滤0大小文件
image 12. AC695N V3.1.0 开启杰理之家功能 参考以下SDK的修改:
AC695N_soundbox_sdk_release_3.1.0_杰理之家.zip
当前分支:
Files · feature_3.1.0_rcsp_smartbox · SOUNDBOX / 非可视化 / ac695n_soundbox_sdk · GitLab

  1. AC695N V3.1.0 打开一拖二连上打开一拖二,连上两台手机 A手机播歌,B手机断开蓝牙(没有断开提示音)。会导致A手机播歌的音乐会卡顿一下 image

修改方法:
btctrler-br23-v310修改断开卡顿.zip

12. AC695N V3.1.0 内置flash录音修复打断播放无法播放问题

  1. 实现内置flash录音播放
    修复:
    a.结束录音,后再播放无法播放问题。
    (录音文件长度信息被修改导致无法播放)
    imageimage 相关代码
int user_rec_is_read_only; //内置录音读标志

     //判断如果只读关闭文件时,不更新文件信息。
    if (user_rec_is_read_only) {
        //file_h->crc;
        // pfile->len = pfile->w_len;
        pfile->rw_p = 0;//sizeof(PHONE_RECFILEHEAD);
        pfile->pfs->index.index = pfile->index.index;
        pfile->pfs->index.sector = pfile->index.sector;
        user_rec_is_read_only = 0;
        return pfile->w_len;
    }
  1. AC695N V3.1.2 开启歌词显示功能后蓝牙测试盒子升级失败问题 参考以下修改:
    2024-05-27_312版本加支持多芯片升级补丁.rar
  2. AC695N V3.1.2 iphone手机首次连接小度APP成功,关闭手机蓝牙再打开连接小度APP,会连接不成功问题 问题原因:
    加GFP的代码影响,MTU设置小了。两种方法修改,可以关闭GFP功能去掉 google_fps.a ,不编译。另一个是替换新的google_fps.a。GFP那里重新重新配置了MTU,然后手机拆包发过来,就出现了那个解析error。但是我重新拼包正确解析之后应答了一两次,手机又不发数据过来了。就只能还原原来的MTU处理了,发语音识别的时候对这个MTU也有要求不能太小
    修改:
    替换以下库文件,然后rebuild
    google_fps-修复关闭GFP后还有一些初始化.zip
  3. AC696N 170 SDK 添加music lrc歌词获取工能时有概率会出现获取到的歌词会带有歌词时间信息 原因:歌曲标签保存到flash时地址非4k对齐导致数据被修改,程序运行过程中的擦除是4k对齐擦除。
    现象:
    image demo(库有开打印,如需关闭库打印使用该库):
    下载包、gitlab(注意切换为feature_lrc分支并更新子模块)
  • ui_dot-歌词获取加写入标签到flash打印库
  • 获取歌词时看写入flash的起始地址是否为4K对齐(能被4096整除)
  • 如果出现如下截图非4k对齐(不能被4096整除)地址519936(十进制) image 在ini文件添加4k强制对齐
FORCE_4K_ALIGN=YES;//flash强制4k对齐
imageimageimage
  • 主控里面的程序是256对齐,如果此时需要使用SD卡升级为4k强制对齐的程序还需要在ini文件中添加 注:目前发现有些SDK使用了此方法升级插SD卡一直复位,升不了级不推荐。
SPECIAL_OPT = 0;// only generate one flash.bin

如果是c文件生成ini在对应的c文件中添加

#if CONFIG_ONLY_GRENERATE_ALIGN_4K_CODE//有该宏定义建议使用宏包住,没有直接添加
SPECIAL_OPT = 0;// only generate one flash.bin
#endif

image 17. AC696 170 SDK 开启消人声之后提示音没声音 程序包下载地址:

  • 内部gitlab
  • 外部金山
  1. AC696 170 SDK进BLE DUT 只用来调天线测试,不在正常模式下进BLE DUT如下修改
    image

  2. AC695 312 SDK 提示音变速变调 PA10 ADKEY(不接外部上拉),接0欧电阻为测试按键
    单击测试变调,双击测试变速
    ac695n_soundbox_sdk_release_3.1.2-提示音变速变调.7z

  3. AC695N V3.1.0 、AC695N V3.1.2设置低功耗,进sniff状态,耗电大,没进入powerdown mode 原因:在线调试模块,一直返回busy导致无法进入powerdown模式
    image 解决:交换返回值,修改如下:
    image

  4. fget_free_space()函数获取外挂flash剩余容量时候出现异常为0 主要原因是外挂flash的容量较小,FAT系统会自动烧录成FAT12。旧版本的system.a没有支持这个FAT12系统。
    解决方法:需要替换system.a库
    696V170_解决fget_free_space函数.rar

  5. AC695N V3.1.0 &AC696N 1.7.0快速获取蓝牙歌曲播放状态 PS:AC695N_soundbox_sdk_release_3.1.2 SDK 已经有 void user_avrcp_status_callback(u8 *addr,u8 flag) 直接定义就可以。
    替换一下库文件
    AC695N V3.1.0
    br23_btlib.rar
    AC696N 1.7.0
    696-v170- 加点接口202600306.zip

apps\soundbox\log_config\lib_btstack_config.c 中补充以下常量

const int config_btstask_use_malloc = 1;
const int config_le_sm_sub_sc_bridge_edr_enable = 0;

void user_avrcp_status_callback(u8 *addr,u8 flag)
{
    //flag = 0 是暂停,1是播放
    put_buf(addr,6);
    printf("user_avrcp_status_callback flag = %d\n",flag);
}
  1. AC695N、AC696N关dac淡入 由于硬件设计原因dac淡出没法设置
    关dac淡入设置:audio_dac_vol_mute_lock(1);
    关dac对以下情景有优化:
  2. 系统最大与最新音量时以同一个音量等级播放提示音,未关之前dac刚出提示音时的声音大小有差异
  3. 时长较小的提示音播放,未关之前dac还没完全淡入已经播放完导致dac没有声音输出
  4. AC695N 开启 PIN_CODE 配对后,手机配对连接困难 image 减小传入参数,如 set_idle_period_slot(100); (功耗会增加)
  5. 软件开启音量同步连接华为、荣耀手机没有自动开启音量同步 在蓝牙初始化完之后添加set_bt_manufacturer_info(0x004c,0x7100);
    case BT_STATUS_INIT_OK:
        log_info("BT_STATUS_INIT_OK\n");
        bt_status_init_ok(bt);
        set_bt_manufacturer_info(0x004c,0x7100);

696、695需要打相关补丁才有该接口
696:
170 SDK
695:
310 SDK
312 SDK

22.AC696N170skd在BT模式下播放高码率wav、mp3提示音,之后蓝牙异常

image

23.AC695X多路WAV混音, 每个通道独立声音播放, 单独控制音量大小, 各个通道混音在一起输出

AC695X多路wav叠加参考资料.zip

24. AC695X TWS本地转发 单声道配置,在打断提示音后,声音变调变慢的问题

image

25. AC6956C PB2 PB3与PR0和PR1双绑,如果没有使用外挂晶振需要关闭PR0和PR1使能,不然对于PB2 PB3做普通IO和AD检测有影响

image

p33_tx_1byte(R3_OSL_CON,0);    //关闭外挂晶振使能
rtc_port_die(0,0);
rtc_port_pu(0,0);
rtc_port_pd(0,0);
rtc_port_in(0,0);

image 26. 播放内置录音问题,途中停止后再次播放录音文件的总时长会缩小到停止时候的总时长,或出现异常死机。 查看以下修改点。
【金山文档】 0001-1.-flash
0001-1.-flash.rar

26. AC695_310,对于直接在T卡内解压的文件夹会被UI的文件系统识别为文件,复制进去或者创建的不会。

根本原因:winhex识别也是错误的,系统原因。
image 修改办法:修改库,在库里面增加对目录项的判断。
福勇修改_695310_文件夹识别为文件问题.7z
27. AC696_170修改tws配对之后的声道

    if(tws_api_get_role() == TWS_ROLE_SLAVE){
        channel = 'L';//从机L
    }else{
        channel = 'R';//主机R
    }
    
    tws_api_set_local_channel(channel);

image 28. AC696 断网情况下点击小度,会出现小度提示音前面部分被吞字情况。 点击小度会播放“请检查下网络后再试试吧”,DAC出来听起来变成了“查下网络后再试试吧”,前面的字被吞了,用蓝牙分析仪抓包空中包是可以听得清楚的。
https://pms.jieliapp.com/user/#/workflow/problem/sub?id=1976202961125240833
问题原因:数据流suspend时创建丢数据timer,将所有数据清空。唤醒重播前删除timer,但存在不能及时删除timer的问题。清数据处理改成只清除部分数据
处理方案:
image

static void abandon_a2dp_data(void *p)

 { 
        u8 *packet; 
       while ((a2dp_media_get_packet_num() > 10) && (a2dp_media_try_get_packet(&packet) > 0)) {

                a2dp_media_free_packet(packet); 

       }
}
  1. AC695 310 修改超距后回连,获取不到MAP时间补丁 btstack-695-v310 map 补丁(修改手机超距后回连获取不到时间).zip
  2. AC696 170 USB DM与SD DATA复用之后 有些U盘插入打印超时 原因:部分U盘在复用时出现没有应答数据给到主控,导致主控超时退出
    修改:在出现没有应答的时候发送reset给从机、加大等待延时
    测试程序:ac696x_soundbox_sdk-170-USB的DP与SD的DATA复用-部分U盘播放不了.7z
    usb没应答导致pend超时返回11:
    image
  3. AC696 170 特殊m4a文件无法解码 修改方法:
    1、更新m4a_tws_lib.a库
    m4a库更新补丁.rar
    2、按如下截图使能对应三个宏。
    image 3、增加如下三个变量的定义。
const u8 config_m4a_id3_enable = 0;
const int JL_HW_FFT_V = 3;
const int const_audio_m4a_dec16_fifo_precision = 24;

image

  1. 696 V170 有TWS情况下 连接谷歌 pixel8、华为P60手机,较大概率连接不上 复现步骤:
    音箱上有TWS状态信息,一直在switch状态轮转的时候连接。
    问题原因:
    谷歌手机连接第一次必定失败+音箱重开可发现可连接失败。
    这个谷歌手机第一次连接必定失败,需重新开启可发现可连接,让手机那边回连。但是音箱上状态没有及时更新,导致没有打开可发现可连接,手机回连失败。
    image 解决办法:
    更换判断条件
    image

32. 696 V170 AUX打开ADC通道 跟 模拟通道 分时复用后,调音量出现PO 声

AD转 模拟的时候 清空下这个几寄存器。
处理方法:

JL_AUDIO->ADC_CON = 0;
JL_ANA->ADA_CON0 = 0;
JL_ANA->ADA_CON1 = 0;
JL_ANA->ADA_CON2 = 0;
JL_ANA->ADA_CON3 = 0;
  1. 696 V170 仅选择IIS 输出,通话mic 无声,但是IIS输出是正常的 配置:
    image 解决办法:在mic 打开的时候,供电同步打开
    image
    SFR(JL_ANA->DAA_CON2, 19,  1,  1);          // VCM_EN_11v
     JL_ANA->DAA_CON0 |= (BIT(6) | BIT(5));   //audio vbias dis audio ibias dis vcm dis
 
    SFR(JL_ANA->DAA_CON0, 13,  1,  1);          // CHOPPER_CLK_EN_11v

mic 关闭的时候,供电同步关闭
image

    SFR(JL_ANA->DAA_CON2, 19,  1,  0);          // VCM_EN_11v
     JL_ANA->DAA_CON0 &= ~(BIT(6) | BIT(5));   //audio vbias dis audio ibias dis vcm dis
    SFR(JL_ANA->DAA_CON0, 13,  1,  0);          // CHOPPER_CLK_EN_11v

在此基础上:通话回音消不掉,且配置成单工模式 近端说话无声
原因: 获取参考数据异常,而单工通话是根据远端声音(参考数据)触发判断阈值是进入单端模式还是双端模式,参考数据异常,误判为远端一直在说话,所以近端mic 无声。
修改办法:增加将IIS 输出数据作为参考数据。
image 注意若使用AGC 实现单工模式,需要将aec和nlp 使能关闭,不然近端说话会有卡顿,且出现异常打印: (error): <Error>: [AEC_USER]aec inbuf full
公版sdk对比具体文件见gitlab外网链接:
gitlab外网:Files · bugfix_1.7.0_仅IIS输出蓝牙通话mic无声 · SOUNDBOX / 非可视化 / ac696x_soundbox_sdk · GitLab
34. ac696n_earphone_v0.2.0无法回连iPhone16 ac696n_earphone_v0.2.0无法回连iPhone16.rar

资料下载

最新公版SDK(已打补丁):

AC696N

添加以下补丁修改:
1、AC696N SDK FM不停台和漏电联合补丁修改V2
2、关于AC696N SDK对E版、G版和之后的版本芯片兼容说明
3、关于修复AC696N蓝牙地址生成错误(固定地址)的修改说明

git链接:GitLab
【金山文档】 soundbox_696_sdk1.7.0_patch

测试案例:

  1. TWS音箱: git链接:GitLab
    【金山文档】 soundbox_696_tws音箱_1.7.0
    添加TWS+蓝牙HID独立模式的参考例子
    ac696x_soundbox_sdk(feature_1.7.0_TWS音箱加HID).zip
    soundbox_695_tws音箱_3.1.0.zip(GitLab)

  2. USB IF 认证 #define USB_DEVICE_CLASS_CONFIG (SPEAKER_CLASS|MIC_CLASS)
    demo:ac695n_soundbox_sdk-3.1.0-SPEAKER_CLASS&MIC_CLASS-USBIF.7z
    耳机参考代码:AC700N_earphone_release_V1.3.0-USBIF-参考代码.zip

  3. 虚拟RTC时钟 RTC相关应用.otl

高低音调节代码

主要是两个case
#if TCFG_EQ_ENABLE && TCFG_MIC_TUNNING_EQ_ENABLE
    case KEY_MIC_EQ_TEST:
        printf("KEY_MIC_EQ_TEST\n");
        {
            static s8 low_gain = 0;
            // low_gain++;
            // if(low_gain>0)low_gain = -12;
            if(low_gain == 0)
            {
                low_gain = -12;
            }else{
                low_gain = 0;
            }
            extern void mic_tunning_eq_update(u8 index, float gain);
            mic_tunning_eq_update(0,low_gain);
            printf("gain %d\n",low_gain);

        }
        break;
#endif
    case KEY_MUSIC_EQ_TEST:
        printf("KEY_MUSIC_EQ_TEST\n");
        //************ 高低音测试
        // {
        //     static int low_vol = 0;
        //     static int high_vol = 0;
        //     struct high_bass param = {0};

        //     low_vol++;
        //     if(low_vol>0)low_vol = -12;

        //     {   
        //         param.freq = 125;
        //         param.gain = low_vol;
        //         mix_out_high_bass(AUDIO_EQ_BASS, &param);
        //     }
        //     printf("gain %d\n",low_vol);

        // }
        //*********** EQ文件切换测试
        extern void user_eq_change(void);
        user_eq_change();
        break;

soundbox_695(高低音测试代码).zip
4. AUX当USB mic 立体声输入

关键点:
a.具体修改LINEIN_PC_ENABLE宏定义的内容
b.需要卸载驱动重新安装驱动

soundbox_695(AUX当USB mic 立体声输入).zip

  1. AC696N-2M包SDK(BT box) ac696n_soundbox_sdk_v1.7.0_2M包.zip

  2. AC695N-加llns降噪 AC695N_soundbox_sdk_v310_llns.rar
    695 BT模式叠加linein,并且linein的左右声道单独控制音量
    AC695N_soundbox_sdk_release_3.1.2-linein叠加到bt模式上并且左右声道单独控制音量.7z
    内部:git地址

  3. AC695N/AC696N ad io与led7复用 代码:
    695:featrue_AD与LED7复用
    696:Files · featrue_AD与LED7复用(相对695 添加lienin检测与sd cmd复用)
    imageimage

  4. 695 3.1.2SDK串口在线调音 Files · feature_串口在线调音 · SOUNDBOX / 非可视化 / ac695n_soundbox_sdk · GitLab

  5. 695 3.1.2SDK UART0保留调试功能的同时用RX接收数据 Files · feature_sdk_310_UART0_RX · SOUNDBOX / 非可视化 / ac695n_soundbox_sdk · GitLab

  6. 696 170 SDK pc模式下电脑管理自内部flash定义区域 原理:
    把内部flash自定义区挂载为fat文件系统,通过fat文件系统进行读写
    代码:Files · feature_pc管理内置flash自定义区域 · SOUNDBOX / 非可视化 / ac696x_soundbox_sdk · GitLab
    工具:FAT镜像文件生成工具_1.0.11.exe
    注意事项:
    imageimageimageimageimageimageimageimageimage

  7. 捕获外部io上升沿、下降沿 中断 相关资料:TIMER.otl
    696:Files · case_外部io上下沿捕获(中断) · SOUNDBOX / 非可视化 / ac696x_soundbox_sdk · GitLab
    695:Files · case_外部io上下沿捕获(中断) · SOUNDBOX / 非可视化 / ac695n_soundbox_sdk · GitLab

  8. 695 310 MUSIC下获取当前播放音频文件名以及所在文件夹名称 Files · feature_music下获取当前歌曲名以及所在文件夹名 · SOUNDBOX / 非可视化 / ac695n_soundbox_sdk · GitLab
    测试接口 music_player_get_cur_name_or_path_test

void music_player_get_cur_name_or_path_test(void){

    // 检查是否有正在播放的文件, 没有则跳过
    FILE *file = music_player_get_file_hdl();
    if (file == NULL) {
        return;
    }

    // fscan_test();
    char dir_name[128] = {0};
    char file_name[128] = {0};
    string_info get[2] = {
        {dir_name, sizeof(dir_name)},
        {file_name, sizeof(file_name)}
    };

    memset(dir_name, 0, sizeof(dir_name));
    memset(file_name, 0, sizeof(file_name));
    music_player_get_cur_name_or_path_utf8(get, GET_STRING_FILE, true);
    y_printf(">>>>>>>>1>>>>>>>:file_name = %s\n", get[0].string);


    memset(dir_name, 0, sizeof(dir_name));
    memset(file_name, 0, sizeof(file_name));
    music_player_get_cur_name_or_path_utf8(get, GET_STRING_DIR, true);
    g_printf(">>>>>>>>2>>>>>>>:dir_name = %s\n", get[0].string);


    memset(dir_name, 0, sizeof(dir_name));
    memset(file_name, 0, sizeof(file_name));
    // 获取文件名和目录名
    // 0: 文件名
    // 1: 目录名
    music_player_get_cur_name_or_path_utf8(get, GET_STRING_FILE_AND_DIR, true);
    r_printf(">>>>>>>>3>>>>>>>:file_name = %s\n", get[0].string);
    r_printf(">>>>>>>>4>>>>>>>:dir_name = %s\n", get[1].string);
}

新增文件:
image

本文档包含以下子页面

  • AC696X软件问题整理
  • AC696X软件问题整理
  • AC695X软件问题整理
  • AC695X软件问题整理_1722249702
  • AC608X软件问题整理
Prev
AC704N、 AC705N相关应用
Next
JL701N音箱问题整理