蓝牙低功耗连接
概述
蓝牙低功耗(Bluetooth LE)实现双向通信最常用的方法就是“连接”。连接不仅可以提高数据吞吐量,还有丢包恢复、增强安全等一系列高级功能。进入连接后,Bluetooth LE协议栈会自动建立一个可靠的数据通道,你可以持续稳定地收发数据。
在本课中,我们将重点学习蓝牙LE连接的基础原理,以及涉及的关键参数如连接间隔、监督超时、从设备延迟等。随后详细讲解连接建立流程与断开机制,还会介绍连接状态管理API(用于检测与响应连接变化)。
其中练习部分,将会带领你实际操作Nordic开发板与手机之间的连接,观察连接参数对通信性能和功耗的影响。
学习目标
-
理解Bluetooth LE连接的底层原理和标准流程
-
掌握与连接相关的参数及其对通信和功耗的影响
-
学会使用协议栈API管理连接状态和参数
-
通过实际操作体验连接参数调整的实际效果
连接流程
连接建立
建立连接需要两台设备:一台作为正在广播的外围设备,另一台作为正在扫描的中心设备。
当中心设备接收到外围设备的广播包时,可以决定是否发起连接。这通常包含中心设备扫描广播包内容并据此选择是否连接。中心发送连接请求后,外围与中心即建立双向(面向连接)的数据通道。

如上图所示(略),外围设备只要在发送可连接广播后,都会在每次广播包后开启一个短暂的接收窗口,用于监听连接请求。
注意,外围设备并不能选择是否接受连接请求,除非使用“accept list”(原名白名单过滤),否则都必须接受连接。后续任何时候外围都可主动断开连接。
【扩展】
accept list过滤机制使外围设备能限制哪个设备允许请求连接,后面会深入讲解。
连接过程
外围设备成功收到连接请求包后,两台设备就处于连接状态。此时通信不再使用广播信道(37、38、39),而使用数据信道(0到36)。
为减少干扰和提升吞吐量,蓝牙LE连接期间采用信道跳变,即数据传输所使用信道会频繁切换。如果某些信道环境噪声大,后续连接间隔可自动切换到其它信道重传数据。
所有蓝牙LE数据包会无限次重试,直到收到确认或连接终止,以确保数据完整性。
连接带来的另一个低功耗优势是双方设备在连接期间大部分时间都在休眠。双方预先约定多久唤醒一次通信,这样平时关闭无线,定时器计时,到点唤醒。
这个时间参数叫“连接间隔”,在连接建立时由中心设定,之后每个连接间隔周期进行连接事件(数据交换)。
【定义】
连接间隔:两台设备在连接后约定定期唤醒互发数据的时间间隔。
连接事件:每个连接间隔内中心向外围发送数据包的过程。
下图(略)显示典型连接过程,中心与外围按连接间隔节奏唤醒与数据传输。

连接间隔初始由中心在连接请求包设定,后续可动态修改。每个连接间隔内可收发多包数据,没数据时会同步空包,只有需要时才发“有用数据”。如数据量大于单个连接间隔可传输的数量,则会分多次发送。
断开连接
两设备连接后只要没有异常会一直保持连接,除非出现以下两种断开(disconnection)方式:
-
应用主动断开连接
-
监督超时断开连接
应用主动断开连接:
任一设备可主动发送断开包(termination packet)中止连接。常见原因如:设备不再需要连接,或者连接出错(如认证失败等)。断开包中包含断开原因字段,表明断开的具体原因。
监督超时断开连接:
如果一台设备长时间未收到对方数据包,也会中断连接。比如对方设备程序崩溃重启、断电或移出射频范围。超时时间由连接监督超时参数设定,具体内容将在下一节讲解。
您的资助是我最大的动力!
金额随意,欢迎来赏!

浙公网安备 33010602011771号