加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

藍牙協(xié)議棧中 7 層架構的功能分析

05/21 15:41
9739
閱讀需 12 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

先看一下:藍牙協(xié)議棧的分層結(jié)構

首先,從大的邏輯上,藍牙協(xié)議??梢苑譃槿龑?,分別是APP應用層,Host邏輯鏈路層和Controller硬件交互層。

APP應用層其實是我們能夠看到的各種具體的藍牙設備,比如實現(xiàn)的藍牙耳機,藍牙鼠標,藍牙鍵盤等等。

在應用層中,我們的鼠標移動數(shù)據(jù),或者鍵盤的敲擊按鍵數(shù)據(jù),要想通過藍牙傳輸,就需要調(diào)用下一層的API來進行調(diào)用,實現(xiàn)數(shù)據(jù)的傳輸。

那么,Host層就為APP層提供了上述的傳輸API,當然Host層本身還提供了很多通用的藍牙訪問文件層,自適應的一些層,鏈接的安全管理層,屬性協(xié)議層以及訪問配置文件和屬性配置文件層。

再下一層就是Controller,它主要負責與硬件層的交互,其中包括了物理層,鏈路層和主機控制接口層。

我們來分別看一下各個模塊的具體內(nèi)容,我們從下層向上壘一下。

PHY

這一層主要是指的物理層的信道,藍牙BLE使用無線通信,其頻率規(guī)定為免費的2.4Ghz,具備2Mbps帶寬,自適應跳頻GFSK無線電系統(tǒng)。

LL

LL層是鏈路層,它負責控制設備的RF狀態(tài),一共有五個狀態(tài):Standby,Advertising,Scanning,Initiating,Connected。

LL層可以發(fā)送廣播包和數(shù)據(jù)包,他會通過定時機制,在主機和從機的連接期間內(nèi)進行數(shù)據(jù)發(fā)送和接收。

LL層負責自適應調(diào)頻算法,對于廣播包,他會選擇在37,38,39三個廣播信道上循環(huán)發(fā)送。

對于數(shù)據(jù)包,會使用自適應跳頻算法,在0~36這37個數(shù)據(jù)信道中挑選可用的信道。

調(diào)頻算法在之前的文章中。

HCI

HCI 層負責主機和控制器之間的通信,是 Host 和 Controller 通信之間的接口。定義了特定的格式來控制藍牙芯片來做相應的動作(比如:inquiry,connect,disconnect)。

HCI 層為上層級提供了一個統(tǒng)一訪問 HCI 控制器的接口,其接口為一系列的指令和事件,接口適用于 BR/EDR/LE/AMP 控制器。

HCI 層位于藍牙高層協(xié)議和低層協(xié)議之間,其目的是實現(xiàn)主機設備與藍牙模塊之間的互操作,即 HCI 是藍牙主機與主機控制器間軟硬件接口。

HCI 為藍牙硬件中基帶控制器和鏈接管理器提供了命令接口,從而實現(xiàn)對硬件狀態(tài)注冊器和控制寄存器的訪問,提供了對藍牙基帶的統(tǒng)一訪問模式。

目前,HCI 的傳輸層主要有:USB,RS-232,UART 等,早些年很多外掛的藍牙外設芯片,他們的界面就是基于HCI這一層。

L2CAP

向上層提供數(shù)據(jù)封裝服務,允許端到端的數(shù)據(jù)通信。

在LL協(xié)議中,實現(xiàn)了邏輯連接(logic link)建立,硬件地址尋址,CRC校驗等功能。

而在L2CAP層中,通過對LL層建立的邏輯連接進行控制和適配,來實現(xiàn)不同應用。

實現(xiàn)數(shù)據(jù)傳輸中對分包、組包、流控、重傳等功能需求。

L2CAP主要功能:

1.協(xié)議信道復用(protocol/channel multiplexing)

2.分段與重組(segmentation and reassembly SAR)

3.每個信道流控(per-channel flow control)

4.差錯控制(error control)

L2CAP為上層,提供了一個可靠的數(shù)據(jù)收發(fā)接口。

SMP

這一層主要定義配對功能和秘鑰的分發(fā)機制。

GAP

負責訪問模式和進程,包括設備發(fā)現(xiàn)、建立連接、終止連接、初始化安全特征和設備配置。

GAP(Generic Access Profile, 通用訪問規(guī)范),該profile保證不同的Bluetooth產(chǎn)品可以互相的發(fā)現(xiàn)對方并建立連接。同時描述了設備如何成為廣播者和觀察者,并且實現(xiàn)無需連接的數(shù)據(jù)傳輸。

 

GAP層還定義了不同類型的地址來實現(xiàn)隱私性和可解析性。

GAP將設備分為四種角色:外圍設備(Peripheral),中央設備(Central),播報設備(Broadcast),觀察設備(Observer)。

· 外圍設備(Peripheral):廣播發(fā)送者,是可連接的設備,連接后成為從設備
· 中央設備(Central):掃描廣播啟動連接,連接后成為主設備
· 播報設備(Broadcaster):廣播發(fā)送者,不是可連接的設備
· 觀察設備(Observer):掃描廣播啟動連接,連接后成為主設備

那么為什么GAP要分為4種角色?

因為藍牙標準制定的考慮,BLE主打低功耗,所以在BLE體系中,為了更大可能的優(yōu)化設備,節(jié)省功耗,所有層都采用了非對稱的設計(主從不同構),對于物理層的無線電裝置,可以是以下3種形式:

    芯片只有發(fā)射機:只能發(fā)射無線信號,不能接收無線信號,硬件成本低。芯片只有接收機:只能接收無線信號,不能發(fā)射無線信號,硬件成本低。芯片同時具有接收機和發(fā)射機:既可以接收無線信號,也可發(fā)射無線信號,硬件成本較高。

這樣,當某個應用只需要在設備之間單向傳輸數(shù)據(jù)時,其中一個設備可以作為廣播者,采用只有發(fā)射機的芯片,另外一個設備可以作為觀察者,并且用了盡量少的硬件資源,所以功耗會更低,理論造價也會更低。

當然,我們也可以用同時具有接收機和發(fā)射機的設備實現(xiàn)這些功能,實際產(chǎn)品中,用這種方式的更多,但是因為只需實現(xiàn)單項傳輸,廣播者多了用不到的接收機,觀察者多了用不上的發(fā)射機,這會增加電流的消耗和硬件成本。

所以,藍牙標準的制定考慮的足夠多,從功耗、成本、以及各種應用場景都做了全面的考慮。

GAP層為藍牙確定了主從關系,以及連接過程中遵循的各種參數(shù),比如鏈接間隔,廣播間隔,廣播數(shù)據(jù),掃描間隔等等等,他確保了兩個設備之間的建立鏈接過程。

ATT

ATT層是一個非常重要的層,定義了各種屬性、屬性的操作方法,但是這些屬性有什么作用,能給用戶提供什么服務,它并不知道,他只是允許設備向其他設備公開某些數(shù)據(jù)或?qū)傩裕簿褪强蛻艉头斩四P汀?/p>

Client 和 Server 之間是通過 ATT PDU來通信的,ATT PDU主要包括4類:讀,寫,notify 和 indicate。

我們舉一個生活中的例子來了解ATT的作用:

GATT

GATT層主要用于定義如何使用ATT的服務框架,它是一個通用屬性,BLE連接后的通信協(xié)議是建立在GAT協(xié)議之上的。它定義了兩個BLE設備之間,通過Service和Characteristic進行通信。

GATT結(jié)構由嵌套的Profile、Service、Characteristics組成。

每個Profile就是預先定義好的Service集合。例如官方的心率Heart Rate Profile就是結(jié)合了Heart Rate Service和Device Information Service。

https://btprodspecificationrefs.blob.core.windows.net/gatt-specification-supplement/GATT_Specification_Supplement.pdf

Service就是一個獨立的邏輯項,它包含一個或多個Characteristic,每個Service都由唯一的UUID標識,UUID有16位的有128位的,16位的UUID是官方通過認證的,需要花錢購買,128位的可以隨便自己定義。

Characteristic是GATT中最小的邏輯數(shù)據(jù)單元,當然它可能包含一組關聯(lián)的數(shù)據(jù),例如加速度計的 X/Y/Z 三軸值。

在官方心率的例子,可以看到它包含了 3 個 Characteristic:Heart Rate Measurement、Body Sensor Location 和 Heart Rate Control Point,并且定義了只有第一個是必須的,其他是可選實現(xiàn)的。

每個Characteristic對應的value就是對應格式的實際心率數(shù)據(jù)。中心可以通過讀取service、再進一步讀取characteristic來獲得具體的心率數(shù)值。

每個 Characteristic 用 16 bit 或者 128 bit 的 UUID 唯一標識。所有數(shù)據(jù)交互必須通過明確的UUID確定到service和characteristic。

實際上,和 BLE 外設打交道,主要是通過 Characteristic。

你可以從 Characteristic 讀取數(shù)據(jù),也可以往 Characteristic 寫數(shù)據(jù),這樣就實現(xiàn)了雙向的通信。

所以你可以自己實現(xiàn)一個類似串口(UART)的 Sevice,這個 Service 中包含兩個 Characteristic,一個被配置只讀的通道(RX),另一個配置為只寫的通道(TX),這就是我們常用的透傳模塊。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
KSZ8041NL-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC32

ECAD模型

下載ECAD模型
$1.71 查看
TJA1051T/3/2Z 1 NXP Semiconductors Interface Circuit
$9.33 查看
KSZ9897STXC 1 Microchip Technology Inc IC ETHERNET SWITCH 7PORT 128TQFP

ECAD模型

下載ECAD模型
$10.66 查看

相關推薦

電子產(chǎn)業(yè)圖譜

多年硬件從業(yè)經(jīng)驗,專注分享從研發(fā)到供應鏈,再到精益制造過程中的經(jīng)驗和感悟!