打开主菜单

谷雨文档中心 β

更改

BLE技术揭秘

添加2,844字节2019年8月19日 (一) 10:57
协议栈结构
# 中层:Host
# 顶层:Application
注:我们将位于顶层的应用层Application也归到协议栈中描述,其实,应用层Application不属于协议栈,它是用来调用协议栈提供的接口,然后实现蓝牙的功能。然后每一层又分成若干个子模块。我们现在由下而上,逐层介绍。
然后每一层又分成若干个子模块:==== 控制器Controller ====* <code>Physical Layer</code>,简称:<code>PHY</code>,物理层。PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。PHY层做得好不好,直接决定整个BLE芯片的功耗,灵敏度以及selectivity等射频指标。* <code>Link Layer</code>,简称:<code>LL</code>,链路层。LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。像Nordic的BLE协议栈能同时支持20个link(连接),就是LL层的功劳。LL层要做的事情非常多,比如具体选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去或者收回来,对数据进行怎样的解析则交给上面的GAP或者ATT* <code>Host Controller Interface</code>,简称:<code>HCI</code>。协议栈应用开发中,我们会经常看到HCI的身影,它对上Host提供Controller的功能接口,所以称作Host Controller Interface。
==== Controller 主控Host ====* <code>Logical Link Control Adaptation Protocol</code>,简称:<code>L2CAP</code>。L2CAP对LL进行了一次简单封装,LL只关心传输的数据本身,L2CAP就要区分是加密通道还是普通通道,同时还要对连接间隔进行管理。* <code>Attribute Protocol</code>,简称:<code>ATT</code>。ATT层用来定义用户命令及命令操作的数据,比如读取某个数据或者写某个数据。BLE协议栈中,开发者接触最多的就是ATT。BLE引入了attribute概念,用来描述一条一条的数据。Attribute除了定义数据,同时定义该数据可以使用的ATT命令,因此这一层被称为ATT层。* <code>Security Manager</code>,简称:<code>SM</code>。SMP用来管理BLE连接的加密和安全的,如何保证连接的安全性,同时不影响用户的体验,这些都是SMP要考虑的工作。* <code>Generic Access Profile</code>,简称:<code>GAP</code>。GAP是对LL层payload(有效数据包)如何进行解析的两种方式中的一种,而且是最简单的那一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的功能极其有限。GAP目前主要用来进行广播,扫描和发起连接等。* <code>Generic Attribute Profile</code>,简称:<code>GATT</code>。GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑,但互联互通就会出问题,也正是因为有了GATT和各种各样的应用profile,BLE摆脱了ZigBee等无线协议的兼容性困境,成了出货量最大的2.4G无线通信产品。
==== Host 应用Application ===={{Note|text=提示:我们将位于顶层的应用层Application也归到协议栈中描述,其实,应用层Application不属于协议栈,它是用来调用协议栈提供的接口,然后实现蓝牙的功能。|type=== Application ====info}}
__强显目录__
2,367
个编辑