在低功耗藍(lán)牙技術(shù)建立連接的過程中,設(shè)備都是成對出現(xiàn)的:master和slave設(shè)備。如果master希望與slave建立連接,master就需要發(fā)起連接請求(ConnectionRequest,CONNECT_REQ),因此master可以稱之為連接發(fā)起者;同時(shí),slave必須是可連接的并且具有解析連接請求CONNECT_REQ的能力,slave可以稱之為廣播者。
下表連接請求CONNECT_REQ的幀結(jié)構(gòu)。
Payload
|
InitA
(6
octets)
|
AdvA
(6
octets)
|
LLData
(22
octets)
|
其中,InitA是連接發(fā)起者的藍(lán)牙設(shè)備地址,長度為6字節(jié);AdvA是廣播者的藍(lán)牙設(shè)備地址,長度為6字節(jié)。除了InitA和AdvA之外,幀格式中最為重要的部分則是LLData,這一部分包含了在連接建立過程中所需要使用的有意義的參數(shù)
為了更好的理解連接請求CONNECT_REQ,我們可以在日常生活中找到類似的一個(gè)例子,幫助我們理解它的含義。讀者們很多應(yīng)該都有過工作經(jīng)驗(yàn),在開始新的工作之前,都需要和雇主簽署一份勞動合同,而CONNECT_REQ就是一份由“雇主”master提供的“勞動合同”,只需經(jīng)過“雇員”slave確認(rèn),這份“合同”就開始生效,低功耗藍(lán)牙技術(shù)的連接也就建立了。接下來我們就對“合同”中的各項(xiàng)條款逐條進(jìn)行分析(如下表所示)。
LLData
|
AA
(4
octets)
|
CRCInit
(3
octets)
|
WinSize
(1
octets)
|
WinOffset
(2
octets)
|
Interval
(2
octets)
|
Latency
(2
octets)
|
Timeout
(2
octets)
|
ChM
(5
octets)
|
Hop
(5
bits)
|
SCA
(3
bits)
|
(1)接入地址(AA:Access Address)
這份合同的第一條款就是為雇員分配一個(gè)公司內(nèi)部的唯一識別碼,類似于工號,雇員可以在公司內(nèi)部使用這一工號;當(dāng)雇員離開公司之后,唯一識別碼自動失效;即使是這一雇員再次加入到這家公司,他/她的新工號也與舊的工號不同。類似的,在兩個(gè)低功耗藍(lán)牙技術(shù)設(shè)備建立連接之前,master設(shè)備負(fù)責(zé)生成接入地址,這一地址類似于一個(gè)4字節(jié)的隨機(jī)數(shù),當(dāng)連接建立之后,master和slave都使用這一接入地址進(jìn)行通信;當(dāng)連接斷開之后,接入地址自動失效。
(2)CRCInit(CRC初始值)
這份“合同”的第二條款是CRCInit,它就是雇員在公司內(nèi)部的一個(gè)密鑰,通過這個(gè)密鑰,雇員可以訪問公司內(nèi)部的資源。對于低功耗藍(lán)牙技術(shù)設(shè)備,master和slave使用CRCIinit來驗(yàn)證數(shù)據(jù)包的完整性。
(3)WinSize和WinOffset
合同的第三條款中規(guī)范了雇員首次來公司報(bào)到的時(shí)間以及今后每次工作的時(shí)長。WinSize和WinOffset在低功耗藍(lán)牙技術(shù)連接中,也做了類似的定義。WinOffset定義了在CONNECT_REQ命令之后的一個(gè)通信窗口的偏移量,如圖3所示。在slave設(shè)備收到CONNECT_REQ之后,slave設(shè)備需要占用一些時(shí)間、根據(jù)LLData參數(shù)進(jìn)行一些相關(guān)的配置,因此,WinOffeset為slave設(shè)備進(jìn)行此種操作提供了時(shí)間,transmitWindowOffset= WinOffset×1.25 ms。WinSize定義了設(shè)備每次開啟收發(fā)機(jī)的窗口時(shí)間,無論是master還是slave,它們都遵循WinSize的定義,窗口時(shí)間transmitWindowSize=WinSize×1.25 ms。
因此,在CONNECT_REQ之后,第一個(gè)由master發(fā)送到slave的數(shù)據(jù)幀,我們稱之為“錨點(diǎn)”(如圖3所示),因?yàn)橹蟮乃械倪B接事件都以這一時(shí)刻為基準(zhǔn),呈現(xiàn)周期性變化。從紅色框圖中我們可以看到,第一個(gè)數(shù)據(jù)幀的時(shí)刻不能早于(1.25ms+transmitWindowOffset),同時(shí)也不能晚于(1.25 ms + transmitWindowOffset + transmitWindowSize)。
(4)Interval, Latency & Timeout
一般情況下,人們的工作時(shí)間是朝九晚五,一周工作五天。但是在低功耗藍(lán)牙技術(shù)的連接機(jī)制當(dāng)中,我們采用了更加靈活的“彈性工作制”。對于低功耗藍(lán)牙技術(shù)連接的彈性工作制,這里有三個(gè)參數(shù)需要了解,Interval,Lantency和Timeout。
在連接建立之后,master和slave之間的數(shù)據(jù)交互我們可以稱之為連接事件,連接事件的發(fā)生周期(connInterval)則是由Interval參數(shù)來進(jìn)行設(shè)定,connInterval= Interval×1.25 ms, connInterval的取值范圍則是在7.5 ms至4 s秒之間。因此,在確定了錨點(diǎn)之后,master和slave將按照connInterval確定的時(shí)間間隔進(jìn)行數(shù)據(jù)的交互,如圖4所示。
但是,對于低功耗藍(lán)牙技術(shù),低功耗的特性是需要特別考慮的,而且在實(shí)際的應(yīng)用當(dāng)中,不需要在每次connInterval都產(chǎn)生連接事件,因此引入了參數(shù)Lantancy,可以有效的減少連接事件的產(chǎn)生,connSlaveLatency= Latency。connSlaveLatency 定義了slave設(shè)備可以忽略多少個(gè)連續(xù)的連接事件,其不需要在這些被忽略的連接事件中偵聽來自master的數(shù)據(jù)包,這也意味著slave設(shè)備不需要在每個(gè)連接事件產(chǎn)生的時(shí)刻都喚醒并打開射頻接收機(jī)進(jìn)行偵聽,所以可以有效減少slave設(shè)備的功耗。這也是低功耗藍(lán)牙技術(shù)能夠?qū)崿F(xiàn)其低功耗特性的一個(gè)重要的原因。
Timeout參數(shù)定義了連接超時(shí)的長度,connSupervisionTimeout= Timeout×10 ms,其取值范圍在100 ms至32 s之間。不論是master還是slave,在其收到一個(gè)數(shù)據(jù)幀之后,如果等待了connSupervisionTimeout時(shí)長都沒有下一個(gè)數(shù)據(jù)幀到來,則可以認(rèn)為連接已經(jīng)斷開。在這里要強(qiáng)調(diào)的是,connSupervisionTimeout必須大于(1 + connSlaveLatency) × connInterval × 2,否則,slave設(shè)備即使是在Lantency狀態(tài),也會被誤認(rèn)為是連接超時(shí),導(dǎo)致連接誤斷開。
(5)ChM & Hop
我們都知道,藍(lán)牙使用的是跳頻技術(shù),當(dāng)連接建立之后,master和slave設(shè)備就需要利用某種機(jī)制來在預(yù)先設(shè)定的信道圖譜上、按照預(yù)先設(shè)定的跳頻跨度進(jìn)行跳頻工作,信道圖譜就來自ChM參數(shù),每跳的跨度則來自于Hop參數(shù)。Hop是一個(gè)整數(shù),取值范圍在5至16之間。下面的公式提供了跳頻的工作方式:
fn+1 =(fn+ Hop)mod37
其中,mod為取余操作。
低功耗藍(lán)牙技術(shù)具有37個(gè)數(shù)據(jù)信道,數(shù)據(jù)信道索引為0-36,上式中,fn為當(dāng)前信道索引,fn+1為下一跳信道索引。下表為Hop= 13時(shí)的跳頻圖。
RF Channel(fn)
|
fn
|
fn+1
|
2404MHz
|
0
|
(0+13)mod37=13
|
2404MHz
|
13
|
(13+13)mod37=26
|
2404MHz
|
26
|
(26+13)mod37=2
|
|
|
…
|
ChM為可用數(shù)據(jù)信道圖譜的位屏蔽碼,長度為5個(gè)字節(jié),40比特。由于有37個(gè)數(shù)據(jù)信道,所以只有低37位有效。如果位屏蔽碼的某一比特置1,意味這一比特所代表的數(shù)據(jù)信道可用;如果置0,則不可用。根據(jù)跳頻計(jì)算公式以及ChM,跳頻可以為自適應(yīng)的。如果fn+1信道在ChM中標(biāo)記為可用,則采納fn+1作為下一跳信道;如果fn+1信道在ChM中標(biāo)記為不可用,下一跳信道需要重新映射在其他可用信道上進(jìn)行數(shù)據(jù)通信。因此,以上機(jī)制保證了低功耗藍(lán)牙技術(shù)具有很好的抗干擾能力。
本文摘自互聯(lián)網(wǎng),僅供參考!
SKYLAB現(xiàn)住喲啊研究BLE藍(lán)牙模塊,SKB360可以做主,也可以做從,更可以主從一體。了解詳情,請點(diǎn)擊藍(lán)牙模塊SKB360