藍(lán)牙協(xié)議是通信協(xié)議的一種,一般而言,我們把某個(gè)協(xié)議的實(shí)現(xiàn)代碼稱為協(xié)議棧(protocol stack),BLE協(xié)議棧就是實(shí)現(xiàn)低功耗藍(lán)牙協(xié)議的代碼,理解和掌握BLE協(xié)議是實(shí)現(xiàn)BLE協(xié)議棧的前提。 ?,當(dāng)前的藍(lán)牙協(xié)議分為基礎(chǔ)率/增強(qiáng)數(shù)據(jù)率(BR/EDR)和低耗能(LE)兩種技術(shù)類型,本文云里物里將重點(diǎn)介紹BLE(Bluetooth Low Energy)。?,
,一、BLE低功耗藍(lán)牙協(xié)議??蚣? ,要實(shí)現(xiàn)一個(gè)BLE使用,首先需要一個(gè)支持BLE射頻的芯片,然后還需要提供一個(gè)與此芯片配套的BLE協(xié)議棧,最后在協(xié)議棧上開發(fā)自己的使用??梢钥闯鯞LE協(xié)議棧是連接芯片和使用的橋梁,是實(shí)現(xiàn)整個(gè)BLE使用的關(guān)鍵。那BLE協(xié)議棧具體包含哪些功能呢?簡(jiǎn)單來說,BLE協(xié)議棧主要用來對(duì)你的使用數(shù)據(jù)進(jìn)行層層封包,以生成一個(gè)滿足BLE協(xié)議的空中數(shù)據(jù)包,也就是說,把使用數(shù)據(jù)包裹在一系列的幀頭(header)和幀尾(tail)中。 ?,藍(lán)牙協(xié)議規(guī)定了兩個(gè)層次的協(xié)議,分別為藍(lán)牙核心協(xié)議(Bluetooth Core)和藍(lán)牙使用層協(xié)議(Bluetooth Application)。藍(lán)牙核心協(xié)議關(guān)心對(duì)藍(lán)牙核心技術(shù)的描述和規(guī)范,它只提供基礎(chǔ)的機(jī)制,并不關(guān)心如何運(yùn)用這些機(jī)制;藍(lán)牙使用層協(xié)議,是在藍(lán)牙核心協(xié)議的基礎(chǔ)上,根據(jù)具體的使用需要,百花齊放,定義出各種各樣的策略,如FTP、文件傳輸、局域網(wǎng)等等。?,
,而藍(lán)牙核心協(xié)議(Bluetooth Core)又包含BLE Controller和BLE Host兩部分。這兩部分在不一樣的藍(lán)牙技術(shù)中(BR/EDR、AMP、LE),承擔(dān)角色略有不一樣,但大致的功能是相同的。Controller負(fù)責(zé)定義RF、Baseband等偏硬件的規(guī)范,并在這之上抽象出用于通信的邏輯鏈路(Logical Link);Host負(fù)責(zé)在邏輯鏈路的基礎(chǔ)上,進(jìn)行更為友好的封裝,這樣就可以屏蔽掉藍(lán)牙技術(shù)的細(xì)節(jié),讓Bluetooth Application更為方便的運(yùn)用。?,
,二、BLE低功耗藍(lán)牙核心協(xié)議層詳解(Bluetooth Core)?,1、物理層(Physical Layer,簡(jiǎn)寫 PHY):PHY層用來指定BLE所用的無線頻段,調(diào)制解調(diào)方式和方式等。是1Mbps自適應(yīng)跳頻的GFSK射頻,工作于免許可證的2.4GHz ISM(工業(yè)、科學(xué)與醫(yī)療)頻段。PHY層做得好不好,直接決定整個(gè)BLE芯片的功耗,靈敏度以及selectivity等射頻指標(biāo)。?,2、鏈路層(Link Layer,簡(jiǎn)寫 LL):LL層是整個(gè)BLE協(xié)議棧的核心,也是BLE協(xié)議棧的難點(diǎn)和重點(diǎn)。LL層要做的事情非常多,比如具體選擇哪程度 個(gè)射頻通道進(jìn)行通信,怎么識(shí)別空中數(shù)據(jù)包,具體在哪個(gè)時(shí)間點(diǎn)把數(shù)據(jù)包發(fā)送出去,怎么保證數(shù)據(jù)的完整性,ACK如何接收,如何進(jìn)行重傳,以及如何對(duì)鏈路進(jìn)行管理和控制等等。LL層只負(fù)責(zé)把數(shù)據(jù)發(fā)出去或者收回來,對(duì)數(shù)據(jù)進(jìn)行怎樣的解析則交給上面的GAP或者ATT。?,3、主機(jī)控制接口層(Host Controller Interface,簡(jiǎn)寫 HCI):HCI是可選的,HCI主要用于2顆芯片實(shí)現(xiàn)BLE協(xié)議棧的場(chǎng)合,用來規(guī)范兩者之間的通信協(xié)議和通信命令等。 ?,4、通用訪問配置文件層(Generic access profile,簡(jiǎn)寫GAP):GAP是對(duì)LL層payload(有效數(shù)據(jù)包)如何進(jìn)行解析的兩種方式中的一種,而且是最簡(jiǎn)單的那一種。GAP簡(jiǎn)單的對(duì)LL payload進(jìn)行一些規(guī)范和定義,因此GAP能實(shí)現(xiàn)的功能極其有限。GAP現(xiàn)在主要用來進(jìn)行廣播,掃描和發(fā)起連接等。 ?,5、邏輯鏈路控制及自適應(yīng)協(xié)議層(Logical Link Control and Adaptation Protocol,簡(jiǎn)寫 L2CAP):L2CAP對(duì)LL進(jìn)行了一次簡(jiǎn)單封裝,LL只關(guān)心傳輸?shù)臄?shù)據(jù)本身,L2CAP就要區(qū)分是加密通道還是普通通道,同時(shí)還要對(duì)連接間隔進(jìn)行管理。 ?,6、安全管理層(Security Manager,簡(jiǎn)寫 SM):SMP用來管理BLE連接的加密和安全的,如何保證連接的安全性,同時(shí)不影響用戶的體驗(yàn),這些都是SMP要考慮的工作。 ?,7、屬性協(xié)議層(Attribute protocol,簡(jiǎn)寫 ATT):簡(jiǎn)單來說,ATT層用來定義用戶命令及命令操作的數(shù)據(jù),比如讀取某個(gè)數(shù)據(jù)或者寫某個(gè)數(shù)據(jù)。BLE協(xié)議棧中,開發(fā)者接觸最多的就是ATT。BLE引入了attribute概念,用來描述一條一條的數(shù)據(jù)。Attribute除了定義數(shù)據(jù),同時(shí)定義該數(shù)據(jù)可以運(yùn)用的ATT命令,因此這一層被稱為ATT層。,8、通用屬性配置文件層(Generic Attribute profile,簡(jiǎn)寫 GATT):GATT用來規(guī)范attribute中的數(shù)據(jù)內(nèi)容,并運(yùn)用group(分組)的概念對(duì)attribute進(jìn)行分類管理。沒有GATT,BLE協(xié)議棧也能跑,但互聯(lián)互通就會(huì)出問題,也正是因?yàn)橛辛薌ATT和各種各樣的使用profile,BLE擺脫了ZigBee等無線協(xié)議的兼容性困境,成了出貨量最大的2.4G無線通信產(chǎn)品。
低功耗藍(lán)牙協(xié)議框架和協(xié)議層的講解
2019-8-14
云里物里
瀏覽次數(shù): 38