继续上篇文章内容,咱们继续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中比较少用。less
LE periodic advertising broadcast (PADVB):周期广播方式,基于广播的。transport periodic broadcast control and user data to all scanning devices in a given area。async
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协议。。。。。