经典BT的连接过程
传统蓝牙(Basic Rate/Enhanced Data Rate, BR/EDR)的连接过程涉及几个关键机制,下面我将详细解释inquire/inquire scan和page/pageScan的作用及相互关系。
一、Inquire与Inquire Scan
1. Inquire(查询)
作用:主动发现周围可用的蓝牙设备 (手机等)
由主设备(Master)发起
发送ID分组(Identification Packet)广播
使用32个专用查询频率跳频
典型持续10.24秒(可配置)
包类型 | 方向 | 内容 | 说明 |
---|---|---|---|
ID Packet | Master→Slave | - 查询访问码(IAC) - 通用查询访问码(GIAC: 0x9E8B33)或专用查询访问码(DIAC) | 用于触发设备响应 |
FHS Packet | Slave→Master | - BD_ADDR(蓝牙地址) - 设备类(Class of Device) - 时钟偏移 - page扫描模式 | 包含设备关键信息 |
频率:使用32个专用查询频率(2402+k×1MHz, k=0,1,...,31)
时序:Slave每1.28秒监听11.25ms的查询窗口
重试:Master会多次发送查询请求以提高发现概率
2. Inquire Scan(查询扫描)
作用:使设备能被其他设备发现(蓝牙耳机等)
由从设备(Slave)执行
在16个特定频率上监听查询请求
扫描间隔通常为1.28秒(可配置)
关键参数:
Inquiry Scan Interval:1.28s
Inquiry Scan Window:11.25ms~22.5ms
二、Page与Page Scan
1. Page(寻呼)
作用:建立实际连接
由主设备发起
使用目标设备的BD_ADDR和时钟估计
在32个专用寻呼频率上跳频
包含设备访问码(DAC)
包类型 | 方向 | 内容 | 说明 |
---|---|---|---|
ID Packet | Master→Slave | 设备访问码(DAC) | 基于目标Slave的BD_ADDR生成 |
ID Packet | Slave→Master | 设备访问码(DAC) | 确认收到寻呼 |
FHS Packet | Master→Slave | - BD_ADDR - 主设备时钟 - 设备类 - page扫描模式 | 建立连接的关键信息 |
ID Packet | Slave→Master | 设备访问码(DAC) | 确认连接建立 |
频率:使用32个专用寻呼频率(与查询频率相同)
时序:Slave每1.28秒(默认)监听11.25ms的页面扫描窗口
时钟预测:Master使用Inquire阶段获取的时钟信息预测Slave的跳频序列
2. Page Scan(寻呼扫描)
作用:准备接受连接请求
从设备监听寻呼请求
使用16个特定频率
必须知道设备的扫描周期才能有效寻呼
关键参数:
Page Scan Interval:0.64s~2.56s
Page Scan Window:11.25ms~22.5ms
机制 | 作用阶段 | 发起方 | 频率数 | 主要目的 |
---|---|---|---|---|
Inquire | 设备发现 | Master | 32 | 发现周围设备 |
Inquire Scan | 设备发现 | Slave | 16 | 响应查询请求 |
Page | 连接建立 | Master | 32 | 发起实际连接 |
Page Scan | 连接建立 | Slave | 16 | 准备接受连接 |
3. 包结构
ID packet:
| 72bit访问码 | 4bit包头 |
查询时使用GIAC(0x9E8B33)生成访问码
寻呼时使用目标设备的BD_ADDR生成DAC
FHS packet:
| 72bit访问码 | 4bit包头 | 240bit有效载荷 |
有效载荷包含:
BD_ADDR (48bit)
设备类 (24bit)
时钟信息 (26bit)
页面扫描模式 (3bit)
三、连接流程
发现阶段:
Master开启Inquire
Slave开启Inquire Scan
Master获取Slave的BD_ADDR和时钟信息
连接阶段:
Master使用获取的信息发起Page
Slave必须处于Page Scan模式
建立ACL连接
配对阶段:
认证和加密(可选)
建立L2CAP通道
注意事项:
时钟估计:
Page过程需要预测Slave的时钟跳频序列
通过Inquire获取的时钟信息用于提高连接速度
跳频同步:
连接建立后采用相同的跳频模式
使用主设备时钟和BD_ADDR计算跳频序列
模式转换:
设备可以在Master/Slave角色间切换
但一次连接中角色固定