久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > BLE協議棧

BLE協議棧 時間:2018-08-16     ; 來源(yuan):未(wei)知

進行(xing)BLE 應用開發,我們會經常聽(ting)說到連個詞(ci)匯“協議(yi)棧”和“協議(yi)”。那他 們之(zhi)間(jian)有什么關系(xi)和區別(bie)呢(ni)。 

協議(yi)定義的(de)(de)是一系列的(de)(de)通信標(biao)準(zhun),通信雙方需要(yao)共同按照規定好的(de)(de)標(biao)準(zhun)進行(xing)正(zheng)常的(de)(de)數據收發。

舉個(ge)例子(zi)來說(shuo)兩(liang)個(ge)人想要進行(xing)交流必須要說(shuo)同(tong)一種語言(yan),這就(jiu)是協議。

協議棧是(shi)協議的具(ju)體實現(xian)形式,通俗(su)理解為用(yong)代碼實現(xian)的函數(shu)庫,以便于開發(fa)人員(yuan)調用(yong)。 藍牙 4.0 BLE 協議棧就是(shi)將各個層定(ding)義的協議都集合在一起,以函數(shu)的形式實現(xian),并提供一 些(xie)應用(yong)層 API 供用(yong)戶調用(yong)。 

下(xia)面來看一下(xia)BLE基本協議層

藍牙(ya)核(he)(he)心規格中說明了藍牙(ya)核(he)(he)心系統組成(cheng)包含(han)主(zhu)機(ji)部分(fen)和(he)(he)控(kong)制(zhi)器(qi)部分(fen)(一(yi)個主(zhu)控(kong)制(zhi)器(qi)和(he)(he)一(yi) 個或多個二級控(kong)制(zhi)器(qi))。主(zhu)機(ji)和(he)(he)控(kong)制(zhi)器(qi)的分(fen)離追(zhui)溯到(dao)藍牙(ya) BR/EDR 設備(bei)時(shi)期,控(kong)制(zhi)器(qi)和(he)(he)主(zhu)機(ji) 通常分(fen)開實現(xian)。 

  主(zhu)(zhu)機(ji)部分:所有非核心配置文件以下(xia)和(he)主(zhu)(zhu)機(ji)控(kong)(kong)制接(jie)(jie)口以上層(ceng)。  控(kong)(kong)制器部分:主(zhu)(zhu)機(ji)控(kong)(kong)制接(jie)(jie)口以下(xia)層(ceng)。

ti公司的(de)(de)cc2540的(de)(de)結構(gou),將ble協議棧的(de)(de)各個部分進行了詳細的(de)(de)區分,這(zhe)個結構(gou)對我們來說(shuo)過于復雜。

TI 公司(CC2540)精簡(jian)一下(xia),大致分可分為(wei)以下(xia)幾層(ceng)。 所有(you) Profile (配置文件(jian)(jian)層(ceng))和(he)應用(yong)都建構在 GAP 或 GATT 之(zhi)上。TI 的(de) CC2540 器件(jian)(jian)可以單芯片實現(xian) BLE 藍牙協(xie)議棧結構圖(tu)的(de)所有(you)組件(jian)(jian),包括應用(yong)程(cheng)序。 

下(xia)面我們簡單(dan)了解一下(xia)藍牙協議棧的分層

下面(mian)解釋一(yi)下我們會涉及(ji)到(dao)的一(yi)些專(zhuan)業名詞:

物理(li)層(Physical Layer):1Mbps 自適應(ying)跳頻(pin)(pin) GFSK(高斯頻(pin)(pin)移鍵控調制),運行在免征的 2.4GHz 頻(pin)(pin)段。 

鏈(lian)路層(Link Layer):此層為 RF 控(kong)制(zhi)(zhi)器,用于控(kong)制(zhi)(zhi)設(she)(she)備(bei)(bei)(bei)的(de)射頻狀態,控(kong)制(zhi)(zhi)設(she)(she)備(bei)(bei)(bei)會處于 5 種狀態之一:待(dai)機(ji)(Standby)、廣(guang)播(bo)、監(jian)聽(ting)/掃描(Scan)、初始(shi)化(hua)、連(lian)接(jie)。廣(guang)播(bo)設(she)(she)備(bei)(bei)(bei)不需(xu) 要建立連(lian)接(jie)就可以(yi)發送數(shu)據;而掃描設(she)(she)備(bei)(bei)(bei)監(jian)聽(ting)廣(guang)播(bo)數(shu)據。發起設(she)(she)備(bei)(bei)(bei)響應一個連(lian)接(jie)請(qing)求(qiu)(qiu)給廣(guang)播(bo) 設(she)(she)備(bei)(bei)(bei)。如果廣(guang)播(bo)設(she)(she)備(bei)(bei)(bei)接(jie)受(shou)連(lian)接(jie)請(qing)求(qiu)(qiu),發起者設(she)(she)備(bei)(bei)(bei)和(he)廣(guang)播(bo)設(she)(she)備(bei)(bei)(bei)將會進入(ru)連(lian)接(jie)狀態。此時(shi)兩個設(she)(she) 備(bei)(bei)(bei)的(de)角色(se)變(bian)了:主機(ji)和(he)從(cong)(cong)機(ji)。發起連(lian)接(jie)的(de)設(she)(she)備(bei)(bei)(bei)叫做主機(ji),接(jie)受(shou)連(lian)接(jie)請(qing)求(qiu)(qiu)的(de)設(she)(she)備(bei)(bei)(bei)稱為從(cong)(cong)機(ji)。 

主(zhu)機控(kong)(kong)制接口層(Host Controller Interface):為主(zhu)機和控(kong)(kong)制器(qi)之間提(ti)供一個標準(zhun)通信接 口。這一層可以(yi)通過軟件 API 或硬(ying)件接口實現,例如 UART、SPI、USB。

邏輯鏈(lian)路控制及自適應(ying)協議(yi)層(Logical link Control and Adaptation Protocol):為上層提(ti) 供數據封裝服務,允許邏輯上的點對多點數據通信。 

安全管理層(Security Manager):定(ding)義了配對和(he)(he)密(mi)鑰分(fen)配方(fang)式。并為協議棧的其(qi)它層和(he)(he) 其(qi)它設備之間的安全連接和(he)(he)交(jiao)換數據提(ti)供(gong)服務。 

通(tong)(tong)用(yong)訪問配置文(wen)件層(Generic Access Profile):GAP 是(shi)直接(jie)(jie)與(yu)應(ying)用(yong)程序或配置文(wen)件 (profiles)通(tong)(tong)信的接(jie)(jie)口(kou),處(chu)理設備發現(xian)和連接(jie)(jie)相(xiang)關服務。另外(wai)還(huan)處(chu)理安全特(te)性(xing)的初始(shi)化。對 上級(ji),提供(gong)應(ying)用(yong)程序接(jie)(jie)口(kou);對下級(ji),管理各級(ji)智能部門,尤其(qi)是(shi)指示(shi) LL 層控制器 5 種狀(zhuang)態 切換。 

屬(shu)性協議層(ceng)(Attribute Protocol):允許設(she)(she)備向其它設(she)(she)備展示一塊特定的(de)數據,稱之為“屬(shu) 性”。在(zai) ATT 環(huan)境中,展示“屬(shu)性”的(de)設(she)(she)備稱之為服務器(qi),與之配對的(de)設(she)(she)備稱之為客戶端(duan)。 鏈(lian)路層(ceng)狀(zhuang)態(tai)(主機(ji)(ji)(ji)和(he)從機(ji)(ji)(ji))與設(she)(she)備的(de) ATT 角色是(shi)(shi)相互獨立的(de)。例如,主機(ji)(ji)(ji)設(she)(she)備既可(ke)以是(shi)(shi) ATT 服務器(qi),也可(ke)以是(shi)(shi) ATT 客戶端(duan)。從機(ji)(ji)(ji)設(she)(she)備可(ke)以是(shi)(shi) ATT 客戶端(duan),也可(ke)以是(shi)(shi) ATT 服務端(duan)。 

通(tong)用(yong)屬(shu)性(xing)配(pei)置文件層(Generic Attribute Profile):定義了(le)使用(yong) ATT 的(de)(de)服(fu)務(wu)框架(jia)。GATT 規定了(le)配(pei)置文件(profiles)的(de)(de)結(jie)構(gou)。在 BLE 中,所有(you)被 profile 或服(fu)務(wu)器用(yong)到的(de)(de)數據塊都稱之 為“特征”。兩個(ge)建立連(lian)接的(de)(de)設備之間的(de)(de)所有(you)數據通(tong)信都是通(tong)過 GATT 子(zi)程(cheng)序處理。應用(yong)程(cheng) 序和 profiles 直接使用(yong) GATT 層。GATT 負責(ze)處理向上與(yu)應用(yong)打交道,其關鍵工作(zuo)是為檢索(suo)工 作(zuo)提供合適的(de)(de) profile 結(jie)構(gou),而(er) profile 由檢索(suo)關鍵詞(characteristics)組成。 

再需要(yao)介(jie)紹的(de)就是(shi)協議棧頂層的(de)配(pei)置文件層

藍牙(ya) 4.0BLE 協(xie)(xie)議(yi)(yi)棧配(pei)(pei)置(zhi)文件層包括(kuo) GAP/安全配(pei)(pei)置(zhi)文件、GATT 配(pei)(pei)置(zhi)文件兩部分(fen),處于 協(xie)(xie)議(yi)(yi)棧的頂層部分(fen),配(pei)(pei)置(zhi)文件將協(xie)(xie)議(yi)(yi)棧和應(ying)用緊密地聯系在一起(qi)。這(zhe)使得開發(fa)者即(ji)使對協(xie)(xie)議(yi)(yi) 棧底層的原理沒有深入的了解(jie)。也可(ke)以(yi)方便地進行應(ying)用的開發(fa)。

通(tong)(tong)用(yong)(yong)屬性(xing)配(pei)置文件層(ceng)(Generic Attribute Profile):定(ding)義(yi)了使(shi)用(yong)(yong) ATT 的(de)服(fu)務(wu)框架。GATT 規定(ding)了配(pei)置文件(profiles)的(de)結(jie)構(gou)。在 BLE 中,所有被 profile 或服(fu)務(wu)器用(yong)(yong)到的(de)數(shu)據(ju)塊都(dou)稱之 為“特征”。兩個(ge)建立連接的(de)設備之間的(de)所有數(shu)據(ju)通(tong)(tong)信(xin)都(dou)是(shi)通(tong)(tong)過 GATT 子程序處(chu)(chu)理。應用(yong)(yong)程 序和 profiles 直接使(shi)用(yong)(yong) GATT 層(ceng)。GATT 負(fu)責處(chu)(chu)理向上與應用(yong)(yong)打交道,其關鍵工作(zuo)是(shi)為檢(jian)索工 作(zuo)提供合適的(de) profile 結(jie)構(gou),而 profile 由(you)檢(jian)索關鍵詞(characteristics)組成。 

剛才也說到了新的藍牙(ya)規格采用基(ji)于屬性協議(ATT)的服務(wu)結(jie)構,所有低功耗數據(ju)通(tong)信都是通(tong)過 通(tong)用屬性配(pei)置文件(jian)(jian)(GATT)運行。從 GATT 角度(du)來看(kan),當連個設備建立(li)連接(jie)后,他們處于 兩個狀態――GATT 服務(wu)器(qi)和 GATT 客(ke)戶端。如果應用或(huo)另一個配(pei)置文件(jian)(jian)使用 GATT 配(pei)置文 件(jian)(jian),那(nei)么客(ke)戶端和服務(wu)器(qi)可以(yi)有序的方式進行互(hu)動。 

 GATT 服務器――它(ta)是為 GATT 客戶端提供讀寫數據服務的設備(bei)。 

 GATT 客戶端――它是從 GATT 服務器讀(du)寫應用(yong)數據(ju)的設備(bei)。 

特別注意的(de)是(shi),GATT 角(jiao)色(se)中的(de)客戶(hu)端(duan)(duan)和服(fu)務器(qi)(qi)與鏈(lian)路層角(jiao)色(se)的(de)主機(ji)和從機(ji)是(shi)兩個完全(quan) 獨(du)立的(de)概念,與 GAP 的(de)外(wai)設和集(ji)中器(qi)(qi)也是(shi)完全(quan)獨(du)立的(de)。一個從機(ji)可以是(shi) GATT 客戶(hu)端(duan)(duan)或 GATT 服(fu)務器(qi)(qi);主機(ji)也可以是(shi) GATT 客戶(hu)端(duan)(duan)和 GATT 服(fu)務器(qi)(qi)。 

服(fu)務(wu)器包含一(yi)個或(huo)多個 GATT 服(fu)務(wu),GATT 服(fu)務(wu)是完成(cheng)特定(ding)(ding)功(gong)能的一(yi)系(xi)列數(shu)據的集(ji)合。 而 GATT 配(pei)置文(wen)件定(ding)(ding)義如(ru)何利用(yong)屬(shu)性協議(yi)發(fa)現、讀取、編寫和獲(huo)取指示(shi)。這(zhe)些功(gong)能支持基于 服(fu)務(wu)的結構。所(suo)采用(yong)的服(fu)務(wu)在配(pei)置文(wen)件規格中(zhong)有所(suo)界定(ding)(ding)。GATT 使你(ni)能了解配(pei)置文(wen)件規格所(suo) 界定(ding)(ding)的服(fu)務(wu)和特征(zheng)。 

GATT 結構使創建和實(shi)施(shi)新(xin)的(de)配(pei)置(zhi)文件(jian)更(geng)加容(rong)易。許多新(xin)的(de)配(pei)置(zhi)文件(jian)仍在開發過程(cheng)中, 因為這一優勢繼(ji)續(xu)擴大。配(pei)置(zhi)文件(jian)實(shi)施(shi)十分簡單,有助應用和支持這些配(pei)置(zhi)文件(jian)的(de)嵌入式設 備迅速(su)增加。 

在 TI 公司的(de)示例工(gong)程 SimpleBLEPeripheral 應(ying)用(yong)中,有三個服務: 

 強制(zhi)(zhi)的 GAP 服(fu)務(wu)――這一服(fu)務(wu)包含設備和訪問信息,例如(ru),設備名(ming)、供(gong)應商和產品 標示,它是(shi) BLE 協議棧的一部分,是(shi) BLE 規(gui)范(fan)對每一個 BLE 設備必須強制(zhi)(zhi)要求(qiu)的, 這部分源碼(ma)并沒有提供(gong),而是(shi)編譯到(dao)協議棧庫中了。 

 強制的 GATT 服(fu)(fu)務(wu)――這一服(fu)(fu)務(wu)包含 GATT 服(fu)(fu)務(wu)器的信息,是(shi)協(xie)議棧的一部(bu)分。是(shi) BLE 規范(fan)對每一個 GATT 服(fu)(fu)務(wu)器設備的必須(xu)要求。這部(bu)分源碼并不提供(gong),而是(shi)編譯 到協(xie)議棧庫(ku)中。 

 SimpleGATTProfile 服務――這(zhe)個(ge)服務是一個(ge)示(shi)例(li)配置(zhi)文(wen)件(jian)(jian)進行測試(shi)和(he)示(shi)范。所有(you)的(de) 源碼程序在 simpleGATTProfile.c 和(he) simpleGATTProfile.h 文(wen)件(jian)(jian)中。這(zhe)個(ge)服務包(bao)含應(ying)用(yong)(yong) 數據(ju)的(de)信息,與應(ying)用(yong)(yong)數據(ju)的(de)傳遞密切相關(guan)。讀(du)者可以按照上面(mian)示(shi)例(li)特定(ding)的(de)格式編寫 自己(ji)的(de) GATT 服務。 

“特性(xing)”是(shi)服(fu)務(wu)用到的(de)值,以及其(qi)內(nei)容(rong)和配置信息,GATT 定義(yi)了 BLE 連(lian)接中發(fa)現、讀(du) 取(qu)、寫入屬(shu)性(xing)的(de)子過(guo)程。GATT 服(fu)務(wu)上的(de)特性(xing)值,及其(qi)內(nei)容(rong)和配置信息(即描(miao)述符(fu))存儲于 屬(shu)性(xing)表中。屬(shu)性(xing)表是(shi)一(yi)個數(shu)據庫,包含了小塊數(shu)據被(bei)稱之為屬(shu)性(xing)。除了值本身,每(mei)個屬(shu)性(xing)都 有(you)與之相關(guan)的(de)以下屬(shu)性(xing)。 

句柄——屬(shu)性在表中的地(di)址(zhi),每(mei)個(ge)屬(shu)性有唯一的句柄。

類型——這(zhe)表(biao)明數(shu)據(ju)所代表(biao)的(de)含義,通(tong)常(chang)由 Bluetooth SIG 規定或(huo)用(yong)戶自定義的(de) “UUID”(universal unique identifier)。 

 權限(xian)——規定了 GATT 客戶端設備對屬性的訪問(wen)(wen)權限(xian),包括(kuo)是否能訪問(wen)(wen)和(he)怎樣訪問(wen)(wen)。 

GATT 定義了 GATT 服務器(qi)和(he)客戶(hu)端之間(jian)通信(xin)的若干(gan)個子進程。 ;

下面是一(yi)些子進(jin)程: 

l 讀特性值(zhi)——客戶端(duan)設備(bei)請求(qiu)讀取特定句柄處的特性值(zhi),服務器將此值(zhi)回(hui)應為客戶端(duan) (假設屬(shu)性為可讀權(quan)限)。 

l 使(shi)用特(te)性(xing)(xing)的(de) UUID 讀——客戶端請求一個特(te)定(ding)類(lei)型(xing)的(de)所有特(te)性(xing)(xing)值(zhi),服務(wu)端將所有相匹 配類(lei)型(xing)的(de)特(te)性(xing)(xing)的(de)句(ju)柄和值(zhi)回應給客戶端(假定(ding)屬(shu)性(xing)(xing)有讀權限)。客戶端不需要知道 這些(xie)特(te)性(xing)(xing)的(de)句(ju)柄。 

l 讀(du)多個特性(xing)(xing)(xing)(xing)(xing)值——客戶端一次請求讀(du)取多個句柄的特性(xing)(xing)(xing)(xing)(xing)值,服務器將(jiang)這些(xie)(xie)特性(xing)(xing)(xing)(xing)(xing)值回 應(ying)給客戶端(假定(ding)屬性(xing)(xing)(xing)(xing)(xing)有讀(du)權限),客戶端需要知道如何(he)解析這些(xie)(xie)不同特性(xing)(xing)(xing)(xing)(xing)值的數 據。 

l 讀(du)特(te)(te)性描(miao)述符(fu)——客戶端(duan)請求讀(du)取特(te)(te)殊句柄的(de)(de)特(te)(te)性描(miao)述符(fu),服(fu)務(wu)器將特(te)(te)性描(miao)述符(fu)的(de)(de)值 回(hui)應(ying)為客戶端(duan)(假定屬性有讀(du)權(quan)限)。 

l UUID 發現特(te)性(xing)值(zhi)——客戶端(duan)通過發送“特(te)性(xing)”的類型(UUID)來請求發現這個“特(te) 性(xing)”的句(ju)柄(bing),服務器將特(te)性(xing)的聲明回(hui)應給客戶端(duan),其中包括特(te)性(xing)值(zhi)的句(ju)柄(bing)以及特(te)性(xing) 的權限。 

l 寫(xie)特性值(zhi)——客戶端(duan)請求向服(fu)(fu)務(wu)器特定的(de)(de)句柄寫(xie)入特性值(zhi),服(fu)(fu)務(wu)器將數據是否(fou)寫(xie)入成 功的(de)(de)信(xin)息(xi)反饋(kui)給客戶端(duan)。 

l 寫特性(xing)描述符——客戶端請求向服(fu)務器(qi)特定(ding)的(de)句柄寫入(ru)特性(xing)描述符,服(fu)務器(qi)將(jiang)數據是 否(fou)寫入(ru)成功的(de)信息反饋給客戶端。 

l 特性(xing)值通(tong)(tong)(tong)知(zhi)(zhi)——服(fu)務(wu)器(qi)(qi)(qi)將一個(ge)(ge)特性(xing)值通(tong)(tong)(tong)知(zhi)(zhi)給客(ke)戶(hu)端。這(zhe)個(ge)(ge)客(ke)戶(hu)端無需向服(fu)務(wu)器(qi)(qi)(qi)請求這(zhe) 個(ge)(ge)數(shu)(shu)(shu)據,當客(ke)戶(hu)端接(jie)收到通(tong)(tong)(tong)知(zhi)(zhi)數(shu)(shu)(shu)據后 3,也不(bu)需要(yao)回應服(fu)務(wu)器(qi)(qi)(qi)。但必須(xu)首先(xian)配置特性(xing) 使(shi)能通(tong)(tong)(tong)知(zhi)(zhi)服(fu)務(wu),profile 定(ding)義(yi)了什么時候服(fu)務(wu)器(qi)(qi)(qi)應該發送這(zhe)個(ge)(ge)數(shu)(shu)(shu)據。 

每個 profile 初始化(hua)其相應的服(fu)務并內在的通(tong)過 GATT 服(fu)務注冊服(fu)務。GATT 服(fu)務添加整 個服(fu)務向屬(shu)性(xing)列表,并給每個屬(shu)性(xing)分配唯一句柄。 

GATT 屬性(xing)列(lie)表中有(you)一些特殊屬性(xing)類型,其值有(you)藍牙(ya)技(ji)術(shu)聯盟技(ji)術(shu)定(ding)義: 

GATT_PRIMARY_SERVICE_UUID——表示新服(fu)務的開(kai)始和提(ti)供的服(fu)務類(lei)型。 

GATT_CHARACTER_UUID——稱之為(wei)“特性(xing)聲(sheng)明”,表示緊跟其(qi)后的是 GATT 特 性(xing)值(zhi)。 

GATT_CLIENT_CHAR_CFG_UUID——這個(ge)屬性代表(biao)特性描述符,它與屬性表(biao)中它 前(qian)面近的(de)句柄處的(de)特征值相關(guan),它允許 GATT 客戶端設(she)備使能特性值通知(zhi)。 

GATT_CHAR_USER_DESC_UUID——這個屬性代表特(te)(te)性描(miao)述(shu)符,它(ta)與屬性表中它(ta)前 面近(jin)的(de)句柄處的(de)特(te)(te)性值相關(guan),包(bao)含一(yi)個 ASCII 字(zi)符串,是對相關(guan)特(te)(te)性的(de)描(miao)述(shu)。 

這些特定屬性類(lei)型在 BLE 規范(fan)中包(bao)括,更多其(qi)他的詳細(xi)屬性類(lei)型請參考文檔 BLE_API_Guide_main.htm。 

 下面是(shi)已(yi)經(jing)采用的(de)基于 GATT 的(de)藍牙(ya)配置文件和服務: 

基于 GATT 的(de)規(gui)格 服務 

(可(ke)進行資格(ge)認證(zheng)) 

已采納 版(ban)本 

ANP 警報(bao)通(tong)知配置(zhi)文件 

1.0 

ANS 警報通(tong)知服(fu)務 

1.0 

CTS 當前時間服(fu)務 

1.0 

DIS 設備信息服務 

1.0 

FMP Find Me 配置文(wen)件 

1.0 

HTP 健康體溫(wen)計配置(zhi)文(wen)件 

1.0 

HTS 健(jian)康體溫計服務 

1.0 

HRP 心(xin)率配置文(wen)件(jian) 

1.0 

HRS 心(xin)率服務 

1.0 

IAS 即時警報服務 

1.0 

LLS 鏈路丟失服務 

1.0 

NDCS 下個(ge)日(ri)光節約時間(jian)更改(gai)服務(wu) 

1.0 

PASP 電話警報狀態配置文件 

1.0 

PASS 電話警報狀(zhuang)態服務 

1.0 

PXP 近距(ju)傳感配置(zhi)文件 

1.0 

RTUS 參(can)考時間更(geng)新服務 

1.0 

TIP 時間配置文件 

1.0 

TPS 發射功率服(fu)務 

1.0 

 通用訪問(wen)配置文件(jian)(Generic Access Profile)

BLE 協(xie)議棧中的 GAP 層(ceng)負責處理(li)設備訪問(wen)模式和程序。包括(kuo)設備發現、建立連接、終止 

連接、初始化安(an)全特寫和設備配置。

GAP 層總是(shi)作為下面四種角(jiao)色之一(yi): 

(1) 廣播(bo)者------不(bu)可連續廣播(bo)設(she)備; 

(2) 觀察者(zhe)------掃描廣播,但不(bu)發起建立連接; 

(3) 外部設備------可(ke)連(lian)接(jie)的(de)廣播設備,可(ke)以(yi)在單個鏈路層連(lian)接(jie)中作為從機; 

(4) 集(ji)中(zhong)(zhong)器(qi)------掃描廣播(bo)設備并發起連接(jie),在單(dan)鏈路(lu)(lu)層或多鏈路(lu)(lu)層作為主機(ji),目前,TI 的 BLE 協議棧(zhan)支持一個(ge)集(ji)中(zhong)(zhong)器(qi)連接(jie) 3 個(ge)外設。 

BLE 規(gui)范(fan)說(shuo)明允許特(te)性(xing)的的多(duo)個(ge)角(jiao)色(se)組合。簡單外(wai)設實例默認僅支持外(wai)設角(jiao)色(se),可以通 過添加源碼(ma)程序使(shi)工程同(tong)時(shi)指(zhi)出外(wai)設和廣播(bo)角(jiao)色(se)。當然在(zai)編譯(yi)廣播(bo)源碼(ma)時(shi),需禁(jin)止編譯(yi)外(wai)設 源碼(ma)。 

  在典型低(di)功耗(hao)藍牙(ya)系(xi)統中(zhong),外(wai)部設(she)(she)備(bei)(bei)廣播特定數(shu)據為了是(shi)(shi)集(ji)中(zhong)器(qi)知(zhi)道它是(shi)(shi)一個(ge)可連(lian)(lian)(lian)接設(she)(she)備(bei)(bei)。廣播包(bao)包(bao)含(han):設(she)(she)備(bei)(bei)地(di)址、以(yi)及一些額外(wai)的數(shu)據,例如(ru)設(she)(she)備(bei)(bei)名。集(ji)中(zhong)器(qi)接收到(dao)廣播包(bao),會(hui)向外(wai)部設(she)(she)備(bei)(bei)發送(song)(song)一個(ge)掃(sao)(sao)描請(qing)求,這(zhe)個(ge)外(wai)部設(she)(she)備(bei)(bei)響應(ying)一個(ge)響應(ying)信(xin)號,被稱之“掃(sao)(sao)描回應(ying)”。因(yin)此集(ji)中(zhong)器(qi)選(xuan)擇意識(shi)到(dao)外(wai)部設(she)(she)備(bei)(bei),知(zhi)道是(shi)(shi)可以(yi)連(lian)(lian)(lian)接的設(she)(she)備(bei)(bei),這(zhe)就是(shi)(shi)發現設(she)(she)備(bei)(bei)的過程。此時,集(ji)中(zhong)器(qi)向外(wai)部設(she)(she)備(bei)(bei)發送(song)(song)請(qing)求建立(li)連(lian)(lian)(lian)接。一個(ge)連(lian)(lian)(lian)接請(qing)求包(bao)含(han)許多連(lian)(lian)(lian)接參數(shu):

 連接時間(jian)間(jian)隔(ge)(Connection Interval) 

兩(liang)個 BLE 設(she)(she)備(bei)連(lian)(lian)(lian)(lian)接使(shi)用(yong)跳頻機制(zhi),兩(liang)個設(she)(she)備(bei)發送和接收數據使(shi)用(yong)特定(ding)的信(xin)道,一段(duan)時間 后使(shi)用(yong)心得(de)信(xin)道(鏈路(lu)(lu)層(ceng)處理(li)信(xin)道切換),兩(liang)設(she)(she)備(bei)在切換設(she)(she)備(bei)之后收發數據稱之為連(lian)(lian)(lian)(lian)接事件。 即使(shi)沒有應用(yong)數據收發,兩(liang)設(she)(she)備(bei)也一直(zhi)通過交(jiao)換鏈路(lu)(lu)層(ceng)數據位置連(lian)(lian)(lian)(lian)接狀態。連(lian)(lian)(lian)(lian)接間隔(ge)(ge)就是兩(liang) 個連(lian)(lian)(lian)(lian)接時間的間隔(ge)(ge)。連(lian)(lian)(lian)(lian)接間隔(ge)(ge)以(yi) 1.25ms 為單位。連(lian)(lian)(lian)(lian)接間隔(ge)(ge)的范圍:6(7.5ms)~ 3200(4s)。 

  不同的(de)(de)(de)應用(yong)可能(neng)要求不同的(de)(de)(de)連(lian)接(jie)(jie)間(jian)隔。長時(shi)間(jian)連(lian)接(jie)(jie)間(jian)隔的(de)(de)(de)優勢(shi)是(shi)節省功耗(hao)。因為設備在連(lian)接(jie)(jie)過程中有大量的(de)(de)(de)睡眠時(shi)間(jian),不好(hao)之處是(shi)設備發(fa)送數(shu)據后,需要等待哦下一個(ge)連(lian)接(jie)(jie)設備。

  短(duan)的連(lian)(lian)接(jie)間(jian)隔好處是(shi)設備收發數據機會多(duo),因為(wei)兩個(ge)之間(jian)連(lian)(lian)接(jie)的頻率高。不好之處是(shi)耗能較高,因為(wei)設備頻繁被(bei)連(lian)(lian)接(jie)事件喚醒。

n從(cong)(cong)機延時(Slave Latency) 這項(xiang)參(can)數(shu)可以使從(cong)(cong)機(外設(she))跳過幾項(xiang)連接事件,使從(cong)(cong)機設(she)備(bei)更靈(ling)活。如果沒有數(shu)據(ju)發 

送時,可以選(xuan)擇跳過連接事(shi)件和休眠(mian),以至于更省電。這個是由(you)從機(外設)決定。

從機(ji)延時(shi)值(zhi)(zhi)就是可(ke)以跳過大的連接事件個(ge)數。其值(zhi)(zhi)的范圍(wei):0 ~ 499,0 表示不(bu)跳過任 何連接事件。然而大有效間隔時(shi)間不(bu)能大于(yu) 16s。  

監視超時(Supervision Timeout) 

兩(liang)個(ge)成(cheng)功連(lian)接(jie)事件之(zhi)間(jian)的(de)大(da)允許間(jian)隔(ge)。如果(guo)超(chao)(chao)過了這個(ge)大(da)時間(jian)而沒(mei)有成(cheng)功的(de)連(lian)接(jie)事 件,設(she)備被認為丟失(shi)連(lian)接(jie),返回沒(mei)有連(lian)接(jie)狀態。參數值(zhi)以 10ms 為單位。監視超(chao)(chao)時值(zhi)的(de)范圍 從 10(100Ms) ~ 3200(32s)。另外(wai),超(chao)(chao)時值(zhi)必須(xu)大(da)于有效連(lian)接(jie)間(jian)隔(ge)。 

有效(xiao)間隔時(shi)間等(deng)于連(lian)個(ge)連(lian)接(jie)事(shi)件按之間的(de)時(shi)間。假設從(cong)(cong)機跳過可能事(shi)件的(de)大數(shu)量被(bei)從(cong)(cong) 機延時(shi)允許(如果從(cong)(cong)機延時(shi)被(bei)設置為 0,測有效(xiao)連(lian)接(jie)間隔等(deng)于真實連(lian)接(jie)事(shi)件)。下面(mian)是(shi)運算 公式: 

這(zhe)就是告(gao)訴我們(men),在(zai)這(zhe)種情況(kuang)下,從機向主(zhu)機沒有數(shu)據發送時,從機僅僅是每個 500ms 傳輸一次(ci)連接事件。 ;

許多應用中,從機設置跳過連(lian)接(jie)(jie)事(shi)件大個(ge)數。因此,在選擇(ze)連(lian)接(jie)(jie)參數時,需要考(kao)慮(lv)有 效(xiao)連(lian)接(jie)(jie)間隔。選擇(ze)正確的(de)(de)連(lian)接(jie)(jie)參數對 BLE 設備的(de)(de)功耗(hao)優化啟到(dao)重要作用。先列表在連(lian)接(jie)(jie)參數 設置上給出一(yi)個(ge)通用概述: 

減少(shao)連接間隔: u增加設備功耗 

增加雙向傳輸(shu)數據量 

降低設(she)備之間(jian)(jian)數據傳(chuan)輸所用的時間(jian)(jian) 增加連接(jie)間(jian)(jian)隔: 

降低設(she)備(bei)的功耗(hao) u降低設(she)備(bei)傳輸數(shu)據量 u提高設(she)備(bei)之間數(shu)據傳輸所用的時間 

減少從(cong)機延時(或(huo)這(zhe)個為(wei) 0): u提高從(cong)機設備的功耗 u降低從(cong)機設備接收集中器數據(ju)的時間(jian)。 

降低(di)從機延時: u外圍設備沒有數據發送集中(zhong)器(qi)期間降低(di)了功(gong)耗(hao)。、 

Effective Connection Interval = (Connection Interval) * ( 1 + (Slave Latency) ) 

Take the following example: Connection Interval: 80 (100ms) Slave Latency: 4 

Effective Connection Interval: (100ms) * ( 1 + 4 ) = 500ms 

提高集中(zhong)器發(fa)送給外圍設備的數據時(shi)間。 

在某些(xie)情況(kuang),集中器向(xiang)(xiang)外設(she)(she)請(qing)(qing)求一個連(lian)接參數包(bao),對(dui)外設(she)(she)也(ye)是不容(rong)易的(de)(de)。在其他情況(kuang), 一個外設(she)(she)可能期(qi)望改變連(lian)接中的(de)(de)參數,以(yi)外設(she)(she)應用為基礎。外設(she)(she)可以(yi)通過向(xiang)(xiang)集中器發送“連(lian) 接參數參數更(geng)新(xin)請(qing)(qing)求”來改變連(lian)接設(she)(she)置(zhi),這個請(qing)(qing)求由協議棧的(de)(de) L2CAP 層處理(li)。這個 請(qing)(qing)求包(bao) 括 4 個參數:小連(lian)接間隔(ge)、大連(lian)接間隔(ge)、從機延時(shi)和超時(shi)連(lian)接。這些(xie)參數值代表外設(she)(she)所 要求的(de)(de)連(lian)接參數。集中器接收(shou)請(qing)(qing)求后可以(yi)選擇(ze)接收(shou)或拒絕這些(xie)新(xin)的(de)(de)參數。 

  連接可以被主(zhu)機(ji)和從(cong)機(ji)以任何原因(yin)自動終(zhong)止(zhi)。一方發(fa)起終(zhong)止(zhi),并且另(ling)一方必須響(xiang)應,因(yin)此(ci)兩個設備都(dou)退出(chu)連接狀(zhuang)態。

GAP 層也處(chu)理(li) BLE 連接中安全特性(xing)的初始化,只有(you)在已(yi)認證(zheng)連接中,特定的數據才能被 讀寫。一旦連接建立,兩個(ge)(ge)設備(bei)進行配對。當(dang)(dang)配對完之后(hou),形(xing)成加密和(he)認證(zheng)鏈接的秘(mi)鑰(yao)。典 型案例中,外設請求(qiu)集中器(qi)提(ti)供秘(mi)鑰(yao)來完成配對工(gong)作(zuo)。秘(mi)鑰(yao)可(ke)能是(shi)一個(ge)(ge)固定值(zhi),例如“000000”, 也可(ke)以是(shi)一個(ge)(ge)隨機產生的值(zhi)提(ti)供給使用者。當(dang)(dang)集中器(qi)發送正確(que)的秘(mi)鑰(yao)后(hou),兩個(ge)(ge)設備(bei)交換(huan)安全 秘(mi)鑰(yao)并加密和(he)認證(zheng)鏈接。 

在(zai)許多(duo)情況(kuang)下,同一對(dui)(dui)集中(zhong)器和外設會不時地連接(jie)和斷開,BLE 有一個(ge)安(an)全特(te)性(xing)在(zai)配對(dui)(dui) 時,提供(gong)一個(ge)長期(qi)的安(an)全秘鑰(yao)信(xin)息(xi)(xi)。這種特(te)性(xing)叫(jiao)做(zuo)綁定。它允(yun)許兩個(ge)設備重新連接(jie)后快速(su)完 成加密(mi)和認證,并且(qie)不需要每次連接(jie)執行配對(dui)(dui)過程,只需要兩個(ge)之間存儲這個(ge)長期(qi)秘鑰(yao)信(xin)息(xi)(xi)。 

參考 SimpleBLEPeripheral 應用(yong),GAP 部分(fen)由 GAP 配(pei)置文件處理(li),并且綁(bang)定信(xin)息管理(li)由 GAP 安全配(pei)置文件(security profile)處理(li),更多(duo)的(de)信(xin)息在 TI 的(de) CC2540/41 BLE 協議棧的(de) GAP 配(pei)置文件頭文件 

 鏈路層規格 

借助先進的(de)省(sheng)電和加密功能,鏈(lian)路層將(jiang)提供超低耗(hao)能的(de)閑置模(mo)式運(yun)行、簡(jian)單的(de)設備發現 以及可(ke)靠的(de)點(dian)對多點(dian)數據傳輸。

使(shi)用 GAP 和 GATT 的堆棧 API

應用程序和(he)配置文件直接調用 GAP 和(he) GATT API 功能來實現 BLE 相(xiang)關功能,例如,廣 

播(bo)、連接、讀寫“特(te)性” 。

APIs 中有不同層(ceng)的(de) BLE 協議(yi)棧的(de)詳細(xi)信息(xi)。可以在 HTML 指導中咨詢,更多其(qi)他的(de)詳 

細信息請參考(kao) BLE_API_Guide_main.htm 文檔。 使(shi)用(yong)(yong) GAP 和 GATT 的 API 功能(neng)一般步(bu)驟如下: (1) 使(shi)用(yong)(yong)適當的參數(shu)調用(yong)(yong) API 功能(neng);

(2) 協議棧執(zhi)行特定的操(cao)作并(bing)返回;  

 (3) 操作完成后,或者任何時候堆(dui)(dui)棧有消息需(xu)要報告給調用(yong) API 功能的任務,堆(dui)(dui)棧發送 一條 OSAL 纖(xian)細給調用(yong) API 的任務。 

(4) 調用 API 任務接收和處理相應地消息;

(5) 調用 API 的任務釋(shi)放消息;

從 GAP 從機角(jiao)色(se) profile 可以看到一個過(guo)程的示(shi)例(peripheral.c)。 

(1) Profile 調(diao)用 GAP API 函(han)數(shu) GAP_DeviceInit 初始化設備;、 

(2) GAP 進行初(chu)始化并返回 SUCCESS(0x00); 

(3) 初始化之完成后(hou),BLE 協議(yi)棧發送(song) OSAL 消(xiao)息,外(wai)圍角(jiao)色(se) profile 的頭事件值為 GAP_MSG_EVENT,并且(qie)操作(zuo)碼為 GAP_DEVICE_INIT_DONE_EVENT; 

(4) Profile 任務接收 SYS_EVENT_MSG 事(shi)件,表(biao)明它是一個消(xiao)息(xi),Profile 接收到這(zhe)個 消(xiao)息(xi)并(bing)查看消(xiao)息(xi)頭和操作碼(ma)的值。基于這(zhe)些,Profile 知道(dao)將消(xiao)息(xi)數據歸類到相應的類型 (gapDeviceInitDoneEvent_t)并(bing)處理。這(zhe)種(zhong)情況下,Profile 將生成密(mi)鑰存(cun)儲到 Flash 存(cun)儲器, 并(bing)在本地保存(cun)設備地址; 

(5) Profile 釋放消息并返回;

這是(shi)另外一(yi)個(ge)示例,如果 GATT 客戶端向共同體 GATT 服務(wu)器請求一(yi)個(ge) GATT 讀請求, 

它是(shi)可能存在的。

(1) 應用(yong)調用(yong) GATT 子程序 API 功能,連接(jie)通過,特性句柄(包含數據(ju)類型(xing)),它自(zi)己 

的(de)任務 ID 作為(wei)參數。 

(2) GATT 處理請求,并返回(hui) SUCCESS; 

(3) 在(zai)下次連(lian)接事(shi)件協議棧發送讀請(qing)求,遠(yuan)處的(de)設備接收到讀請(qing)求,協議棧發送一個包含 讀響應(ying)的(de) OSAL 消息給應(ying)用,消息包括頭(tou)事(shi)件值為 GATT_MSG_EVENT,操作碼為 ATT_READ_RSP; 

(4) 應用任(ren)務(wu)接收(shou)到 SYS_EVENT_MSG 事件,表示它是(shi)一個消(xiao)息(xi),Profile 接收(shou)到這個消(xiao) 息(xi)并(bing)查看消(xiao)息(xi)頭(tou)和操作碼。基于這些(xie),Profile 知道將(jiang)消(xiao)息(xi)歸類到相應的(de)類型(attReadRsp_t), 檢(jian)索在讀響(xiang)應中接收(shou)的(de)數(shu)據。 

(5) Profile 釋放(fang)消(xiao)息并返回; 

 GATT 的(de) Profile 層次結(jie)構(gou) 

 為了實現用戶的(de)應(ying)用,profile 通常有一(yi)個或者多個“Services”組成。

一個 service 或許包(bao)(bao)含某個特(te)(te)征(zheng)值“characteristic values”,(例(li)如,在一個溫度(du)采(cai)集設備 中(zhong),通常會包(bao)(bao)含一個溫度(du)的特(te)(te)征(zheng)值) 每一個特(te)(te)征(zheng)值必須有占用一個特(te)(te)征(zheng)申明結構(gou),其(qi)中(zhong)包(bao)(bao)括他的其(qi)他特(te)(te)性,它(ta)是服務端(duan)和(he)客 戶端(duan)共享(xiang)的讀寫空間

這個特征值可以(yi)包含一個可選的(de)描述(shu)(descriptor 字(zi)串(chuan)),來只是這個特征值的(de)含義(yi)。 

上一篇:fork函數的小誤區

下一篇:BLE 數據接發流程

熱點文章推薦
華(hua)清學員(yuan)就業(ye)榜單
高(gao)薪(xin)學員經驗分享
熱點新聞推(tui)薦
前臺(tai)專線:010-82525158 企業培(pei)訓洽談(tan)專線(xian):010-82525379 院校合作(zuo)洽談(tan)專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部