蓝牙BLE协议随笔(一)
我记得我看过一本书叫verilog HDL那些事,作者文笔轻松,文风有趣,不像那些传统的大牛文风严谨,看着就想睡觉,我在网上看了大牛关于蓝牙协议架构的博客、文章,因为协议本身就是一个枯燥乏味的东西,大部分内容需要的是记忆,所以感觉看着脑袋都大了,所以我萌发了一种,用轻快简单的文风刨析蓝牙协议架构的想法,可能写的会很糟糕,但是我觉得就算只有自己看着开心也是足够的;
什么是BLE
记得我还是小白的时候BT、BLE傻傻稳步清楚,有大牛就说了BLE就是低功耗蓝牙、BT就是经典蓝牙,就算他这么说我也是一头雾水啊,明明都是蓝牙为什么还分BT、BLE呢?一个设备到底是用低功耗还是正常功耗一个配置不久OK了吗?为什么要有这种区分呢?
上图的蓝牙协议简要框架符合所有的蓝牙设备框架,其中抛去应用层以及主协议层这种纯软件相关层不说,控制层是与硬件相关的,这里简要说一下控制层的构成,phy层主要代表的是无线射频相关、ll层主要是控制重传数据摘取的功能、hci是可选层这是因为有的架构主协议层和控制层是集成的,这时候就不需要hci层作为信息传递通道,而有的架构控制层和协议层是分离的比如说mcu+rf_module这种架构,这个时候就需要hci层的存在;
从我上面的简要论述可以看到硬件强相关的部分在物理层 ,因为BLE和正常蓝牙是有区别的所以对于蓝牙芯片来说支持BLE并不一定能支持传统和蓝牙
根据物理层可以分为两个大类BR(basic rate)基础速率和LE(low energy)低功耗,其中BR类又可以延申出Enhanced Data Rate (EDR)增强行数据类,EDR还支持AMP(Alternate Media Access Control and Physical )控制器
一般我们习惯上都会将蓝牙分为两大类一类叫BR/EDR这是我们俗称的传统蓝牙,一类LE也就是我们说的BLE低功耗蓝牙,在这里着重说一下其中的AMP还有两种情况一种时使用phy的一种是使用mac的,一般所谓的蓝牙的mac层其实就是EDR大类中AMP使用的mac层,这里这是引出了一个BLE的概念,以后我们主要聚焦BLE的协议框架,其他相关的不在一一赘述;
一般我们日常生活中,作为子链接设备可能是其中的一种传统蓝牙或者是低功耗蓝牙,架构可能会是下图这样
但是作为手机为了适配不同的连接设备手机的蓝牙机构一般都是这样的 ;
二、BLE整体架构介绍以及基本术语介绍
这里我先说几个比较重要的术语
通信载体(transport):承载多种逻辑连接,包括同步、异步、等时、以及广播数据流(traffic),我们比作公路
资源管理器(resource manager):调度功能把数据放入时间槽中,从而按规定发送,我们比作收费站;
数据流(traffic):主要是描述数据的流向规则,我们比作交通规则;
好吧说到这里我们我们可以大体的说一下蓝牙数据交互的具体规则,就用车做比喻,蓝牙的通信载体叫做物理连接,在蓝牙协议里对于设备间的通信只建立物理连接是不够的,就比如一辆车想从A地到B地去送东西他上了公路,A城市的收费站只在固定的时间点才开启,去早了根本去不了,所以我们还要加入一个逻辑连接通过资源管理器的调度把让车辆在对的时候出发,但是这个出发时有规则的我必须按照数据流的规则行驶,咱们可以通过,拟化的记忆理解蓝牙协议加深记忆;
BLE协议的基本架构如下
我的蓝牙协议解析采用的是自底向上的顺序去描述协议的所有内容,多的不关注首先关注在主协议层于控制层直接交互的部分有两个,GAP和L2CAP,我们知道数据的内容是通过协议一层一层包络的我们先将L2CAP以及GAP以上的部分看作一个整体,把控制层看作一个整体这样的话,先简化问题然后在细化问题,下一节我们要用这个逻辑,循序渐进的了解整个协议的内容;
本文地址:https://blog.csdn.net/u014096133/article/details/107375481
推荐阅读
-
NORDIC softDevice 蓝牙协议栈初始化程序分析(蓝牙主机,ble_central)
-
CC2640R2F BLE5.0 蓝牙协议栈GAP GATT 服务(GGS)
-
NORDIC softDevice 蓝牙协议栈初始化程序分析(蓝牙从机,ble_peripheral)
-
BLE蓝牙gatt协议的server端发布服务的UUID不全问题
-
蓝牙BLE协议随笔(一)
-
BLE-8の蓝牙4.1协议栈详解の逻辑链路管理和适配层(L2CAP)
-
七 蓝牙低功耗(BLE)协议栈 之 GAP层
-
BLE-8の蓝牙4.1协议栈详解の逻辑链路管理和适配层(L2CAP)
-
蓝牙BLE协议随笔(一)
-
Android BLE蓝牙使用 一