蓝牙-连接
1. 连接请求
主设备的 Controller 扫描到可连接广播数据包(白名单/单一设备) ,即向对端设备发送 CONNECT_REQ
数据包,随后向主设备的 Host 层发送 LE Connection Complete 事件; 从设备的 Controller 接收到
CONNECT_REQ 数据包,即向从设备的 Host 层发送 LE Connection Complete 事件。
此时连接已经创建(Created),但还未完全确立(Established) ,只有收到了数据包确认,连接才正式
确立。 连接确立仅改变连接超时: 6 个连接间隔 → 在连接请求中设定的值。 如此,如果连接不能确立将会立
即终止。
连接请求参数:
- 扫描间隔、扫描窗口
- 过滤策略
- 对端地址类型和地址,己方地址类型
- 连接间隔(min、 max) 、从机延迟和监控超时
- 连接事件数量(min、 max)
- 连接中使用的接入地址
- CRC 初始值 发送窗口大小
- 自适应调频信道图
- 跳频算法增量
- 休眠时钟精度
Complete 参数:
Established 参数:
2. 连接参数
BLE 模组和手机连接成功后会有一个默认连接参数,安卓手机的默认连接参数为 48ms,苹果手机的默认
连接参数为 20ms。
- Connection Interval 连接间隔
单位: 1.25ms
最小值: 6(7.5ms)
最大值: 3200(4s)
在发起者的链路层设置 - Slave Latency 从机延迟
最小值: 0
最大值: 499(同时有效连接间隔<=16s) - Supervision Time-out 监控超时
单位: 10ms
最小值: 10(100ms)
最大值: 3200(32s)
STO > (1 + SL)*CI
通道映射:在连接期间指明使用哪个数据通道;
跳跃增量: 5 和 16 之间的随机值信道选择算法; - 苹果
3. 连接参数相关
- 有效连接间隔
有效连接间隔 = 连接间隔 *(1 + 从机延迟) - 连接参数限制(多连接)
最小连接间隔 = 12.5 + 5*N
其中, N 是当前连接数量 - 实际连接间隔
实际连接间隔处于 min 和 max 之间,比 max 值略小 - 其他
连接参数设定后需要过一段时间才会生效