• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

nrf52832蓝牙BLE开发系列教程2------BLE协议栈

蓝牙协议规范遵循开放系统互连参考模型(OSI/RM),从低到高地定义了蓝牙协议栈的各个层次。SIG所定义的蓝牙技术规范的目的是使符合该规范的各种应用之间能够实现互操作。互操作的远端设备需要使用相同的协议栈,不同的应用需要不同的协议栈。完整的蓝牙协议栈如下图所示,不是任何应用都必须使用全部协议,而是可以只使用其中的一列或多列。图中显示了所有协议之间的相互关系,但这种关系在某些应用中是有变化的。

BLE协议栈主要用来对你的应用数据进行层层封包,以生成一个满足BLE协议的空中数据包。也就是说,把应用数据包裹在一系列的帧头和帧尾中。蓝牙协议栈分为:应用层、主协议层、控制层,如下图所示:

1、蓝牙核心协议

蓝牙核心协议关注对蓝牙核心技术的描述和规范,它只提供基础的机制,并不关心如何使用这些机制。蓝牙核心协议又包含BLE Controller和BLE Host两部分。

Controller:负责定义RF、Baseband等偏硬件的规范,并在这之上抽象出用于通信的逻辑链路;

Host:负责在逻辑链路的基础上,进行更为友好的封装,这样就可以屏蔽掉蓝牙技术的细节,让Bluetooth Application更为方便的使用。

2、蓝牙应用层协议

蓝牙应用层协议,是在蓝牙核心协议的基础上,根据具体的应用需求,百花齐放,定义出各种各样的策略,如FTP、文件传输、局域网等等。

3、低功耗蓝牙核心协议层

主要分为如下几层:

① 物理层

PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。PHY层做得好不好,直接决定整个BLE芯片的功耗,灵敏度以及selectivity等射频指标。

② 链路层

LL层是整个BLE协议栈的核心。LL层要做的事情非常多,比如具体选择哪程度 个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去或者收回来,对数据进行怎样的解析则交给上面的GAP或者ATT。

③ 主机控制接口层

HCL是可选的,主要用于两个芯片实现BLE协议栈的场合,用来规范两者之间的通信协议、通信命令等。

④ 通用访问配置文件层

GAP主要用来进行广播、扫描和发起连接等。

⑤ 逻辑链路控制及自适应协议层

L2CAP对LL进行了一次简单封装。LL层只关心传输的数据本身,L2CAP就要区分加密通道还是普通通道,同时还要对连接间隔进行管理。

⑥ 安全管理层

SM用来管理BLE连接的加密和安全的。

⑦ 属性协议层

简单来说,ATT层用来定义用户命令及命令操作的数据,比如读/写某个数据。开发者接触最多的就是ATT。BLE引入了attribute(属性)概念,用来描述一条条数据,attribute除了定义数据,还定义该数据可以使用的ATT命令,因此这一层被称为ATT层。

⑧ 通用属性配置文件层

GATT用来规范attribute中的数据内容,并用group(分组)的概念进行分类管理。

下图是协议栈的总体结构分层图:

全部回复(0)
正序查看
倒序查看
现在还没有回复呢,说说你的想法