BLE-LinkLayer协议分析笔记-v0

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

BLELinkLayer协议分析一、概述1.1.背景蓝牙无线技术是一种短距离的通信技术。BLE,BluetoothLowEnergy是蓝牙技术联盟SIG新推的一代蓝牙技术标准(蓝牙4.0)中的一种低功耗工作模式。当前iOS和Andriod4.3以上系统(含4.3)对其都能够支持,尤其是iOS,对BLE更是能够完美的支持。除BLE外,蓝牙4.0还主推了BR(BasicRate)工作模式,以及BR的演进版本的EDR和AMP工作模式。与BLE相比,它们能够支持更高的传输速率,但也有更大的功耗。本文档只关注BLE。BLE是传统蓝牙技术的演进,它除了继承了传统蓝牙的特性外,还行引入了高速和低功耗特性。其中高速仅是相对而言,最高速率为1Mbps(该取值为物理层支持的最高速率,实际传输速率应该小于该速率)。传统蓝牙传统蓝牙高速蓝牙(1Mbps)低功耗蓝牙BLE使用的频带为2.4GHz,具体频段为2400~2483.5MHz,共计划分为40个无线信道,每个无线信道带宽为2MHz。BLE主要有以下特点,高可靠性低成本低功耗快速启动,3ms(传统蓝牙需要6s)传输距离大,100m传统蓝牙为10m)高安全性低数据速率(1Mbps)1.2.BLE网络模型BLE可用于点对点和点对多点的网络,如下图所示,MasterSlaveAdvertiserScannerInitializer用于点对点通信场景时,BLE终端分为Master和Slave,Master负责对整个通信过程的维护和控制。用于点对多点的网络时,BLE终端分为Advertiser、Scanner和Initializer。Advertiser为主动进行周期性广播信息的BLE终端。Scanner为接收广播信息的BLE终端,其可主动向Advertiser发送请求获取更多的信息,Advertiser在接收到请求后需要予以响应。Initializer为期望与Advertiser建立连接的BLE终端,其可向Advertiser发送请求建立连接,Advertiser收到请求后会与Initializer建立连接,并且Advertiser和Initializer分别以Slave和Master切换到点对点通信场景。该过程将在第三章内详述。1.3.BLE协议栈模型BLE对应的协议栈模型如下图所示,整个协议栈分为三层,APP,Host和Controller。本文主要关注Controller中的LinkLayer部分,它是Controller的核心。对于与之相关的HCI和PhysicalLayer,本文也会有所涉及。其中LinkLayer以状态机的形式进行工作,如下图所示,StandbyScanningAdvertisingInitialingConnectedSlaveMasterPowerOnReceivedconnectrequestpacketSendconnectrequestpacket其中Standby,即LinkLayer的初始状态,BLE终端上电启动后自动进入该状态,其可受到Host命令触发进入到除“Connected”以外的其他状态。Advertising,BLE终端进行广播信息的状态,该状态下,BLE终端也可根据Host的命令监听一些请求消息。Scanning,BLE终端接收广播信息的状态,其分为ActiveScanning和PassiveScanning两种,后者只做接收,前者则可向进行广播信息的BLE终端发送请求以期获取更多信息Initialing,BLE终端接收广播信息并准备进行建立连接(Connect)的状态Connected状态,BLE终端进行数据传输的状态。进入该状态的BLE终端分为Master和Slave,由Advertising进入该状态的BLE终端为Slave,由Initialing进入的为Master。Master负责维护Connect并主动向Slave发送数据和相关命令,Slave则需要根据Master的命令进行相应数据传输可见,Advertising和Scanning状态的设计特别适合物理网中的运用——物联网中的终端往往只需要周期性地传输或接收一些信息。第三章中将对BLE终端在这些状态中的切换过程进行详细分析。二、数据流处理LinkLayer的数据流处理过程如下图所致,encryptionSegmentPacketingCRCAddingWhiteningModutionRFProcess(TX)WirelessChannelDe-encryptionDe-SegmentDe-PacketingCRCRemovingDe-WhiteningDe-ModutionRFProcess(RX)DataStreamfromHostDataStreamtoHost其中加密/解密过程(encryption/decryption)为可选,RFInterface表示了PhysicalLayer和RF的处理和无线信号在空口上的传播过程——对于LinkLayer而言,PhysicalLayer和RF也被视为无线信道的一部分。2.1.加密/解密略。2.2.分段与重组(Segment/De-Segment)略。2.3.打包与解包(Packeting/De-Packeting)BLE中,LinkLayer的PDU*1格式如下图所示,其由Preamble、AccessAddress、Header、Data和CRC等字段组成Preamble(8bits)AccessAddress(32bits)Header(16bits)Data(0~2040bits)CRC:G100065B(24bits)PacketStructure10101010Equaltopreamble(0)(Smallend)AdvertisingAddress(0x8E89BED6)DataAddressForReceiver’sSynchronizationandEstimation(Correlation)010101011.Nomorethansixcontinuousonesorzeros2.Notsimilartoadvertisingaddress(morethan1bitdifferent)3.Nofoursameoctets4.Nomorethan24transitionsand2transitionsatleastinfirst6bits按照PDU的不同用途,其分为两类:AdvertisingPDU和DataPDU,前者用于BLE终端广播信息,后者用于BLE终端间的点对点的数据传输。其中,图中绿色部分的字段根据PDU的具体用户还略有不同,以下将详述。注*1:基于ISO/OSI分层网络协议规范中,PDU为当前层发送给下一层的数据包,SDU为当前层接收的上一层的数据包。2.3.1.PreamblePreamble用于BLE终端间的时频同步、信道估计和AGC调整。对于AdvertisingPDU,其Preamble序列固定使用二进制序列“10101010”。对于DataPDU,其Preamble序列固定使用二进制序列“10101010”或“01010101”——对于AccessAddress最低位为0的DataPDU,使用“10101010”,否者使用“01010101”。2.3.2.AccessAddressAccessAddress用于标志该PDU的connect信息。对于AdvertisingPDU,其固定为0x8E89BED6(最低位为0,因此其Preamble序列使用“10101010”)。对于DataPDU,其为以32bit的随机值,由作为Master的BLE终端在发起连接请求时确定,但必须遵守如下要求:包含的连续“0”或“1”的个数不超过6与0x8E89BED6至少有2bit不同32bit对应的4个8位位组(Octets)不可全部相同包含的0/1和1/0切换不超过24个,并且前6bit至少包含2个0/1或1/0切换2.3.3.Header/Data2.3.3.1.AdvertisingPDU对于AdvertisingPDU而言,其Length取值范围为6~31(单位byte),Data部分的结构与Header字段(AdvertisingPDUType)相关,如下图所示,AdvertisingPDUType(4bits)Rsv1(2bits)TxAddressType(1bit)RxAddressType(1bit)HeaderforAdvertisingPDUGeneralAdvertisingIndication(ADV_IND)DirectConnectionIndication(ADV_DIRECT_IND)Non-connectableIndication(ADV_NONCONN_IND)ActiveScanningRequest(SCAN_REQ)ActiveScanningResponse(SCAN_RSP)ConnectionRequest(CONNECT_REQ)ScannableIndication(ADV_SCAN_IND)AdvA(48bits)AdvData(0~248bits)AdvA(48bits)InitA(48bits)DataofAdvertisingPDUScanA(48bits)AdvA(48bits)AdvA(48bits)ScanRspData(0~248bits)InitA(48bits)AdvA(48bits)LLData(176bits)AA(32bits)CRCInit(24bits)WinSize(8bits)WinOffset(16bits)Interval(16bits)Latency(16bits)Timeout(16bits)ChM(40bits)Hop(5bits)SCA(3bits)Length(6bits)Rsv2(2bits)AdvertisingPDU的Header由四部分组成:AdvertisingPDUType,4bit,指示了该PDU的用途,Rsv1,2bit,保留位TxAddressType,1bit,指示PDU中首个设备地址字段的类型(public为0,random为1)RxAddressType,1bit,指示PDU中第二个设备地址字段的类型(public为0,random为1)Length,6bit,指示PDU中Data部分的长度Rsv2,2bit,保留位1)AdvertisingPDUTypeAdvertisingPDUType取值范围0~6,分别对应的PDU类型如下,ADV_INDPDU,常规广播数据包,用于ConnectableUndirectedEvent,详见3.1小节。其PDU结构由48bit的Advertiser设备地址(AdvA)和最大248bit的广播内容信息(AdvData)构成。ADV_DIRECT_PDU,定向连接型广播数据包,用于ConnectableDirectedEvent,详见3.1小节。其PDU结构由48bit的Advertiser设备地址(AdvA)和48bit的指定Initializer设备地址(InitA)构成。ADV_NONCONN_IND,禁连接型广播数据包,用于Non-connectableUndirectedEvent,详见3.1.5小节。其PDU结构由48bit的Advertiser设备地址(AdvA)和最大248bit的广播内容信息(AdvData)构成。SCAN_REQPDU,浏览请求数据包,用于Scanner向Advertiser发送浏览请求,详见3.1小节。其PDU结构由48bit的Scanner设备地址(ScanA)和48bit的Advertiser设备地址(AdvA)构成。SCAN_RSPPDU,浏览响应数据包,用于Advertiser向Scanner发送响应,详见3.1小节。其PDU结构由48b

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功