蓝牙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个任务:
该接口层的实现可以是软件接口,也可以是标准硬件接口,比如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):定义了所有蓝牙设备的基础功能,设备间发现、连接、配对绑定的流程;蓝牙设备中四种角色;广播和扫描响应报文的格式;还有一些通用蓝牙参数定义,比如设备地址、名称、配对秘钥和设备的外观特征值,用于区分是什么设备,手机还是电脑;明确了作为一个低功耗蓝牙设备的基本需求,包含哪些层级以及如何协同工作的。 规范了一些通用的蓝牙参数:蓝牙设备地址、设备名称、配对秘钥、外观特征值。
GAP层定义了4种BLE角色:
GAP定义了4个设备配置参数:
GAP定义5套模式和规程,设备通常运行在这5套模式和规程中:
GAP定义了2种安全模式以及4种安全规程:
规程 | 描述 | 安全模式 |
---|---|---|
认证规程(Authentication procedure) | 执行认证和加密操作 | 安全模式1 |
授权规程(Authorization procedure) | 确认是否为某个操作提供授权 | 安全模式1 |
连接数据签名规程 (Connection data signing procedure) | 连接数据签名规程,在未加密的连接中传输认证的数据。 | 安全模式2 |
认证已签名的数据规程 (Authenticate signed data procedure) | 认证已签名的数据规程,校验带有前面的数据是否有效 | 安全模式2 |
广播和扫描在无线通信中是非常重要的一个技术点。在BLE中,扫描和广播是通信的基础,用户可以直接用扫描和广播进行数据的传输,也可以在广播和扫描的基础上进行连接后点对点通信。
由于广播和扫描内容篇幅较长,具体可以移步链接
BLE协议—广播和扫描
学习笔记,有问题欢迎指出