1. 程式人生 > >低功耗藍芽技術連線的那點事

低功耗藍芽技術連線的那點事

低功耗藍芽技術Bluetooth® low energytechnology是藍芽經典標準的演進,專注於為裝置間提供可靠、高效且低功耗的鏈路連線。它具有超低的功耗,滿足超長的續航能力。2014年年底,藍芽技術核心規範4.2版本正式釋出。在該版本中,引入了最新的隱私保護機制,此外,該版本還大大提升了低功耗藍芽技術裝置間資料傳輸的速度與可靠性。由於低功耗藍芽技術封包容量增加,裝置之間的資料傳輸速度可較藍芽4.1版本提升2.5倍。資料傳輸速度與封包容量的增加能夠降低傳輸錯誤發生的機率並減少電池能耗,進而提升連網的效率。本文就低功耗藍芽技術裝置之間的連線進行詳細的講解。希望能幫助開發者設計出更多有創新性的產品和解決方案。

在低功耗藍芽技術建立連線的過程中,裝置都是成對出現的:masterslave裝置。如果master希望與slave建立連線,master就需要發起連線請求(ConnectionRequestCONNECT_REQ),因此master可以稱之為連線發起者;同時,slave必須是可連線的並且具有解析連線請求CONNECT_REQ的能力,slave可以稱之為廣播者。圖1是連線請求CONNECT_REQ的幀結構。


圖1  CONNECT_REQ幀結構

其中,InitA是連線發起者的藍芽裝置地址,長度為6位元組;AdvA是廣播者的藍芽裝置地址,長度為6位元組。除了InitAAdvA之外,幀格式中最為重要的部分則是

LLData,這一部分包含了在連線建立過程中所需要使用的有意義的引數。

為了更好的理解連線請求CONNECT_REQ,我們可以在日常生活中找到類似的一個例子,幫助我們理解它的含義。讀者們很多應該都有過工作經驗,在開始新的工作之前,都需要和僱主簽署一份勞動合同,而CONNECT_REQ就是一份由僱主”master提供的勞動合同,只需經過僱員”slave確認,這份合同就開始生效,低功耗藍芽技術的連線也就建立了。接下來我們就對合同中的各項條款逐條進行分析(如圖2所示)。


圖2  LLData示意圖

1)接入地址(AAAccess Address

這份合同的第一條款就是為僱員分配一個公司內部的唯一識別碼,類似於工號,僱員可以在公司內部使用這一工號;當僱員離開公司之後,唯一識別碼自動失效;即使是這一僱員再次加入到這家公司,他

/她的新工號也與舊的工號不同。類似的,在兩個低功耗藍芽技術裝置建立連線之前,master裝置負責生成接入地址,這一地址類似於一個4位元組的隨機數,當連線建立之後,masterslave都使用這一接入地址進行通訊;當連線斷開之後,接入地址自動失效。

2CRCInitCRC初始值)

這份合同的第二條款是CRCInit,它就是僱員在公司內部的一個金鑰,通過這個金鑰,僱員可以訪問公司內部的資源。對於低功耗藍芽技術裝置,masterslave使用CRCIinit來驗證資料包的完整性。

3WinSizeWinOffset

合同的第三條款中規範了僱員首次來公司報到的時間以及今後每次工作的時長。WinSizeWinOffset在低功耗藍芽技術連線中,也做了類似的定義。WinOffset定義了在CONNECT_REQ命令之後的一個通訊視窗的偏移量,如圖3所示。在slave裝置收到CONNECT_REQ之後,slave裝置需要佔用一些時間、根據LLData引數進行一些相關的配置,因此,WinOffesetslave裝置進行此種操作提供了時間,transmitWindowOffset= WinOffset×1.25 msWinSize定義了裝置每次開啟收發機的視窗時間,無論是master還是slave,它們都遵循WinSize的定義,視窗時間transmitWindowSize=WinSize×1.25 ms

因此,在CONNECT_REQ之後,第一個由master傳送到slave的資料幀,我們稱之為錨點(如圖3所示),因為之後的所有的連線事件都以這一時刻為基準,呈現週期性變化。從紅色框圖中我們可以看到,第一個資料幀的時刻不能早於(1.25ms+transmitWindowOffset),同時也不能晚於(1.25 ms + transmitWindowOffset +  transmitWindowSize


圖3 發起連線時序圖

4Interval, Latency & Timeout

一般情況下,人們的工作時間是朝九晚五,一週工作五天。但是在低功耗藍芽技術的連線機制當中,我們採用了更加靈活的彈性工作制。對於低功耗藍芽技術連線的彈性工作制,這裡有三個引數需要了解,IntervalLantencyTimeout


圖4  連線事件時序圖

在連線建立之後,masterslave之間的資料互動我們可以稱之為連線事件,連線事件的發生週期(connInterval)則是由Interval引數來進行設定,connInterval= Interval×1.25 ms, connInterval的取值範圍則是在7.5 ms4 s秒之間。因此,在確定了錨點之後,masterslave將按照connInterval確定的時間間隔進行資料的互動,如圖4所示。

但是,對於低功耗藍芽技術,低功耗的特性是需要特別考慮的,而且在實際的應用當中,不需要在每次connInterval都產生連線事件,因此引入了引數Lantancy,可以有效的減少連線事件的產生,connSlaveLatency= LatencyconnSlaveLatency 定義了slave裝置可以忽略多少個連續的連線事件,其不需要在這些被忽略的連線事件中偵聽來自master的資料包,這也意味著slave裝置不需要在每個連線事件產生的時刻都喚醒並開啟射頻接收機進行偵聽,所以可以有效減少slave裝置的功耗。這也是低功耗藍芽技術能夠實現其低功耗特性的一個重要的原因。

Timeout引數定義了連線超時的長度,connSupervisionTimeout= Timeout×10 ms,其取值範圍在100 ms32 s之間。不論是master還是slave,在其收到一個數據幀之後,如果等待了connSupervisionTimeout時長都沒有下一個資料幀到來,則可以認為連線已經斷開。在這裡要強調的是,connSupervisionTimeout必須大於1 + connSlaveLatency × connInterval × 2,否則,slave裝置即使是在Lantency狀態,也會被誤認為是連線超時,導致連線誤斷開。

5ChM & Hop

我們都知道,藍芽使用的是跳頻技術,當連線建立之後,masterslave裝置就需要利用某種機制來在預先設定的通道圖譜上、按照預先設定的跳頻跨度進行跳頻工作,通道圖譜就來自ChM引數,每跳的跨度則來自於Hop引數。Hop是一個整數,取值範圍在516之間。下面的公式提供了跳頻的工作方式:

fn +1=fn+ Hopmod37

其中,mod為取餘操作。

低功耗藍芽技術具有37個數據信道,資料通道索引為0-36,上式中,fn為當前通道索引,fn+1為下一跳通道索引。表1Hop= 13時的跳頻圖。

表1  Hop=13時的跳頻圖

RF Channelfn

fn

fn +1

2  404 MHz

0

0+13  mod 37 = 13

2  432 MHz

13

13+13  mod 37 = 26

2  458 MHz

26

26  + 13  mod 37 = 2

ChM為可用資料通道圖譜的位遮蔽碼,長度為5個位元組,40位元。由於有37個數據信道,所以只有低37位有效。如果位遮蔽碼的某一位元置1,意味這一位元所代表的資料通道可用;如果置0,則不可用。根據跳頻計算公式以及ChM,跳頻可以為自適應的。如果fn+1通道在ChM中標記為可用,則採納fn+1作為下一跳通道;如果fn+1通道在ChM中標記為不可用,下一跳通道需要重新對映在其他可用通道上進行資料通訊。因此,以上機制保證了低功耗藍芽技術具有很好的抗干擾能力。

文章來自:http://mp.weixin.qq.com/s?__biz=MzA4MTg3MTg2Mg==&mid=2651236576&idx=1&sn=3fedd522f1ef31cb63da5ad8f7e83aea&scene=23&srcid=0512qtIadZg2Y01A0SuPbmgc#rd&ADUIN=357558904&ADSESSION=1463039381&ADTAG=CLIENT.QQ.5449_.0&ADPUBNO=26525