BLE的一些概念
BLE一些概念
1. 物理信道
低功耗蓝牙的工作频段为2.4GHz,这个唯一一个在所有国家都无需授权的频段。
BLE将2.4GHz频段分为40个RF射频信道,每个信道2M宽度,最低的中心频率为2402MHz,最高的中心频率为2480MHz。同一时刻,只能用一个信道进行数据的收发。
物理信道从0 ~ 39进行编号。index却是,PHY CH0对应37,PHY CH12对应38,PHY CH39对应39。BLE4.2规定,Advertising、Scanning、Initiating 状态只允许在 37、38、39信道上执行数据的收发,这样做的目的是与WIFI的频段隔离,起到抗干扰的作用。在Connection连接状态下可以使用其余37个信道传输数据,并通过跳频技术(Hopping),减少信道干扰增强系统的鲁棒性。
2. 设备地址
同一时刻,在2.4GHz频段下,蓝牙设备是如何辨别各种需要通信的对象呢?此时就需要给每个BLE设备分配一个ID,及设备地址Device Address,共48 bits。
低功耗蓝牙设备地址分配如下:
2.1 公共地址
public device address的地址由company assigned [24 bits] 和 company id [24 bits] 构成,需向蓝牙组织申请。
2.2 随机地址
随机地址用的更广泛,有细分为两类:
-
静态地址
-
私有地址
-
不可解析的私有地址
-
可解析的私有地址
-
2.2.1 静态地址
规则如下:
-
最高两bit恒定为 11
-
上电的时候随机生成,并且在一个上电周期内保持不变
-
除开最高两位,剩余的46bits是一个随机数,不能全部为0,也不能全部为1
-
下一次上电的时候可以改变。但不是强制的,因此也可以保持不变。
2.2.2 私有地址
(1)不可解析的私有地址
Non-resolvable private address会定时更新。更新的周期称是由GAP规定的,称作T_GAP(private_addr_int) ,建议值是15分钟。要求如下:
- 最高两bit恒定为 00
- 除开最高两位,剩余的46bits是一个随机数,不能全部为0,也不能全部为1
- 以T_GAP为周期,定时更新
- 此地址不能和 public device address 冲突。
(2)可解析的私有地址
这种地址也称 RPA 加密地址,只能被拥有相同 Identity Resolving Key (IRK) 的设备扫描到,可以防止被未知设备扫描和追踪。规则如下:
- 最高两bit恒定为 10
- 至少在 random part of prand 有一个 1和一个0
- prand 除了最高两位以外,是一个随机数
- hash 部分是通过公式 hash = ah(IRK, prand) 计算出来的 hash 值
3. BLE角色
BLE的角色有以下几种:
-
广播者(Advertiser):周期性的向周围设备广播数据
-
扫描者(Scanner):可以监听广播数据或者搜索周围设备
-
从设备/从机(Slave):负责广播的并接收连接请求的设备在建立连接后称为slave
-
主设备/主机(Master):负责扫描设备并发起建立请求,在建立连接后变成master
这些角色是链路层定义的,是根据设备是否建立连接来划分分的,可以将这四个类型的设备逻辑的划分为两组:
-
advertiser 和 scanner
-
master 和 slave
advertiser 和 scanner属于广播阶段的概念,即在建立连接之前设备角色。master 和 slave 属于建立连接之后的概念,一旦建立连接,scanner角色变为master,advertiser变为slave。
4. Client/Server(C/S)架构
在蓝牙核心规范中,有个重要的概念:Client/Server(C/S)客户端/服务器架构。
C/S架构在我们身边随处可见,如用谷歌搜索时,PC浏览器端输入内容点击搜索,谷歌服务器在其数据库中查找信息,组成网页返回给PC浏览器,此过程中,PC浏览器为客户端,谷歌服务器为服务器端。
BLE与之类似,如蓝牙温度计,提供温度数据,手机连接后可以获得温度数据,此时蓝牙温度计是Server,手机是Client。
在C/S架构中,发出请求(request)的一方称为客户端Client,响应请求(response)的一方称为服务器Server。
5. 空口包格式
BLE的数据都是在空中进行传输的,在协议中定义为 Air Interface Packets,俗称空口包,BLE链路层(Link Layer)定义其格式为:
5.1 Preamble
Preamble,前导帧,长度为一个字节,只有0x55和0xAA两种取值,根据Access Address的第一个bit,由PHY层自动调整。
由于BLE信号功率强度可以从-90dBm ~ 10dBm,即80dB,接收机需要通过前到帧这样一串0、1交替序列调整增益参数,以适配不同功率的射频信号,优化数据包的鲁棒性。
5.2 Access Address
Access Address,接入地址,用来表示接收者ID或者空中包身份,根据Access Address的不同,可以将空口包分为:广播包和数据包。
- 广播包的Access Address固定为0x8E89BED6,在37/38/39广播信道上传输。
- 数据包的Access Address为一个32 bits的随机值,由Initiator生成,用于设备一对一通信时使用,即用于连接时的master和slave之间通信的。在剩下的37个数据信道传输。每建立一次连接,重新生成一次Access address。
5.3 PDU
PDU,Protocol Data Unit,协议数据单元。是BLE数据传输的基本单元,BLE在不同状态下的PDU组成也不同。
5.4 CRC
24 bits的PDU的CRC校验数据,初始向量为:
6. BLE设备典型交互过程
6.1 广播与扫描
一个设备要让其他设备能发现,则必须向外广播,而一个设备如果对广播者感兴趣,想进一步了解,则可以通过扫描该设备来进一步获取该设备提供的信息,通过这个阶段,扫描的设备已经基本清楚了广播设备信息,以及提供的能力,从而可以判断是否连接该设备。
6.2 建立连接
当扫描者想与广播者可以建立连接,那么设备之间就会有一个建立连接请求。
- 在建立连接后,如果设备之间要设置一些连接信息或者获取版本信息等等,这可以提供链路层定义的数据格式来发送数据实现,例如master更改连接参数,slave发起更新连接参数请求等等。
- 为了无线安全,例如数据加密,对数据完整性验证,以及数据在传送过程中有没有被修改等,设备之间可以发起配对流程,该过程是可选实现的。
- 建立连接请求后,为了能获取设备提供的服务,让客户端能操作设备,那么就需要经历一个设备服务发现过程,只有在这一步后,才能知道设备提供服务的具体操作方法以及操作handle。
- 知道了设备的具体操作方法,就可以操作设备。
- 最后,设备任意一方可以发起断开连接请求。
posted on 2021-08-03 14:51 Wahahahehehe 阅读(1159) 评论(0) 编辑 收藏 举报