KDocs 研发资料库
  • 手表穿戴技术应用文档入口汇总
  • JL707N穿戴客述问题FAQ
  • 彩屏仓 硬件开发指南 与 量产作业流程规范
  • 彩屏仓 AC98N和JL701烧录升级注意事项
  • JL707 硬件开发资料
  • JL707 手表硬件设计注意事项 总结
  • 穿戴生产烧录OTA和key文件添加使用说明
  • JL707N-入门到进阶开发指导文档
  • 彩屏仓982相关
  • 彩屏仓耳机介绍
  • 杰理701_707双屏demo介绍
  • 707电子吧唧开发资料
  • GPIO相关
  • UART串口相关
  • SPI相关
  • nandflash相关
  • norflash相关
  • IIC相关
  • PWM相关
  • SD卡相关
  • 定时器TIMER
  • 文件系统接口设计说明文档
  • 音视频录像开发流程
  • rdec编码器
  • 穿戴功耗数据标准
  • 手表蓝牙开发文档
  • 701蓝牙PAN联网demo
  • BLE开发使用说明
  • 701手表2.0.0版本SDK EQ在线调试和离线调试方法 V1.1
  • JL707 手表喇叭输出声音大小评估方法 V1.0
  • JL707 手表音频EQ调试方法 V1.0
  • AC707N 手表通话写卡 软件配置方法
  • 录音功能
  • 701手表2.X.X系列SDK调试EQ配置方法及音频调试技巧V1.1
  • 701手表104版本SDK EQ在线调试和离线调试方法 V1.1
  • mic2dac示例
  • P11 SensorHub相关
  • 手表升级操作文档
  • AC707NGPU
  • DBI模块介绍
  • GPU模块介绍
  • 701N屏幕驱动配置说明
  • 701N_UI编辑工具用户手册
  • 支付宝资料
  • 支付宝硬件接入资料
  • 支付宝乘车码接入资料
  • CAT1 接入文档
  • 701N_WATCH_CAT1开发说明
  • Findmy功能
  • music模式相关
  • 707电池曲线
  • 707N内置FLASH挂载FAT文件系统251112_v1.2
  • AC707N_本地视频播放demo(AVI-MJPEG-PCM)
  • 光波导屏幕调试
  • 耳机研发和生产流程 指南
  • 707-NandFlash 代码和UI资源独立烧录方案
  • 彩屏仓时间同步补丁
  • 彩屏仓抖音点赞移植
  • 707LVGLv8双屏开发
  • 707N蓝牙互传图传demo
  • AVIPCM数据流接入AIVOICE
  • Flash分区操作demo
  • 手表发射问题
  • 701_707 双备份升级DEMO
  • 707_乘车码刷码失败问题_共性

JL707 手表音频EQ调试方法 V1.0

📎 原始文档:https://www.kdocs.cn/l/cguBGwE1wVMl JL707 手表音频EQ调试方法 V1.0

一、EQ调试工具使用前期准备:

  1. 软件版本要求: 1.0.0(patch_00.07)开始支持音频调试,之前的软件版本还不支持,旧的版本请升级到该1.0.0(patch_00.07)版本,如果有更新的版本请使用最新的版本。
    image

  2. 请先安装杰理可视化工具。

    1. 没有安装包请联系工程助理吕工获取。安装后需要账号登录使用,没有账号清联系工程助理吕工获取。 image
  3. 双击JL Studio运行程序。登录。 imageimage

  4. 点击新建,准备创建一个项目。 image

  5. 选择保存路径,给自己的项目一个名称,然后点击创建。 image

  6. 点击创建后等待1分钟,就会弹出下面的界面。 image 从上面的界面可以看到很多配置选项,这就是可视化界面编程厉害的地方,以前我们是通过直接修改代码来修改软件配置,通过这个可视化编程,就可以通过简单的点击鼠标选择配置来修改软件代码实现我们想要的程序功能。比如开打印,开在线调试音频,修改蓝牙名字,修改音量,修改电源配置等等都可以通过可视化界面编程来完成。

  7. 调试EQ硬件环境搭建 : (1)确认样机硬件环境,MIC、喇叭等要打好胶,打胶密封避免漏气,特别是MIC,不打好胶密封可能会有严重的回音问题。(2))整机也要密封好,避免漏气。(3)从整机背面塑料壳钻取一个小孔,引4根细线出来烧录用,分别是主板VBAT、DM、DP、GND(在线EQ调试时,DM、DP脚作为串口调试接口);电池不能与主板直接连接(电池要可断电,不断电不能烧录程序),最后用胶密封钻孔。
    imageimage

二、离线EQ调试:

  1. 离线调音方法:点击音频流程,再点击媒体,然后双击SW EQ。 imageimage tips:增加EQ段数为10段后,707N的EQ调试界面与701N的EQ调试界面是一样的(建议可以增加为10段),在701N上的调试拉EQ曲线(音质效果)的经验在707N上同样适用!

  2. 进入以下EQ调试界面,可以开始调音。 image

  3. 根据腔体特性和喇叭的特性,调整EQ的参数。调整好后X掉窗口。 image

  4. 用强制升级工具连接样机。 在电脑的设备管理器--磁盘驱动器 可以看到BR35 UBOOT1.00 USB Device盘符说明样机连接电脑成功。
    image

  5. 点击编译,下载程序到样机。 imageimage 下载完成后,实际测试样机,确认参数已经生效。

针对不使用JL Studio下载程序,使用tools目录的download.bat下载程序:

注意stream.bin的加载顺序,双击运行download.bat,程序会先把output目录的stream.bin文件copy到watch目录然后下载进去。所以我们要替换stream.bin文件时候,只需要替换output目录里面的即可。如果客户的代码管理结构或者脚本文件加载顺序和公版的不同,客户需要根据实际的脚本情况来加载。
imageimage

三、在线EQ调试:

  1. 在线调试EQ方法。 1.1 点击板极配置,点击使能开关,通信方式选择串口。然后重复步骤11,点击编译,下载程序到样机。调试串口的宏(串口打印)也打开(注意打印口不能选DM、DP)
    image 开了在线调试,有的SDK版本可能编译报错:
    image 需要做如下修改:
    image

1.2 使用一个串口工具连接样机,GND--GND,RXD--USBDP,TXD--USBDM。特别注意:不要IO冲突了,例如SDK里面是用dp、dm做旋转编码器的io,调试的时候需要关了旋转编码器功能。
image 1.3 点击右上角的未连接,然后选择对应的串口。
image 1.4 然后点击连接,波特率1000000。连接成功会显示已连接。
imageimage 1.5 接下来的调音步骤和离线调音一样,只不过修改的音频参数会实时发送到样机生效。

1.6 在线调音完成,点击调音,再点击导出调音,选择stream.bin方式,选择保存的工作目录。所有的音频相关的参数都保存在stream.bin文件中。
imageimage 1.7 copy stream.bin文件,粘贴到tools目录下替换原来的stream.bin文件,然后再编译下载进去样机。
imageimage 1.8 在线调音完成后,程序需要把在线调音开关使能关掉。
image

四、音乐播歌DRC:

  1. 音乐DRC使用方法
    由于内置功放的输出功率比较小(没有外置功放),必须要使用DRC来抬高整体的音量大小。下面是一个经验参数,可以直接套用。注意,外置功放的项目媒体播歌不适用DRC来抬高总体增益。
    imageimageimage 输出增益给36dB,然后形状压制40dB,这样可以不失真的放大声音。

五、通话DRC:

  1. 通话DRC使用方法
    通话DRC使用方法和音乐DRC方法相同。
    imageimageimageimage

imageimageimageimage ( ps:示例截图仅供参考,需根据样机实际效果拉曲线 )
至此DRC节点添加完成。

六、通话调试:

1.707N通话调试:

  1. 通话调试也是在JL Studio上进行调试,打开工程文件点击音频流程---->蓝牙通话 image

  2. 点击“单MIC通话”,进入通话及回音参数调试。不熟悉707通话调试及回音处理的,可以点击单MIC通话--->帮助文档;里面有详细的通话调试文档可以参考(ps:基本与701的通话调试参数一样,只是各个参数的位置不一样) imageimage

  3. MIC的模拟增益调节在ADC---->增益这里调节,对应701里面的配置项MIC_AGAIN(MIC增益);需要注意的是,前级MIC模拟增益增大,可以适当增加MIC拾音的效果,但同时也会把噪声放大,回音也会变大,对回音效果影响比较大,不宜盲目过分增大,调到一个适宜值即可。 imageimage

七、lite版本增加音频流程调试

lite版本为了省空间,stream.bin文件就不用了,直接通过写参数到代码中,得到想要的音效效果。
使用过程:使用工具配置好音频参数,得到想要音效效果-> 打印出对应音效效果参数-> 去掉stream.bin,直接写代码里。

note: lite版本能够调试音效节点,在audio_effects_lite.c这个文件有说明。
image

image

  • 以调试音乐EQ为例 1.下载一份lite版本带音频流程工具的工程, 只使用这个工程中的音频流程进行调试。
    image 2.在自己sdk中开启对应的宏,将stream.bin下载进去,为了先配合上面拿到工程中音频工具进行调试。
    image little版本需要把低功耗模式设置成不进低功耗,否则会连接失败
    image

3.可以使用在线调试,离线调试方式去调试,得到想要的音效效果。
4.比如音乐eq节点,得到想要的音效效果后。将音乐eq参数打印出来,记录下对应参数。
imageimage

5.关闭TCFG_STREAM_BIN_ENABLE这个宏了,这样stream.bin的空间可以省出来。然后可以将上个步骤记录的音乐eq节点参数,写在对应的音乐eq节点配置地方
image 其他的音效节点的配置,也都是在audio_effects_lite.c 里面的 eff_param_init(void)函数

  • drc节点调试 drc节点调试和上面说到eq节点调试类似,但是有些参数需要注意。
    比如music drc节点,wdrc_cfg.parm.threshold[]这个数组,需要填写的参数。
    image 两种办法填写该参数。
  1. 通过把stream.bin下载进去,可以参考这里打印,然后明确对应的数据。 image 打印出来的数据。
    image

  2. 直接查看音频工具中数据填写进去,in对应x轴 out对应y轴 ,界面坐标值 + 90.3, 就是要填进去的值。 image 比如图中第0个点,坐标是(-90, -90),添加代码中值就应该是(0.3, 0.3)。

    wdrc_cfg.parm.threshold[0].in_threshold = 0.3f;
    wdrc_cfg.parm.threshold[0].out_threshold = 0.3f;

图中有多少个点,就依次填进去对应数据参数里面。
如下是DRC的经验参数,可以直接使用:
image

  • lite版本通话参数调试: 7.1 lite版本软件没有蓝牙通话参数调试界面,需要通过打印的方式把初始化的参数打印出来,然后再填写进去代码里面。
    打印通话参数的方法:
    增加下面的代码:
    #if (TCFG_AUDIO_CVP_SMS_ANS_MODE) || (TCFG_AUDIO_CVP_SMS_DNS_MODE) && TCFG_STREAM_BIN_ENABLE
    name = "EscoCvp";
    printf("[%s][line:%d]:EscoCvp param init",func,LINE);
    ret = jlstream_read_form_data(0, name, 0, &cvp_node_cfg);
    if (ret) {​
    cvp_node_param_cfg_update(&cvp_node_cfg, &cvp_online_cfg);
    eff_module[EFF_ESCO_CVP_MODULE].par = &cvp_online_cfg;
    eff_module[EFF_ESCO_CVP_MODULE].name = name;
    printf("============esco cvp==== %s\n", name);
    //新增:打印EscoCvp节点初始参数
    printf("EscoCvp节点初始参数:\n");
    printf(" ref_mic.en = %d\n", cvp_node_cfg.ref_mic.en);
    printf(" ref_mic.ref_mic_ch = 0x%x\n", cvp_node_cfg.ref_mic.ref_mic_ch);
    printf(" pre_gain.en = %d\n", cvp_node_cfg.pre_gain.en);
    printf(" pre_gain.talk_mic_gain = %.2f\n", cvp_node_cfg.pre_gain.talk_mic_gain);
    printf(" aec.en = %d\n", cvp_node_cfg.aec.en);
    printf(" aec.aec_dt_aggress = %.2f\n", cvp_node_cfg.aec.aec_dt_aggress);
    printf(" aec.aec_refengthr = %.2f\n", cvp_node_cfg.aec.aec_refengthr);
    printf(" nlp.en = %d\n", cvp_node_cfg.nlp.en);
    printf(" nlp.es_aggress_factor = %.2f\n", cvp_node_cfg.nlp.es_aggress_factor);
    printf(" nlp.es_min_suppress = %.2f\n", cvp_node_cfg.nlp.es_min_suppress);
    printf(" ns.en = %d\n", cvp_node_cfg.ns.en);
    printf(" ns.ns_aggress = %.2f\n", cvp_node_cfg.ns.ns_aggress);
    printf(" ns.ns_suppress = %.2f\n", cvp_node_cfg.ns.ns_suppress);
    printf(" ns.init_noise_lvl = %.2f\n", cvp_node_cfg.ns.init_noise_lvl);
    printf(" agc.en = %d\n", cvp_node_cfg.agc.en);
    printf(" agc.ndt_fade_in = %.2f\n", cvp_node_cfg.agc.ndt_fade_in);
    printf(" agc.ndt_fade_out = %.2f\n", cvp_node_cfg.agc.ndt_fade_out);
    printf(" agc.dt_fade_in = %.2f\n", cvp_node_cfg.agc.dt_fade_in);
    printf(" agc.dt_fade_out = %.2f\n", cvp_node_cfg.agc.dt_fade_out);
    printf(" agc.ndt_max_gain = %.2f\n", cvp_node_cfg.agc.ndt_max_gain);
    printf(" agc.ndt_min_gain = %.2f\n", cvp_node_cfg.agc.ndt_min_gain);
    printf(" agc.ndt_speech_thr = %.2f\n", cvp_node_cfg.agc.ndt_speech_thr);
    printf(" agc.dt_max_gain = %.2f\n", cvp_node_cfg.agc.dt_max_gain);
    printf(" agc.dt_min_gain = %.2f\n", cvp_node_cfg.agc.dt_min_gain);
    printf(" agc.dt_speech_thr = %.2f\n", cvp_node_cfg.agc.dt_speech_thr);
    printf(" agc.echo_present_thr = %.2f\n", cvp_node_cfg.agc.echo_present_thr);
    printf("AEC_CONFIG参数:\n");
    printf(" mic_again = %d\n", cvp_online_cfg.mic_again);
    printf(" dac_again = %d\n", cvp_online_cfg.dac_again);
    printf(" aec_mode = %d\n", cvp_online_cfg.aec_mode);
    printf(" ul_eq_en = %d\n", cvp_online_cfg.ul_eq_en);
    ​} else {​
    log_error("============esco cvp not exist==== %s\n", name);
    ​}
    #endif
    #if TCFG_ADC_NODE_ENABLE && TCFG_STREAM_BIN_ENABLE
    name = "EscoMic";
    printf("[%s][line:%d]:EscoMic param init",func,LINE);
    ret = jlstream_read_form_data(0, name, 0, &adc_node_cfg);
    if (ret) {​
    eff_module[EFF_ESCO_MIC_MODULE].par = &adc_node_cfg;
    eff_module[EFF_ESCO_MIC_MODULE].name = name;
    printf("============esco mic==== %s\n", name);
    //新增:打印EscoMic节点初始参数
    printf("EscoMic节点初始参数:\n");
    printf(" mic_en_map = 0x%x\n", adc_node_cfg.mic_en_map);
    for (int i = 0; i < AUDIO_ADC_MIC_MAX_NUM; i++) {​
    if (adc_node_cfg.mic_en_map & AUDIO_ADC_MIC(i)) {​
    printf(" MIC[%d]参数:\n", i);
    printf(" mic_gain = %d\n", adc_node_cfg.param[i].mic_gain);
    printf(" mic_pre_gain = %d\n", adc_node_cfg.param[i].mic_pre_gain);
    ​}
    ​}
    ​} else {​
    log_error("============esco mic not exist==== %s\n", name);
    ​}
    #endif
    增加的代码放置的位置:
    image 删除或者注释掉下面的代码:
    image

打印结果:
image 7.2 然后参照打印出来的数据格式,增加下面的代码,手动填写通话参数:
#if 1
#if (TCFG_AUDIO_CVP_SMS_ANS_MODE) || (TCFG_AUDIO_CVP_SMS_DNS_MODE) && TCFG_STREAM_BIN_ENABLE
name = "EscoCvp";
printf("[%s][line:%d]:EscoCvp param init", func, LINE);
cvp_node_cfg.ref_mic.en = 0;
cvp_node_cfg.ref_mic.ref_mic_ch = 0x2;
cvp_node_cfg.pre_gain.en = 0;
cvp_node_cfg.pre_gain.talk_mic_gain = 20.00;
cvp_node_cfg.aec.en = 0;
cvp_node_cfg.aec.aec_dt_aggress = 1.00;
cvp_node_cfg.aec.aec_refengthr = -70.00;
cvp_node_cfg.nlp.en = 1;
cvp_node_cfg.nlp.es_aggress_factor = -3.00;
cvp_node_cfg.nlp.es_min_suppress = 4.00;
cvp_node_cfg.ns.en = 1;
cvp_node_cfg.ns.ns_aggress = 1.25;
cvp_node_cfg.ns.ns_suppress = 0.09;
cvp_node_cfg.ns.init_noise_lvl = -75.00;
cvp_node_cfg.agc.en = 1;
cvp_node_cfg.agc.ndt_fade_in = 1.30;
cvp_node_cfg.agc.ndt_fade_out = 1.30;
cvp_node_cfg.agc.dt_fade_in = 1.30;
cvp_node_cfg.agc.dt_fade_out = 1.30;
cvp_node_cfg.agc.ndt_max_gain = 8.00;
cvp_node_cfg.agc.ndt_min_gain = 0.00;
cvp_node_cfg.agc.ndt_speech_thr = -50.00;
cvp_node_cfg.agc.dt_max_gain = 12.00;
cvp_node_cfg.agc.dt_min_gain = 0.00;
cvp_node_cfg.agc.dt_speech_thr = -40.00;
cvp_node_cfg.agc.echo_present_thr = -70.00;
cvp_node_param_cfg_update(&cvp_node_cfg, &cvp_online_cfg);
eff_module[EFF_ESCO_CVP_MODULE].par = &cvp_online_cfg;
eff_module[EFF_ESCO_CVP_MODULE].name = name;
printf("============esco cvp==== %s\n", name);
#endif
#else
#if (TCFG_AUDIO_CVP_SMS_ANS_MODE) || (TCFG_AUDIO_CVP_SMS_DNS_MODE) && TCFG_STREAM_BIN_ENABLE
name = "EscoCvp";
printf("[%s][line:%d]:EscoCvp param init", func, LINE);
ret = jlstream_read_form_data(0, name, 0, &cvp_node_cfg);
if (ret)
{​
cvp_node_param_cfg_update(&cvp_node_cfg, &cvp_online_cfg);
eff_module[EFF_ESCO_CVP_MODULE].par = &cvp_online_cfg;
eff_module[EFF_ESCO_CVP_MODULE].name = name;
printf("============esco cvp==== %s\n", name);
// 新增:打印EscoCvp节点初始参数
printf("EscoCvp节点初始参数:\n");
printf(" ref_mic.en = %d\n", cvp_node_cfg.ref_mic.en);
printf(" ref_mic.ref_mic_ch = 0x%x\n", cvp_node_cfg.ref_mic.ref_mic_ch);
printf(" pre_gain.en = %d\n", cvp_node_cfg.pre_gain.en);
printf(" pre_gain.talk_mic_gain = %.2f\n", cvp_node_cfg.pre_gain.talk_mic_gain);
printf(" aec.en = %d\n", cvp_node_cfg.aec.en);
printf(" aec.aec_dt_aggress = %.2f\n", cvp_node_cfg.aec.aec_dt_aggress);
printf(" aec.aec_refengthr = %.2f\n", cvp_node_cfg.aec.aec_refengthr);
printf(" nlp.en = %d\n", cvp_node_cfg.nlp.en);
printf(" nlp.es_aggress_factor = %.2f\n", cvp_node_cfg.nlp.es_aggress_factor);
printf(" nlp.es_min_suppress = %.2f\n", cvp_node_cfg.nlp.es_min_suppress);
printf(" ns.en = %d\n", cvp_node_cfg.ns.en);
printf(" ns.ns_aggress = %.2f\n", cvp_node_cfg.ns.ns_aggress);
printf(" ns.ns_suppress = %.2f\n", cvp_node_cfg.ns.ns_suppress);
printf(" ns.init_noise_lvl = %.2f\n", cvp_node_cfg.ns.init_noise_lvl);
printf(" agc.en = %d\n", cvp_node_cfg.agc.en);
printf(" agc.ndt_fade_in = %.2f\n", cvp_node_cfg.agc.ndt_fade_in);
printf(" agc.ndt_fade_out = %.2f\n", cvp_node_cfg.agc.ndt_fade_out);
printf(" agc.dt_fade_in = %.2f\n", cvp_node_cfg.agc.dt_fade_in);
printf(" agc.dt_fade_out = %.2f\n", cvp_node_cfg.agc.dt_fade_out);
printf(" agc.ndt_max_gain = %.2f\n", cvp_node_cfg.agc.ndt_max_gain);
printf(" agc.ndt_min_gain = %.2f\n", cvp_node_cfg.agc.ndt_min_gain);
printf(" agc.ndt_speech_thr = %.2f\n", cvp_node_cfg.agc.ndt_speech_thr);
printf(" agc.dt_max_gain = %.2f\n", cvp_node_cfg.agc.dt_max_gain);
printf(" agc.dt_min_gain = %.2f\n", cvp_node_cfg.agc.dt_min_gain);
printf(" agc.dt_speech_thr = %.2f\n", cvp_node_cfg.agc.dt_speech_thr);
printf(" agc.echo_present_thr = %.2f\n", cvp_node_cfg.agc.echo_present_thr);
printf("AEC_CONFIG参数:\n");
printf(" mic_again = %d\n", cvp_online_cfg.mic_again);
printf(" dac_again = %d\n", cvp_online_cfg.dac_again);
printf(" aec_mode = %d\n", cvp_online_cfg.aec_mode);
printf(" ul_eq_en = %d\n", cvp_online_cfg.ul_eq_en);
​}
else
{​
log_error("============esco cvp not exist==== %s\n", name);
​}
#endif
#endif
#if 1
#if TCFG_ADC_NODE_ENABLE
name = "EscoMic";
printf("[%s][line:%d]:EscoMic param init", func, LINE);
adc_node_cfg.mic_en_map = 0x1;
adc_node_cfg.param[0].mic_gain = 0;
adc_node_cfg.param[0].mic_pre_gain = 1;
eff_module[EFF_ESCO_MIC_MODULE].par = &adc_node_cfg;
eff_module[EFF_ESCO_MIC_MODULE].name = name;
#endif
#else
#if TCFG_ADC_NODE_ENABLE && TCFG_STREAM_BIN_ENABLE
name = "EscoMic";
printf("[%s][line:%d]:EscoMic param init", func, LINE);
ret = jlstream_read_form_data(0, name, 0, &adc_node_cfg);
if (ret)
{​
eff_module[EFF_ESCO_MIC_MODULE].par = &adc_node_cfg;
eff_module[EFF_ESCO_MIC_MODULE].name = name;
printf("============esco mic==== %s\n", name);
// 新增:打印EscoMic节点初始参数
printf("EscoMic节点初始参数:\n");
printf(" mic_en_map = 0x%x\n", adc_node_cfg.mic_en_map);
for (int i = 0; i < AUDIO_ADC_MIC_MAX_NUM; i++)
{​
if (adc_node_cfg.mic_en_map & AUDIO_ADC_MIC(i))
{​
printf(" MIC[%d]参数:\n", i);
printf(" mic_gain = %d\n", adc_node_cfg.param[i].mic_gain);
printf(" mic_pre_gain = %d\n", adc_node_cfg.param[i].mic_pre_gain);
​}
​}
​}
else
{​
log_error("============esco mic not exist==== %s\n", name);
​}
#endif
#endif

八、常见报错处理:

  1. 点击SW EQ调试按钮,出现Flow CRC:校验失败。请重新编译下载错误问题: image 解决方法:
    (1)方法一:按照提示在JL Studio工具重新编译下载一次代码进样机。
    (2)方法二:在你现在打开的这个JL Studio工具,先编译一遍,再找到这个工具下默认对应的程序目录下的output文件夹,
    image

把文件夹内的stream.bin文件复制到你的项目程序(样机能正常跑起来的程序)目录里面的tool文件目录下和output文件目录文件下,替换掉原来的bin 文件,再重新下载程序进样机后,打开JL Studio工具EQ在线调试。
image

(3)方法三:若第一次在JL Studio工具下载SDK后,修改程序是在其他编译软件下载的,可能会导致打开的EQ文件数据节点不匹配导致校验失败;这时可以找到当初第一次下载的工程文件,打开你下载程序进样机对应的JL Studio工具,导出一个stream.bin文件,再打开stream.bin文件工程就好。
image

2、JL Studio工具EQ在线串口调试,连接设备失败,显示“连接失败”、“设备已掉线”问题:
image 解决方法:

  1. A:优先检查串口工具,电脑端口是否对了? B:样机的DM、DP脚和串口工具的TX、RX的接线是否对应了,对换一下看看; C:如果用强制升级工具做串口,工具的拨码开关5、7档位是否拨了?电脑应用上的杰理虚拟串口驱动是否设备在线了?如果在线了也不行,建议可以换一个串口工具(比如CH340)试试。 image
  2. 排查软件是否设置对了?在线EQ调试串口的宏是否打开?还有可以尝试把串口打印的宏也一起打开,注意打印口不能占用串口在线EQ调试用的DM、DP引脚,可以换一个其他普通IO口做打印脚。
  3. 若以上检查都试了也不能连接,也可能是程序里面有串口复用占用了,检查软件是否有占用DM、DP的情况,;若查不出来,可以重新下载一个公版程序进去,只开在线EQ调试功能进行调试。 image
Prev
JL707 手表喇叭输出声音大小评估方法 V1.0
Next
AC707N 手表通话写卡 软件配置方法