蓝牙core_v5.2协议-3

非 Y 不嫁゛ 提交于 2020-09-29 08:34:36

继续上篇文章内容,我们继续VOL1中的3.5 LOGICAL LINKS AND LOGICAL TRANSPORTS小节之后的内容学习。本章节讲述了BLE传输数据时候,不同的数据流应该采用不同的协议去传输,即使用什么样的协议去传输什么样的数据。举个比较简单的例子:之前章节我们提到,ADV的广播方式是不可靠的数据传输方式,如果应用要求传输数据可靠度很高,就不可以采用ADV的方式去传播数据。

以下列举了目前BLE支持的logical transport方式:ACL(基于connect的可靠传输), ADV(基于广播的不可靠传输), ISO(流数据传输)


1. 传输使用的Logical transports介绍

LE ACL:基于连接的,用于传输LL and L2CAP control signaling and best effort asynchronous user data。此种传输使用NESN/SN和access address来保证传输的可靠性。传输的link包括LE-C,LE-U.

LE advertising broadcast (ADVB):基于广播的,broadcast control and user data to all scanning devices in a given area。不可靠的数据传输方式。传输的link包括ADVB-C,ADVB-U.

Connectionless Slave Broadcast (CSB):多连接情况使用的,基于连接的,不可靠传输方式。一般在LE中比较少用。

LE periodic advertising broadcast (PADVB):周期广播方式,基于广播的。transport periodic broadcast control and user data to all scanning devices in a given area。

Connected Isochronous Stream (CIS):基于连接的,传输同步流数据,支持sochronous data rates, latencies, and re-transmissions。举个例子:audio codec data can be generated at a 10 ms interval while the value of ISO_Interval for the CIS can be 11.25 ms.

Connected Isochronous Group (CIG):基于连接的,传输同步组数据,即多个CIS数据传输。

Broadcast Isochronous Stream (BIS):基于广播的,传输同步流数据,支持sochronous data rates, latencies, and re-transmissions。

Broadcast Isochronous Group (BIG):基于广播的,传输同步组数据,即多个CIS数据传输。


2. BLE拓扑图

 上图中存在5个网络:

网络A:ABCDE构成,AB,AC处于连接状态,AD,CE处于广播状态。这是一个比较典型的BLE复杂应用网络,属于多连接情况下的广播数据交换。

网络F:FG构成,FG处于连接状态。这是一个简单的BLE连接应用网络,例如一个手机连接手环。

网络H:HIJ构成,HIJ处于广播状态,同时互为接受者。这是一个蓝牙SIG MESH的基本网络方式。

网络K:KLMN构成,KL,KM处于连接状态,KN处于广播状态。这类网络应用较少,尤其是K设备同时具备Master和slaver的功能,在协议的实现上很难实现。

网络O:OPQR构成,OP,OP处于连接状态,OR处于广播状态。这类网络应用也比较少,设备O能够隶属入多个master,在时序上很难保证。


这里就不得不说下BLE蓝牙设备的几种基本形态了,方便理解上述图:

如图所示,BLE设备工作基本有四种形态:ADV-ing,SCAN-ing,INIT-ing,CONNECT-ing。这四种工作形态也决定了设备处于的角色,上图中可以看出设备处于connection状态的前提是先要处于ADV或者INIT。所以人为的把由ADV到connection的设备,称为slaver;相对应的由INIT到connection的设备,称为master。

上述的几种网络中不难看出,不少设备会兼容好几种状态。例如设备A,处于connect状态下,还有能力进行ADV,这样的设备在应用中很常见,同时也加大了芯片设计的难度。设备能够同时处于几种BLE状态,其必须要能够均衡好自己的时序,尤其是connect状态的时序,因为BLE的connect状态下,必须定期进行空包交互,才不至于丢失connect关系。


3. BLE安全相关SECURITY介绍

蓝牙安全模型包括五个不同的安全功能:配对、绑定、设备身份验证、加密和消息完整性(pairing, bonding, device authentication, encryption and message integrity)。

配对:创建一个或多个共享密钥的过程。

绑定:将配对过程中创建的密钥存储起来,以便在后续连接中使用,以形成一个受信任的设备对。

设备身份验证:验证两个设备是否具有相同的密钥。

加密:消息机密性。

消息完整性:防止消息伪造。

所谓的安全,就是通过一定的加密方式,使得数据通信信息不被窃取。上图中的一些算法,尤其是AES算法,是BLE中最基本的加密方法。

正如我们之前讲到的包格式,BLE中如果想把数据包加密,可以通过以下几种方式:

a. 直接加密payload,这是一种比较常见的加密方式,即传输的有效数据进行加密;

b. 对包头的地址进行加密,BLE中发送和接受数据都会有address这个说法,对其address进行加密,也可以达到数据加密的目的;

上面的两种方式,即是协议中说到的Encryption和Privacy。其中Privacy是BLE在4.2版本中(Link Layer privacy)提出的新feature,其实目前市场蓝牙芯片大多不使用这个feature。


4. BLE的profile架构

 

GAP:Generic Access Profile (GAP)。众多的profile中,GAP是一个通用的profile,它规定了一个设备的基本属性,例如:Broadcaster, Observer, Peripheral, and Central.

Broadcaster role(广播者):advertising to broadcast data. The Broadcaster role does not support connections. 即对应LL层以下的ADV设备。

Observer role (观察者):receives broadcast data contained in advertisements. The Observer role does not support connections. 即对应LL层的SCAN设备。
Peripheral role(外设):即连接中的slaver设备,只能隶属于一个master。

Central role(中心):即连接中的master设备,可以连接多个slaver设备。

一般的用户应用profile,基本都会包括GAP。如下图所示:


5. 共存问题和定位问题

蓝牙的工作频段位于2.4G,许多其他的无线设备也工作在这个频段。所以如何保证共存,是一个值得探讨的问题,蓝牙官方spec中也对此做出了探讨。目前市场上出现了不少wifi和ble同时可以使用的芯片,这种芯片能够使用wifi连接云端,同时还可以使用ble和其他设备进行通信,这在物联网时代是很不错的产品,这个是一个新的市场商机。

我们重点探讨如何实现wifi和ble进行共存的问题,在这个章节,spec提到了AFH是面临的一个基本问题,spec中不做具体说明。后面会继续涉及。

关于定位的问题,BLE提出了一种新的定位方式:(AoA和AoD),需要注意的是,使用这种方式必须工作在LE Uncoded PHYs。

关于AoA的基本框架图:

发送者在发送数据时候,正常发送。但是作为接收者,需要有多组天线接收数据,这样可以通过天线之间接收数据的差异来定位自己的位置。 这里有个重要的值:IQ采样值(不知道和智商IQ有没有关系。。。。),spec指出通过这个IQ采样值,就可以计算出自己的位置。

假设接收端有2根天线,同时天线之间的距离d为已知数据。

根据上图,我们可以计算出来,天线1和天线2的信号相位差ψ:

                                               ψ = (2πd cos(θ))/λ   (λ信号的波长,θ为到达角度)
那么:                                   

                                               θ = arccos((ψλ)/(2πd))

也就是说,一旦我们能够通过一定手段知道ψ这个值,我们就可以算出到达角θ。即可以知道自己设备的相对位置。

关于AoD的基本框架图:

和AoA存在很大的相似度,这里就不做描述。


6.  历届版本的新feature

4.2版本到5.0版本的更新,添加了以下几个feature:

 

5.0版本到5.1版本的更新,添加了以下几个feature:

5.1版本到5.2版本的更新,添加了以下几个feature:

之所以把版本更新列出来,主要是因为目前市场上的4.2芯片居多。很多自称5.0的芯片,其实只是部分支持5.0的相关feature,很少有芯片能够全部支持所有feature。 

 

本篇文章继续了之前Vol1剩下的章节,后面我们会接着探讨BLE的Vol 3:Host协议。。。。。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!