在深入BLE协议栈各个组成部分之前,我们先看一下BLE协议栈整体架构。
BLE协议栈整体架构
PHY层(Physical layer物理层)。PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。PHY层做得好不好,直接决定整个BLE芯片的功耗,灵敏度以及selectivity等射频指标。
LL层(Link Layer链路层)。LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。链路层用于控制射频设备的工作状态,包括 5 种可能的工作状态:待机、广播、扫描、启动和连接。
HCI(Host controller interface)。HCI 层为主机和控制器之间的通信提供了一种标准化的接口,其主要完成两个任务:① 发送命令给控制器和接收来自控制器的事件;② 发送和接收来自对端设备的数据。
L2CAP层(Logic link control and adaptation protocol)。L2CAP 逻辑链路控制及自适应协议层(Logical Link Control and Adaptation Protocol)为更高层提供数据封装服务,允许逻辑的端到端数据通信。
SM(Secure manager)。SM 层定义了配对和密钥分发的方法,并为其他堆栈层的安全连接以及与另一个设备交换数据提供功能。
ATT(Attribute protocol)。ATT 属性协议用于所有低功耗蓝牙的数据传输,具有快速、简单的特点,其采用了客户端(Client)/ 服务器(Server)架构。
GAP层(Generic access profile)。低功耗蓝牙协议栈的 GAP 层与应用 / Profile 直接连接,负责处理设备的接入方式和过程,包括设备发现、链路建立、链路终止、启动安全功能以及设备配置。
GATT(Generic attribute profile )。GATT 层是一个服务框架,定义使用 ATT 的子过程。GATT 规定了配置文件 Profile 的结构。在低功耗蓝牙中,所有的数据块由一个 Profile 或服务所使用的数据库称为特性(characteristic)。
对于开发者而言,不需要对每一层的具体实现都有深入的了解。只需要掌握与应用紧密相关的 GAP/GATT 层即可满足大部分开发的需求,通过 SoftDevice(即协议栈,这种方式使得协议栈和用户应用可以单独编译和链接)的 API 软件接口(以 sd_ 开头)调用来实现。
来源:http://www.rrdpcba.com/news618653.html