1. 问题背景与现象描述
最近在调试杰理AC692X系列芯片的BST(绑定安全传输)功能时,遇到了一个典型问题:当使用TX端生成配对码的方式时,RX端始终无法正确获取配对码。这个问题在BLE设备配对场景中尤为关键,直接影响了设备间的绑定成功率。
根据实测数据,在TX生成配对码的模式下,RX端的接收成功率不足5%,而切换为RX生成配对码的模式后,成功率立即提升至98%以上。这种明显的性能差异说明协议栈实现存在特定条件下的兼容性问题。
关键现象特征:
- TX生成的6位数字配对码在串口日志中可见
- RX端log显示"waiting for passkey"状态持续超时
- 物理层信号强度(RSSI)稳定在-60dBm左右
- 相同硬件环境下RX生成模式工作正常
2. 技术原理深度解析
2.1 杰理BST协议栈架构
杰理的绑定安全传输功能基于改良版的SPP+BLE混合协议栈,其核心流程包含三个关键阶段:
- 广播发现阶段:TX持续发送包含厂商特定数据(Vendor Specific Data)的ADV报文
- 配对码交换阶段:通过LL_ENC_REQ/LL_ENC_RSP进行密钥协商
- 加密通道建立阶段:使用AES-CCM算法建立安全链路
c复制// 典型配对码生成逻辑(伪代码)
void generate_passkey() {
if (role == TX) {
passkey = rand() % 1000000; // 6位随机数
store_flash(passkey);
} else {
passkey = wait_uart_input();
}
}
2.2 问题根因分析
通过抓取HCI日志和协议分析仪数据,发现以下关键异常点:
- 时序不同步:TX在生成配对码后,立即触发LL_ENC_REQ,但RX的配对码处理线程尚未就绪
- 字节序问题:TX生成的配对码以小端格式存储,而RX端解析时误用大端模式
- 看门狗干扰:杰理芯片的WDT默认配置为2秒超时,恰好覆盖配对码传输窗口
