BLE学习(1) - 蓝牙协议架构简介

简介

BLE协议分了很多个版本,目前用的比较多的是4.2和5.X。
从4.2到5.X,主要升级了如下几个功能:

  1. 4.2版本传输速率只有1Mbps,5.X版本传输速率增加到了2Mbps;
  2. 4.2版本广播最大长度为31byte, 5.X版本广播最大长度增加到了254byte;
  3. 5.X版本增加了Mesh组网功能,且通讯距离增加到了300米以上;

每个厂商提供的SDK包中的协议栈都会有些区别,下面我们主要以Nordic厂商的协议栈进行分析。

架构

BLE主要包含三个部分:控制器(controller)、主机(host)和应用程序(app),Nordic协议栈的架构如下:
在这里插入图片描述

物理层(PHY)

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

  • 工作在2.4GHz ISM频段。频段范围:2.4~2.4835GHz;
  • 2.4G被划分为40个RF信道(f = 2402 + k*2MHZ,k = 0,1,2…,39),信道间隔为2MHz;
  • 数据信道37个,后面的37,38,39三个信道为广播信道;
  • 传输速度为1Mbps、2Mbps;

链路层(LL)

LL层是整个协议栈最复杂,也是最重要的一层。它负责设备的广播、扫描、连接建立及连接维护等工作。
像Nordic的BLE协议栈能同时支持20个Link连接,就是LL层的功劳。比如具体选择哪个射频通道进行通信、怎么识别空中数据包、具体在哪个时间点把数据包发送出去、怎么保证数据的完整性、ACK如何接收、如何进行重发、以及如何对链路进行管理和控制等等。LL层只负责把数据发送出去或者接收回来,对数据进行怎样的解析则由GAP或ATT来负责。

链路层状态机:
在这里插入图片描述
链路层具有5种状态:

  • 就绪态: 上电后,链路层进入并保持就绪态,等待接收主机命令;
  • 广播态: 发送广播和扫描响应;
  • 扫描态: 监听广播设备;
  • 发起态: 发起连接
  • 连接态: 设备进入连接状态,并可以使用数据信道进行通讯;

链路层信道映射
在这里插入图片描述
这里需要注意的是,广播信道37,38,39,对应的中心频率是2402MHz,2426MHz,2480MHz。广播信道之间至少相差24MHz。
为啥广播信道是3个,不是更多呢?
广播信道越多,各个广播信道同时受干扰的几率越小,抗干扰能力也越强。
但是广播信道越多,发射广播数据占用时间就越长,功耗也越高。
所以综合考虑抗干扰和功耗的情况下,SIG将广播设定为3个。

主机控制器接口(HCI)

主机控制器接口层HCI(Host Controller Interface)是在host和controller两大层中间提供的一个标准化适配接口层。
host层和controller层可以通过外设如UART、SPI、USB等进行通讯。这样就可以将hsot层和controller层进行解耦。
有些时候,我们需要使用1颗芯片的controller层和另外1颗芯片的host层进行组合,实现BLE通讯,这个时候HCI层就给予了此场景很大的便利性。

逻辑链路控制和适配协议层(L2CAP)

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

加密管理层(SM)

SM层(Secure manager)用来管理BLE连接的加密和安全相关。它提供设备的配对和密钥分发等功能。
如何保证连接的安全性,同时又不影响用户体验,这是SM层要考虑的问题。

属性协议层(ATT)

ATT层(Attribute protocol)用来定义用户如何读取某个数据和写入某个数据的一套规范。它规定了怎样去访问对端设备的数据。

通用属性配置文件(GATT)

GATT(Generic attribute profile)建立在ATT层之上,它规范attribute的数据内容,运用group分组的概念对数据进行分类管理。没有GATT,BLE协议栈也能跑。但互联互通就会出问题,也正是因为有了GATT和各种各样的应用profile,BLE摆脱了Zigbee等无线协议的兼容性困境,成为了出货量最大的2.4G无线通信产品。

GATT层有服务器和客户端的概念。服务器为提供数据的一方,客户端为访问数据的一方。
需要注意的是,以下三个身份概念是完全独立的,针对于不同的分层:

  • 服务器和客户端: 针对GATT层定义的角色。提供数据的一方为服务器,访问数据的一方为客户端。设备可以同时是服务器和客服端!
  • 主机和从机: 针对连接层定义的角色。
  • 外围设备和中央设备:针对GAP层定义的角色。
    外围设备一般作为从机发送广播,中央设备一般作为主机监听广播。

通用访问配置文件(GAP)

GAP是对LL层payload(有效数据包)如何进行解析的两种方式的一种,而且也是最简单的一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的功能极其有限。GAP目前主要用来进行广播,扫描和发起连接

应用层

应用层由一系列配置文件(profile)组成,我们后面会对profile进行专门的解析。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值