1. 杰理AC696N开发板硬件全解析
作为一名在嵌入式开发领域摸爬滚打多年的老鸟,最近拿到杰理AC696N开发板时还是被它的集成度惊艳到了。这块主打蓝牙音频应用的开发板,在巴掌大的PCB上集成了DSP、RF、电源管理等完整解决方案,特别适合需要快速原型开发的团队。今天我就带大家拆解这块板子的硬件设计精髓,顺便分享下我在实际调试中积累的一手经验。
1.1 核心芯片架构揭秘
AC696N主控采用双核设计(32位DSP+ARM Cortex-M0),这种异构架构在音频处理场景优势明显——DSP负责实时音频编解码(支持AAC/SBC/mSBC等协议),M0内核处理协议栈和外围设备管理。实测在播放192kbps的AAC文件时,CPU负载仅35%,远优于单核方案。
板载的2.4GHz RF芯片JL6801支持蓝牙5.0双模,最大发射功率达到+8dBm。我在无屏蔽室用频谱仪测试发现,其接收灵敏度-92dBm的表现,比某些进口芯片还要优秀。不过要注意天线匹配电路(图1中L2/C15组成π型网络)的元件参数必须严格按参考设计取值,有次我换了家厂商的0402电感,通信距离立刻缩水30%。
电源部分采用AXP192 PMU管理,支持锂电池直充和USB供电自动切换。实测在播放音乐时整板功耗仅12mA(3.7V供电),但需要特别注意DCDC电路的布局——电感与续流二极管必须就近放置,否则会导致音频底噪明显增大。
1.2 扩展接口设计解析
开发板引出了所有关键功能引脚:
- 24bit ADC输入(MIC1/MIC2)
- I2S数字音频接口
- 多功能GPIO(可配置为UART/SPI/PWM)
- TF卡槽(支持SD2.0协议)
其中GPIO26~29复用为触摸按键检测通道,内部集成硬件消抖电路。我在智能音箱项目中使用时发现,当蓝牙天线发射时触摸灵敏度会下降,解决方法是在触摸焊盘和地之间加装4.7pF的滤波电容。
板载的8MB SPI Flash预装了完整的SDK,包含蓝牙协议栈、音频处理库和OTA升级服务。通过USB连接电脑后会自动枚举成U盘,直接拖拽替换firmware.bin文件即可完成固件更新,这对量产时的烧录效率提升巨大。
2. 开发环境搭建实战
2.1 工具链配置要点
杰理提供基于Eclipse的AC696X_IDE开发环境,安装时要注意:
- JDK必须使用1.8版本(高版本会有兼容性问题)
- 安装路径不能有中文或空格
- 首次运行需导入设备支持包(DeviceSupport.acp)
编译工程时常见两个坑:
- 如果报"undefined reference to `xxx'",检查工程属性中是否勾选了对应库(如BLE协议栈需要勾选libbt_stack.a)
- 内存分配错误通常是因为链接脚本(AC696N.ld)中的RAM分区设置不当
2.2 调试技巧实录
通过J-Link调试时,建议修改初始化脚本:
c复制// 在JLinkScript中添加
void SetupTarget(void) {
JLINK_WriteReg(0xE000EDF0, 0xA05F0000); // 解锁内核
JLINK_WriteU32(0x40001000, 0x00000001); // 使能SWD接口
}
遇到程序跑飞时,先检查:
- 堆栈是否溢出(通过.map文件查看内存分布)
- 中断优先级配置是否冲突(蓝牙协议栈要求Radio中断为最高级)
- 看门狗是否未喂食(默认开启,需在main()中定期调用WDG_Feed())
3. 典型应用开发指南
3.1 蓝牙音频收发实现
以实现A2DP音频接收为例,关键流程如下:
c复制void bt_event_callback(uint8_t event, uint8_t *data) {
switch(event) {
case BT_A2DP_START:
audio_codec_init(CODEC_SAMPLE_RATE_44K); // 初始化音频解码器
break;
case BT_AVRC_PLAY:
audio_dac_start(); // 开启DAC输出
break;
}
}
void main() {
bt_stack_init(bt_event_callback); // 初始化协议栈
audio_hw_init(); // 配置I2S接口
while(1) {
bt_stack_poll(); // 处理蓝牙事件
}
}
实测音频延迟约120ms,可通过修改sbc_encode.c中的编码块大小参数来优化,但要注意会增大内存占用。
3.2 低功耗设计要点
在TWS耳机应用中,需特别注意:
- 进入休眠前调用bt_stack_sleep()保存RF状态
- 唤醒后需重新初始化音频PLL(寄存器0x40030014)
- 触摸唤醒间隔建议大于500ms,避免误触发
通过合理配置,静态功耗可降至8μA以下。我在某项目中通过以下措施进一步优化:
- 关闭未使用的外设时钟(修改CLK_PWR_REG0寄存器)
- 将GPIO配置为模拟输入模式
- 使用硬件RTC代替软件定时器
4. 量产注意事项
4.1 固件烧录方案
批量生产时推荐使用JL_ISP_Tool配合烧录架:
- 短接TEST引脚进入ISP模式
- 选择加密烧录(会生成唯一的设备ID)
- 勾选"校验空白片"避免重复烧录
遇到过的问题及解决方案:
- 烧录失败:检查VCC电压是否稳定(要求3.0~3.6V)
- 校验错误:降低SPI时钟速率(修改工具目录下的config.ini)
- 设备无法启动:检查Flash的CS引脚上拉电阻(必须≤10kΩ)
4.2 射频测试要点
CE/FCC认证测试前建议:
- 用网分校准天线阻抗(目标50Ω±5%)
- 修改RF_REG0x0D调整发射功率
- 进行24小时老化测试(重点观察频偏)
某次认证失败后发现是晶体负载电容(C11/C12)温度特性不佳,更换为NP0材质后问题解决。
这块开发板最让我欣赏的是其完整的开发生态——从硬件参考设计到量产工具链全部开源。最近正在用它开发一款支持LE Audio的智能眼镜,后续会分享更多实战经验。
