BLE协议—协议栈基础
- BLE协议栈基础
- 通用访问配置文件层(Generic Access Profile,GAP)
- GAP角色
- 设备配置
- 模式和规程
- 安全模式
- 广播和扫描
BLE协议栈基础
蓝牙BLE协议栈包含三部分:主机、主机接口层和控制器。
主机:逻辑链路控制及自适应协议层(L2CAP),安全管理层(SM),属性协议层(ATT),通用访问配置文件(GAP),通用属性配置文件层(GATT)
主机接口层:主机控制接口(HCI)
控制器:物理层(PHY)、链路层(LL)
控制器(Controller)
-
物理层(Physical Layer,PHY):BLE在2400Mhz至2483.5 MHz的2.4GHz免授权频段(ISM)内工作。采用自适应跳频的高斯频移键控(GFSK)。BLE采用40个信道,每个信道间隔为2MHz,分为数据信道和广播信道;广播信道占用3个,用于发现设备、建立连接、广播数据;数据信道占用37个,用于已建立连接设备间的数据通信。建立连接的两个设备,必须同一时间处于同一信道上才能通信。
其中37/38/39为固定广播信道,其余为数据信道。 -
链路层(Link Layer,LL),控制设备的射频状态,让设备处于五种状态:
Standby:默认状态,不进行收发。
Advertising:广播状态,在3个广播信道广播数据包,同时监听和回复扫描者发送的扫描数据包。
Scanning:扫描状态,在3个广播信息监听广播数据包,同时发送扫描数据包。
Initiating:初始化状态,在广播信道监听广播数据包,从而发起连接。
Connection:连接状态。发起连接的设备通过发送连接请求来回应广播设备,如果广播设备接受连接请求,那么广播设备与发起连接的设备将会进入连接状态。发起连接的设备称为主机(Client),接受连接请求的设备称为从机(Server)。
主机控制接口(Host Controller Interface)
主机控制接口(Host-Controller Interface,HCI):为Host访问Controller提供一组标准的接口。
HCI主要完成3个任务:
- Host通过HCI发送命令给Controller
- Controller通过HCI将事件发送给Host
- 传递ACL Data(面向连接,在连接通道上进行数据传输)
该接口层的实现可以是软件接口,也可以是标准硬件接口,比如UART、SPI、USB。
主机(Host)
-
逻辑链路控制和适配器协议(Logical Link Control and Adaption Protocol,L2CAP):为上层提供了多路复用、数据分段与重组服务,并且支持逻辑端对端的数据通信。
-
安全管理层(Security Manager,SM):定义了配对和密钥分发的方法,并为其他层提供了与对端设备进行安全连接和数据交换的功能。
-
属性协议层(Attribute Protocol,ATT):定义了访问对端设备上数据的一组规则,是GATT规范的基础,也是低功耗蓝牙的基石。定义了Host端属性报文格式和报文类型。这一层的关键词是Attribute(属性)。一个属性其实就是一条数据,属性是BLE数据提供单元,也是蓝牙空中传播数据的最上层,BLE开发过程中接触最多的就是这一层。
Attribute协议下文详解 -
通用属性配置文件层(Generic Attribute Profile,GATT):自己本身不提供数据,而是将ATT层提供的属性组合起来构成的服务。通过ATT层可以读写对端设备的属性值,各个属性之间有什么联系各个属性之间怎么组合起来的,是由GATT层负责。服务是GATT层的关键字,服务由属性组成。
一个BLE设备可以由多个服务组成(使用UUID进行区分),一个服务可以包含多个特征(characteristic),一个特征可以包含多个属性。GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。 -
通用访问配置文件层(Generic Access Profile,GAP):定义了所有蓝牙设备的基础功能,设备间发现、连接、配对绑定的流程;蓝牙设备中四种角色;广播和扫描响应报文的格式;还有一些通用蓝牙参数定义,比如设备地址、名称、配对秘钥和设备的外观特征值,用于区分是什么设备,手机还是电脑;明确了作为一个低功耗蓝牙设备的基本需求,包含哪些层级以及如何协同工作的。 规范了一些通用的蓝牙参数:蓝牙设备地址、设备名称、配对秘钥、外观特征值。
通用访问配置文件层(Generic Access Profile,GAP)
GAP角色
GAP层定义了4种BLE角色:
- 外围设备(Peripheral):可以发送广播并接受连接的设备(在链路层中作为从机)。
- 中央设备(Central):可以扫描广播并发起连接的设备(在链路层中作为主机)。
- 播报设备(Broadcaster):可以发送广播,但不可接受连接的设备。
- 观察设备(Observer):可以扫描广播,但不可发起连接的设备。
链路层可以同时支持多个状态机, GAP层也支持一个设备同时作为多个GAP角色,所以一个BLE设备通常可以同时充当主机和从机(多主多从)。
设备配置
GAP定义了4个设备配置参数:
- 设备地址:设备地址在协议栈内部指BD_ADDR,小端数据格式。设备地址可以随机,也可以固定。
- 设备名称:设备名称一般用于区分BLE设备,最长可达248个字节,支持UTF-8编码。
- 设备外观:设备外观是用于用户识别设备功能,长度为两个字节。
- 连接PIN码:PIN码用于两个设备之间配对时使用,为6位十进制整形数,因此它的有效范围为000000-999999(0x00000000 – 0x000F423F)。使用时必须显示全部6位数字,包括前导0。
模式和规程
GAP定义5套模式和规程,设备通常运行在这5套模式和规程中:
- Broadcast mode and Observation procedure, 广播模式和观察规程
- Discovery modes and procedures,发现模式和规程
- Connection modes and procedures,连接模式和规程
- Bonding modes and procedures, 绑定模式和规程
- Periodic advertising modes and procedure,周期性的广播模式和规程
安全模式
GAP定义了2种安全模式以及4种安全规程:
- 安全模式1(LE Security mode 1):使用认证信息保证安全。
- 安全模式2(LE Security mode 2):使用数字签名保证安全。
规程 | 描述 | 安全模式 |
---|---|---|
认证规程(Authentication procedure) | 执行认证和加密操作 | 安全模式1 |
授权规程(Authorization procedure) | 确认是否为某个操作提供授权 | 安全模式1 |
连接数据签名规程 (Connection data signing procedure) | 连接数据签名规程,在未加密的连接中传输认证的数据。 | 安全模式2 |
认证已签名的数据规程 (Authenticate signed data procedure) | 认证已签名的数据规程,校验带有前面的数据是否有效 | 安全模式2 |
广播和扫描
广播和扫描在无线通信中是非常重要的一个技术点。在BLE中,扫描和广播是通信的基础,用户可以直接用扫描和广播进行数据的传输,也可以在广播和扫描的基础上进行连接后点对点通信。
由于广播和扫描内容篇幅较长,具体可以移步👇链接
BLE协议—广播和扫描
学习笔记,有问题欢迎指出