日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CC254x--BLE

發布時間:2023/12/9 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CC254x--BLE 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

BLE協議棧

BLE體系結構,著重了解GAP和GATT。


  • PHY物理層在2.4GHz的ISM頻段中跳頻識別。
  • LL連接層:控制設備的狀態。設備可能有5中狀態:就緒standby,廣播advertising,搜索scanning,初始化initiating和連接connected。廣播者傳播數據,使得瀏覽者可以接收到。initiator就是一個對廣播者回復連接請求的設備。如果廣播者接受請求,廣播者和initiator初始者就會進入connected連接狀態。一個處于連接狀態的設備會有一個角色:master和slave。初始化這個連接的為master,接受這個連接請求的為slave
  • ?HCI層為host和controller之間通過一個標準接口進行通信提供了一些方法。這一層可以通過一個軟件API或者是硬件接口如UART,SPI和USB。
  • ?L2CAP為上層數據提供封裝服務。
  • ?SM:定義了建立連接和KEY的方法。
  • GAP:直接與profile和app進行接觸,解決設備的發現和連接相關的服務,此外GAP也會初始化安全相關的特色。
  • ATT:允許一個設備去顯示一些數據,對于其他設備稱之為“Attribute屬性”,在ATT中,那些顯示這些屬性的設備被稱為server,同等的另一個設備稱為clientLL層的狀態master和slave和ATT層的這兩個狀態無關
  • GATT層:是一個服務框架定義了對ATT應用的子程序。GATT指定了profile的結構。在BLE中,由profile或者是服務所使用的所有類型的數據都稱為characteristic。發生于兩個設備間通過BLE連接進行交換的數據都需經過GATT子程序處理。因此,app和profile會直接使用GATT。

要開發app,真正接觸的是GAP和GATT,GAP用來建立連接,GATT用來數據傳送

GAP

一個從設備只能鏈接一個主設備。


低功耗藍牙設備定義了四類GAP角色:

  • 廣播者
  • 觀察者
  • 外圍設備
  • 中央設備

GATT


建立連接的流程



應用數據傳輸流程



PROFILE、SERVICE、CHARACTERISTIC、UUID

藍牙BLE有自己的協議標準,一個產品可以有很多服務service,一個藍牙服務service包括一個或者多個characteristics,而每個characteristics都包含對應UUID、屬性描述(如可讀、可寫、長度等)、屬性值value、屬性配置(代表訂閱信息)等等。

每一個屬性都有一個地址——句柄。為了簡化后續的數據處理,一般framework會設置一個handle來對應一個characteristics。

服務是一種或多種特性的組合;特性則由一種或多種屬性組成。

特征字主要包含writereadnotifyindicate等主要通信方式。

    • 對于藍牙外設的write特征字,主設備(如手機)可以進行寫操作;
    • 對于read,主設備則可以從中讀取信息;
    • write和read對于藍牙外設來說,其屬于被動控制,即藍牙外設被動接受主控制的通信控制。
    • 而notify和indicate則是藍牙外設主動向主設備傳輸數據,前提是主設備要預先訂閱對應的characteristics的信息更新。Notify數據后,主設備不需要應答響應,而indicate則需要應答響應。


屬性

屬性概述

2字節

2或6字節

0~512字節

屬性句柄

屬性類型

屬性值


屬性句柄

有效的句柄范圍從0x0001~0xFFFF。0x0000為無效句柄,不能用于尋址屬性。你可以根據自己在軟件硬件或嵌入式方面的背景,把句柄相應地想象為內存地址、端口號、屬性值對應的硬件寄存器地址。

屬性類型

可以被公開的數據有許許多多的類型:溫度、壓強、體積、距離、功率、時間、充電狀態、開關狀態、狀態機的狀態等。所公開的數據的種類稱作屬性類型。為了區分如此多的數據類型,一串128位的數字被用來標識屬性的類型。這個唯一的標識碼就叫做通用唯一識別碼(UUID)。

藍牙UUID基數如下:

00000000-0000-1000-8000-00805F9B34FB

0x1800 ~ 0x26FF 用于服務類通用唯一識別碼

0x2700 ~ 0x27FF 用于標識計量單位

0x2800 ~ 0x28FF 用于區分屬性類型

0x2900 ~ 0x29FF 用于特征描述

0x2A00 ~ 0x7FFF 用于區分特性類型

屬性值

屬性值用于標識設備公開的狀態信息。屬性值的長度可以從0字節到最長512字節,但某些類型的屬性值的長度則是固定的。屬性值對屬性協議來說并不重要,但它對于上層,包括通用屬性規范和其之上的服務于規范來說有著相當重要的意義。

最小的屬性數據庫必須包含以下的六種屬性:《GAP服務》的《首要服務》、《設備名》的《特性》、《設備名》的值、《外觀》的《特性》、《外觀》的值、《GATT服務》的《首要服務》。但這樣的數據庫沒能公開足夠的狀態,故沒有實用價值。

綁定

如果客戶端想與其他設備建立長期通信關系,首先應連接該設備,找到一些能用的服務,然后啟動一個安全連接。這些安全連接先是認證該設備為正確的設備,再對連接進行加密以確保機密。最后,設備交換一些配對信息——這是關鍵的一部:如果客戶端存儲了該配對信息,就與對端設備完成了“綁定”。

綁定的重要性在于,當客戶端重新連接到該設備時,并不需要再次認證身份或交換配對信息,而只需要將部分的綁定信息用于連接加密。于是設備之間便建立了一個認證的、保密的數據連接。

綁定也提供了一些其他好處。設備綁定之后,服務器將為此客戶端保存其配置數據。這種模式將使重連設備立刻收到通知,而不需要重新配置服務器。

這種方法的另一個主要優勢是,客戶端可以記住外圍設備的屬性句柄燈信息。也就是說,一旦中央設備了解了外圍設備的服務集,并且完成了配置,就能記住相關的屬性句柄。當中央設備重新連接到外圍設備,它可以讀取和寫入這些屬性句柄,而不用再做一次服務掃描。這減少了從連接到使用設備之間所需要的時間。

應注意,服務變更只與邦定的設備密切相關。如果中央設備沒有和外圍設備綁定,則不能緩存屬性句柄,也收不到任何服務變更的通知。換言之,對兩個未綁定設備來說,客戶端必須在每次連接時刷新服務器對的整個服務列表和特性列表。

總結

以上是生活随笔為你收集整理的CC254x--BLE的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。