1. 杰理AC701N开发环境概述
杰理AC701N是国产蓝牙音频芯片中的明星产品,广泛应用于TWS耳机、蓝牙音箱等设备开发。作为深耕蓝牙音频开发多年的工程师,我完整记录下这套开发环境的搭建过程,帮助开发者避开那些官方文档没写的"坑"。
这套开发环境的核心是JLStudio集成开发工具,配合专用烧录器和调试串口,构成了完整的开发闭环。与高通QCC系列或恒玄BES平台相比,杰理方案的优势在于本土化支持完善、开发门槛较低,特别适合中小型音频设备厂商快速量产。
注意:开发前需提前准备好杰理开发者账号,这是获取SDK和工具链的必要条件。账号审核通常需要1-3个工作日,建议在硬件采购阶段就提前申请。
2. 开发环境搭建全流程
2.1 工具链安装与配置
首先从杰理官网下载最新版JLStudio(当前最新版本为V2.3.8)。安装时需注意:
- 安装路径不要包含中文或特殊字符
- 安装过程中会自动安装USB驱动,需保持网络连接
- 建议勾选"创建桌面快捷方式"方便后续使用
安装完成后首次启动会提示登录,这里需要使用已审核通过的开发者账号。登录成功后界面主要分为三个功能区:
- 左侧:项目管理窗口
- 中部:代码编辑区
- 右侧:调试信息输出
实测发现,在Windows 11系统下运行时需要右键选择"以管理员身份运行",否则可能出现USB设备识别异常的情况。
2.2 SDK获取与工程创建
成功登录后,按以下步骤获取SDK并创建工程:
- 点击菜单栏"File"→"New Project"
- 在弹出的对话框中选择"AC701N"平台
- 勾选"Download SDK"选项
- 指定工程保存路径(建议单独建立工作目录)
- 点击"Create"开始下载SDK
SDK下载完成后会自动解压并创建基础工程框架。整个过程耗时约5-10分钟(取决于网络状况)。这里有个实用技巧:可以在晚上非高峰时段提前下载好各版本SDK存档,避免每次新建工程都要重复下载。
2.3 硬件连接与烧录模式
杰理开发板的连接有严格顺序要求,错误操作可能导致设备无法识别:
- 先不要给开发板供电
- 将烧录器的USB Type-C接口连接到开发板的调试端口
- 将烧录器另一端USB-A接口连接电脑
- 按住开发板上的"MODE"键不放
- 给开发板上电(此时继续保持MODE键按下)
- 当烧录器绿灯熄灭时,松开MODE键
成功进入烧录模式后,电脑设备管理器会出现"BR28"开头的设备。如果未能识别,可以尝试以下排查步骤:
- 检查USB线材质量(建议使用原装线)
- 重新插拔USB接口(优先选择主板原生USB口)
- 更新烧录器驱动(在JLStudio安装目录/drivers下)
3. 固件烧录与调试
3.1 首次烧录操作
在JLStudio中完成以下烧录步骤:
- 点击工具栏"Download"按钮
- 选择刚刚创建的工程目录
- 确认目标设备显示为"BR28"
- 点击"Start"开始烧录
烧录过程中进度条会实时显示状态,完整烧录通常需要30-60秒。成功后开发板会自动重启,此时可以通过串口查看启动日志。
关键细节:烧录完成后建议等待10秒再操作,因为芯片内部还有固件校验过程,过早断电可能导致系统异常。
3.2 串口调试配置
杰理平台提供三种调试输出方式:
- UART串口(需外接转换器)
- USB虚拟串口(推荐)
- 蓝牙日志(需要特殊配置)
最方便的当属USB虚拟串口模式,配置方法如下:
- 修改工程中
board_config.h文件 - 找到
DEBUG_PORT_SELECT宏定义 - 将其值改为
DEBUG_PORT_DP(即USB虚拟串口) - 重新编译烧录固件
配置成功后,通过USB线连接开发板,在设备管理器会出现新的COM端口。推荐使用Tera Term或Putty等工具查看日志,参数设置为:
- 波特率:115200
- 数据位:8
- 停止位:1
- 无校验位
3.3 工程管理与代码修改
JLStudio的工程管理有几个实用特性值得注意:
- SDK路径隔离:每个新建工程都会自动复制一份独立的SDK到工程目录,避免多项目互相干扰
- 配置可视化:音频参数、GPIO定义等可通过图形界面配置,自动生成对应代码
- 版本兼容性:不同版本的JLStudio对SDK有严格要求,混用可能导致编译错误
进行代码修改后,建议遵循以下编译流程:
- 点击"Rebuild All"完全重新编译
- 查看底部输出窗口的编译信息
- 确认无错误后执行烧录
- 通过串口验证修改效果
4. 常见问题与解决方案
4.1 设备识别异常排查
现象:烧录器连接后电脑无法识别BR28设备
解决方案:
- 检查设备管理器"通用串行总线控制器"中是否存在未知设备
- 尝试手动安装驱动(路径:JLStudio安装目录/drivers/BR28)
- 更换USB端口(建议使用主板原生USB3.0接口)
- 测试烧录器单独工作是否正常(绿灯常亮表示正常)
4.2 烧录失败处理
典型错误提示:
- "Device not found"
- "Verify failed"
- "Timeout error"
对应解决方法:
- 重新进入烧录模式(严格按3.3节步骤操作)
- 降低烧录速度(在JLStudio设置中将波特率改为921600)
- 检查电源稳定性(建议使用稳压电源供电)
- 尝试更换烧录器或开发板
4.3 串口无输出调试
当配置为USB虚拟串口却无输出时,可按以下步骤排查:
- 确认
DEBUG_PORT_SELECT设置正确 - 检查Windows设备管理器中的COM端口编号
- 尝试其他串口工具(如SecureCRT)
- 在代码中添加测试打印(如
printf("test\n")) - 测量开发板USB DP/DM信号是否正常(需示波器)
5. 开发技巧与优化建议
5.1 高效开发工作流
经过多个项目的实践,我总结出以下高效工作流程:
- 建立代码版本管理(推荐Git)
- 创建基础工程模板(包含常用驱动和配置)
- 使用JLStudio的"Compare"功能对比不同版本差异
- 定期备份整个工程目录(特别是SDK部分)
5.2 内存优化技巧
AC701N的内存资源有限,开发时需特别注意:
- 使用
__attribute__((section(".xdata")))将大数组放在外部RAM - 避免在音频回调函数中进行内存分配
- 合理设置各任务的堆栈大小
- 定期使用
os_get_mem_usage()监控内存使用情况
5.3 音频参数调优
对于蓝牙音频开发,这几个参数需要特别关注:
- A2DP延迟设置(默认120ms,可根据需求调整)
- 编码器比特率(影响音质和功耗)
- 麦克风增益(需结合硬件设计调整)
- 回声消除参数(针对耳机通话场景)
建议在audio_cfg.c文件中建立专门的调试宏,方便快速切换不同参数组合:
c复制// 音频调试开关
#define DEBUG_AUDIO_PROFILE 1
#if DEBUG_AUDIO_PROFILE
#define A2DP_LATENCY_MS 80
#define SBC_BITRATE 328000
#else
#define A2DP_LATENCY_MS 120
#define SBC_BITRATE 256000
#endif
6. 进阶开发指导
6.1 自定义GPIO配置
杰理平台的GPIO功能非常灵活,配置步骤包括:
- 在
board_config.h中定义引脚功能 - 在驱动层初始化对应引脚
- 编写应用层控制逻辑
例如配置一个LED指示灯:
c复制// board_config.h
#define GPIO_LED_CTRL GPIO_PA5
#define LED_CTRL_PIN PA5
// drv_gpio.c
void led_init(void)
{
gpio_set_die(GPIO_LED_CTRL, 1);
gpio_set_direction(GPIO_LED_CTRL, 0);
gpio_set_pull_up(GPIO_LED_CTRL, 0);
gpio_set_pull_down(GPIO_LED_CTRL, 0);
}
// app层控制
void led_toggle(void)
{
static u8 sta = 0;
sta = !sta;
gpio_write(GPIO_LED_CTRL, sta);
}
6.2 低功耗优化
对于耳机类产品,低功耗设计尤为关键:
- 合理配置蓝牙广播间隔
- 优化休眠唤醒流程
- 关闭未使用的外设时钟
- 使用电源管理API控制各模块供电
关键代码示例:
c复制void power_save_config(void)
{
// 配置休眠参数
pmu_set_sleep_mode(PMU_DEEP_SLEEP);
pmu_set_wakeup_io(WAKEUP_IO_PA0, 1);
// 关闭不必要的外设
clock_disable(CLOCK_USB);
clock_disable(CLOCK_SDIO);
}
6.3 量产注意事项
从开发转向量产时需要特别注意:
- 烧录工具切换为量产型烧录器
- 配置量产测试模式(简化蓝牙配对流程)
- 添加硬件版本识别代码
- 实现自动测试接口
建议在代码中添加专门的量产模式宏:
c复制// 量产模式配置
#define MASS_PRODUCTION_MODE 1
#if MASS_PRODUCTION_MODE
// 关闭调试日志
#define DEBUG_ENABLE 0
// 简化蓝牙配对流程
#define SIMPLE_PAIRING 1
// 启用自动测试接口
#define AUTO_TEST_PORT_EN 1
#endif
开发过程中养成添加详细注释的习惯,特别是对于硬件相关的配置,要注明修改原因和影响范围。例如:
c复制/*
* 将蓝牙发射功率设置为+6dBm
* 注意:实际量产时需要根据认证测试结果调整
* 日期:2023.08.15
* 修改人:张三
*/
#define RF_TX_POWER 6
