【BLE】TI CC2640R2F SDK结构以及一些概念解析
一、概述
CC2640R2F作為BLE單SOC解決方案, TI的SDK將工程分為應用程序(APP)和協議棧(Stack)兩部分
二、協議棧
協議棧包括:主機(Host)和控制器(Controller),如下圖所示
主機通常是一個軟件棧,管理兩臺或多臺設備間如何通信以及如何利用無線電同時提供幾種不同的服務。
控制器通常是一個物理設備,它能夠發送和接收無線電信號,并將這些信號翻譯成攜帶信息的數據包。
Controller(控制器)
1、PHY(物理層Physical Layer)
采用2.4GHz無線電,完成電磁的傳輸和接收工作,無線電波通??梢栽诮o定的某個頻段內通過改變幅度、頻率或相位攜帶信息,在低功耗藍牙中,采用一種稱為高斯頻移鍵控(GFSK)的調制方式改變無線電波的頻率,傳輸0或1的信息。
2、LL(鏈路層Link Layer)
負責發廣播、掃描、建立連接以及確保數據包按照正確的方式組織、正確地計算檢驗值和加密序列等,簡單來說就是負責兩個BLE設備之間的發現、連接以及數據交互,并將數據按照一定的格式打包成報文再通過物理層進行操作。為實現廣播、連接以及數據的傳輸,LL信道(簡單理解為通信頻道)分為廣播信道(3個)和數據信道(37個)總計40個信道。其中廣播信道固定為37、38、39,其余的均為數據信道。
3、HCI(主機-控制器接口Host-Controller Interface)
顧名思義,HCI提供主機和控制器的通信接口,它允許主機將命令和數據發送到控制器,并且允許控制器將事件和數據發送到主機。
藍牙規范定義了4種物理接口:UART、3線UART、USB、SDIO,應用于系統中主機和控制器分別位于2個芯片上的情況。對于CC2640R2F這種單芯片設備,HCI體現為邏輯接口。
Host(主機)
1、L2CAP(邏輯鏈路控制和適配協議)
低功耗藍牙的復用層,具有協議復用、分段重組、服務質量quality of service信息的交換、組抽象的功能。例如連接參數更新請求和響應就在這里實現。其定義了2個基本概念:L2CAP信道和L2CAP信令。對于BLE,有3條固定的信道
2、SM(安全管理器 Security Manager)
安全管理器定義了一個簡單的配對和密鑰分發協議,配對是一個獲取對方設備信任的過程,通常采取認證的方式實現。
3、ATT(屬性協議Attribute Protocol)
它由6種基本操作構成:請求、響應、命令、指示、確認、通知。定義了客戶端與服務端如何相互發送符合標準的消息。
4、GATT(通用屬性規范Generic Attribute Profile)
定義了客戶端與服務端如何發現與使用服務、特性與描述符的標準方法。分為3種基本類型:發現規程、客戶端發起規程、服務端發起規程。另外的交換MTU規程屬于屬性協議中的MTU交換請求。
發現規程:
4種需要發現的基本對象:首要服務、次要服務以及該服務實例所公開的特性和描述符。
發現服務:
有3種發現服務的途徑:發現所有首要服務、按服務UUID發現首要服務、查找包含服務。
特性發現:
在服務被發現后,便可以發現每一個服務的特性,要獲取完整的特性,需要發現特性和特性描述符。
客戶端發起規程:
對于特性,客戶端可執行:讀取特性值、寫入特性值、讀取特性描述符、寫入特性描述符。
服務端發起規程:
有2種GATT規程是由服務端發起的:通知(Notify)、指示(Indicate),其中
通知是服務端任何時刻都可以發送給客戶端,而不需要客戶端的確認便可以發送下一條消息。
指示是服務端任何時刻都可以發送給客戶端,在進行下一次發送前服務端必須已經確認上一條消息被客戶端接收到了。
5、GAP(通用訪問規范Generic Access Profile)
定義了設備如何彼此發現、建立連接以及如何實現綁定,同時描述了設備如何成為廣播者和觀察者,并且實現無需連接的數據傳輸。
BLE定義了4類GAP角色:廣播者、觀察者、外圍設備、中央設備。
三、應用程序
應用程序包括:用戶的application、GAP角色設定、profile規范配置文件。
在這一層,我們根據實際需求將芯片設置為對應的角色(外圍設備、中央設備),這一過程在GAP實現。
Profile包含了service(服務) 、characteristic(特性)
1、profile
profile可以理解為一種規范,一個標準的通信協議,它通常存在于從機中。藍牙組織規定了一些標準的profile,例如 HID OVER GATT ,防丟器 ,心率計等。每個profile中會包含多個service,每個service代表從機的一種能力。
2、service
service可以理解為一個服務,在ble從機中,通過有多個服務,例如電量信息服務、系統信息服務等,每個service中又包含多個characteristic特征值。每個具體的characteristic特征值才是ble通信的主題。比如當前的電量是80%,所以會通過電量的characteristic特征值存在從機的profile里,這樣主機就可以通過這個characteristic來讀取80%這個數據
3、characteristic
characteristic特征值,ble主從機的通信均是通過characteristic來實現,可以理解為一個標簽,通過這個標簽可以獲取或者寫入想要的內容。
4、UUID
UUID,統一識別碼,我們剛才提到的service和characteristic,都需要一個唯一的uuid來標識。藍牙聯盟已經定義了許多標準的UUID,見博客,用戶也可以自行定義的UUID格式,那么便只能被自己所理解而無法被采用UUID標準的設備所理解(會顯示Unknow)
每個從機應用中都會有一個Profile的存在,Profile包含service, 用戶可自行添加service,每個service又包含了多個characteristic,主機和從機之間的通信,均是通過characteristic來實現,即通信數據都存放于characteristic中。
四 、ICall
SDK將工程劃分為2個工程(APP和Stack)進行管理,那么APP和Stack之間的通信便無法像常規API調用和全局變量方式進行消息傳遞,這時候便引入ICall(消息框架) 基于TI-RTOS提供服務(例如,同步線程、消息、事件)完成BLE協議棧和應用程序在兩個工程的消息交互,保證了應用程序和協議棧在統一的TI-RTOS環境中完成高效運行、相互通信和資源共享。
總結
以上是生活随笔為你收集整理的【BLE】TI CC2640R2F SDK结构以及一些概念解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【BLE】信号强度(RSSI)知识整理
- 下一篇: 【BLE】BLE中常用的UUID(标准)