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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

蓝牙基础知识整理

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

1、背景

上一次藍牙過的比較匆忙,這次下定決心要把藍牙的基礎知識和應用搞清楚。

1.1 參考資料

藍牙版本發展概述?http://blog.sina.com.cn/s/blog_d2db96110102xnj6.html

深入淺出低功耗藍牙(BLE)協議棧?https://blog.csdn.net/shunfa888/article/details/80140475

BLE 協議系列之(一) 藍牙介紹?https://blog.csdn.net/zwc1725/article/details/80703326

2、藍牙基礎知識

藍牙協議也是通信協議的一種,目的就是把復雜的問題簡單化,任何通信協議都具有層次性,特點如下:

1、從下到上分層,通過層層封裝,每一層只需要關心特定的、獨立的功能,易于實現和維護

2、在通信實體內部,下層向上層提供服務,上層是下層的用戶。

3、在通信實體之間,協議僅針對每一層。實體間的通信,就像每一層之間的通信一樣,這樣有利于交流、理解、標準化。

當前的藍牙協議包括BR/EDR(Basic Rate/Enhanced Data Rate)、AMP(Alternate MAC/PHYs)、LE(Low Energy)三種技術。

2.1當前藍牙技術特點---藍牙協議版本看

藍牙歷史我不追究,就從V4.0版本藍牙開始。藍牙4.0版本包括3個子規范,即傳統藍牙技術、高速藍牙和低功耗藍牙技術。

目前移動設備上適用的藍牙大多是V4.0以上,經典V4.0是傳統的3.0藍牙升級而成,向下兼容。而BLE4.0 是新的分支,不向下兼容。經典藍牙模塊,一般用于數量比較大的傳輸:如語音、音樂等較高數據量傳輸。經典藍牙模塊可細分為傳統藍牙模塊和高速藍牙模塊。低功耗藍牙模塊是指支持藍牙協議4.0或更高的模塊,特點是成本和功耗的降低,應用于實時性要求比較高的產品中。

藍牙4.0有諸如低成本、跨廠商互操作性、3毫秒低延時、100米以上超長距離、AES-128加密等特點外,有效傳輸距離有所提升。

藍牙4.0 主打的是省電,藍牙V4.1主打的是IOT(物聯網)。

藍牙V4.1 以“internet of things”為目標對V4.0進行軟件升級,在連接性進行提升(在硬件層面V4.0無需任何改動即可使用V4.1)。

表現在:1、V4.1標準下藍牙設備可以同時作為發射方(bt smart,v4.0上貼著的)和接收方(bt smart Ready),并且可以連接到多個設備上。 (主從一體,如智能手環作為主 和防丟器連接,同時也可以作為從 和智能手機相連)

2、長期睡眠下的自動喚醒功能(離開則斷開,回來則直接連上); 3、通過IPV6建立網絡連接???? -----即藍牙芯片設備可以取得互聯網上的唯一標記,與其他的聯網設備進行通信,即藍牙V4.1連上可上網的設備后,就可以直接利用IPV6連接網絡了,實現和WIFI模塊相同的功能,但在兼容性上還在做改進,加油吧,騷年。

藍牙V4.2改善了數據傳輸速度和隱私保護程度,并接入了該設備將可直接通過IPv6和6LoWPAN接入互聯網。 速度提高2.5,數據包容量相當于之前的10倍。低功耗從260kbps---》650Kbps,全功耗仍為2.1Mbps。新標準為固件升級提供了支持

V4.1 和V4.2都在規格書上添加對無線共存項的測試,因此在4G共存上確保與其的共存性。

當前藍牙協議包括BR/EDR、AMP、LE三種技術。

2.2藍牙模塊分類標準

1、按支持的藍牙協議分

單模藍牙模塊:支持藍牙某一種協議的模塊;

雙模藍牙模塊:同時支持經典藍牙(BT)和低功耗藍牙(BLE)協議的模塊。

2、按應用分

藍牙數據模塊:一般多使用BLE低功耗藍牙模塊

藍牙音頻模塊:音頻需要大碼流的數據傳輸更適合使用BT經典藍牙模塊。

低功耗藍牙和傳統藍牙實際上有很大的不同,低功耗藍牙是nokia的wibree標準上發展起來的。在功耗上,傳統藍牙有3個級別的功耗,class1、class2、class3分別支持100m、10m、1m的傳輸距離;低功耗藍牙沒有功耗級別,一般發送功率在7dbm。

3 低功耗藍牙協議棧

3.1 協議棧架構

BLE工作在免許可的2.4G ISM射頻端,它一開始就設計為高低功耗無線技術。

BLE協議可分為2大部分:BLE?Application BLE?Core;而BlueTooth core有包括BLE controller BLE Host 2部分。

BLE Core 包括Controller 到Host的L2CAP層,以及相關的核心profile.

BlueTooth Application 包括各種各樣的profile(規范),如HOGP、A2DP、HFP、OOP等。

?

上圖為BLE協議棧整體架構(application+core),要想實現一個BLE應用,首先需要一個支持BLE射頻的芯片,然后還需要提供一個與此芯片配套的BLE協議棧,最后再協議棧上開發自己的應用。因此BLE協議棧是連接芯片和應用的橋梁,是實現整個 BLE應用的關鍵。

圖上的BlueTooth Core 和BlueTooth Application? Host Controller,都是指"邏輯實體"。所謂“邏輯實體”,需要和日常生活中的"物理實體"區分開。如一塊藍牙芯片、主控CPU,就是指物理實體。而藍牙協議所描述的這些“邏輯實體”,不一定會和物理實體一一對應。如在實際應用中,host和Bluetooth Application可能會位于同一物理實體中(主控CPU),而Controller單獨位于另一個物理實體中(藍牙芯片)。

藍牙協議規定了兩個層次的協議,分別為藍牙核心協議和(Buletooth Core)藍牙應用層協議(Bluetooth Application).藍牙核心協議關注對藍牙核心技術的描述和規范,它只提供基礎的機制,并不關心如何使用這些機制;應用層協議,是在藍牙核心協議的基礎上,根據具體的應用需求,定義出各種各種的策略,如FTP,文件傳輸,局域網等。

Controller負責定義RF、Baseband等偏硬件的規范,并在這之上抽象出用于通信的邏輯鏈路(Logical Link);Host負責在邏輯鏈路的基礎上,進行更為友好的封裝,這樣就可以屏蔽掉藍牙技術的細節,讓Bluetooth Application更為方便的使用。

在一個系統中,Host只有一個,但Controller可以是一個,或多個。如:單獨的LE Controller,單獨的BR/EDR Controller,單獨的LE+BR/EDR Controller;在單獨的BR/EDR? Controller或LE+BR/EDR Controller基礎上,增加一個或多個AMP Controller。

3.2 通信實體內從下到上各層分析

3.2.1 物理層PHY

任何一個通信系統,首先要確定的是通信介質(通信通道,Physical Channel)

Physical Layer(PHY)? ----PHY層用來指定BLE所用的無線頻段、調制解調方式和方法。

具體描述:由于BLE屬于無線通信,則其通信介質是一定頻率范圍下的頻帶資源(Frequency Band);BLE的市場定位是個體和民用,因此使用免費的ISM頻段(頻率范圍是2.400~2.4835GHz);為了同時支持多個設備,將整個頻帶分為40份,每份的帶寬為2MHz,稱為RF Channel。--------BLE的物理通道? ?頻點為f=2402+K*2 MHz? k=0~39,帶寬為2MHz的40個RF Channel。

除了物理通道之外,Physical Layer還需要定義RF收發雙方的而一些其他特性:

RF發射相關的特性(Transmitter Characteristics),包括發射功率(Transmission power、調制方式(Modulation),高斯頻移鍵控(Gaussian Frequency Shift Keying ,GFSK)、Spurious Emissions、Radio Frequency Tolerance等等。(不影響本文后續的討論,不用深究);

RF接收相關的特性(Receiver Characteristics),包括接收靈敏度等。

3.2.2、Link Layer 鏈路層

主要功能:在Physical Channel(即40個RF Channel)上可靠收發數據。需要控制RF收發相關的參數以及解決Physical Channel的共享問題,還需要(對于兩個通信實體),有一條獨享的傳輸通道(即logical Link,邏輯鏈路)。另外,由于Physical Channel是不可靠的,Link Layer需要提供校驗、重傳等機制,確保數據傳輸的可靠性。

解決問題1:Physical? Channel的共享問題

1、數據量比較少、發送不頻繁、對時延不很敏感的場景

----Link Layer采用 廣播通信,從40個RF Channel中選取3個,作為廣播通道(advertising? channel);即所有參與者,共享同一個邏輯傳輸通道(廣播通道)

2、數據量大、發送頻率高、對時延較敏感的場景

-----從Link Layer剩余的37個RF Channel中,選取一個,為這種場景里面的通信雙方建立獨立的通道(data channel)------這是連接的過程。

----注意,為了增加對4G(2.4G 頻段)的抗干擾能力,采用跳頻技術(Hopping)。即在多個channel之間隨機但有規律的切換。

解決問題2:如何建立獨享的邏輯鏈路----狀態和角色定義

BLE協議在Link Layer抽象出5中狀態:

Standby Stae、Advertising State、Scanning State、Initiating State、Connection State。 同一時刻設備只能處于一種狀態。

?注意雙向箭頭和單向箭頭

Link Layer 狀態機變化圖

1、Standby狀態是初始狀態,即不發送數據,也不接受數據。根據上層實體的CMD(如位于Host軟件中GAP),可由其他任何一種狀態進入,也可以切換至出Connection狀態外的任何一種狀態。

2、Advertising狀態是可以通過廣播通道發送數據的狀態,有Standby狀態進入。Advertiser廣播的數據可以由處于Scanning或者Initiating狀態的實體接收。上層實體可通過命令將Advertising狀態切換回Standby狀態。另外,連接成功后,可切換至Connection狀態。

3、Scanning狀態是可以通過廣播通道接收數據的狀態,由Standby狀態進入。上層實體可通過命令將Scanning狀態切換回Standby狀態。

4、Initiating狀態和Scanning狀態類似,不過是一種特殊的接受狀態,由Standby狀態進入,只能接受Adverstiser廣播的connectable的數據,并在接收到數據后,發送連接請求,以便和Advertiser建立連接。當連接成功后,Initiater和對應的Adverstiser都會切換至Connection狀態,

5、Connection狀態是和某個實體建立了單獨通道的裝填,在通道建立之后,由Initiating或Advertising自動切換而來。通道斷開后,會重新回到Standby狀態。

在通道建立后,處于Connection狀態的雙方,有兩種角色Master和Slave。

對于Initiater方稱作Master;? Advertiser方為Slave。? ?主機從機兩種角色。

解決問題3:可靠性---空中點對點通信協議

1、在某一狀態下,和其他實體對應狀態之間的數據交換機制;2、根據上層實體的指令,以及當前的實際情況,負責狀態間切換。---------由空中接口協議(Air Interface Protocol)處理。

兩種類型的Physical Channel(advertising channel 和data channel)統一使用一種packet format。

Preamble(1 octet)? ?Access Address(4 octets) PDU(2~257 octets)? CRC(3 octets)? ?octets 8位字節

數據報格式特別說明:

注1:

Access Address 接入地址: 用于是被是數據包還是廣播包

PDU,BLE在Link Layer的PDU長度最大為257 octets

Link Layer 總長度在9~264bytes(1+8 ~257+8)?????

注2:

數據鏈路層link Layer 有5種狀態,每種狀態下所傳輸的功能不盡相同,因此,定義了多種PDU類型。

以白名單(White List)的形式定義數據鏈路層的數據過濾機制-------針對廣播通道

數據控制協議(Link Layer Control),用于管理、控制兩個Link Layer實體間所建立的這個Connection。主要功能:

1、更新Connection相關的參數

2、更新該鏈接所使用的調頻圖譜(即使用哪些Physical Channels)

3、執行鏈路加密(Encryption)有關的過程。

3.2.3 HCI

定義Host和Controller(通常是兩顆IC,ESP32可以在一顆上)之間的通信協議,可基于Uart、USB和軟件模擬。

3.2.4?L2CAP Protocol

?

3.2.5?ATT Protocol

BLE的初衷是用于物聯網,物聯網中最重要、最廣泛的應用是信息采集。基于信息采集的需求,BLE抽象出一個協議:Attribute protocol。這個協議將這些信息以"Atributte(屬性)"的形式抽象出來,并提供一些方法,供遠端設備remote devece 讀取、修改這些屬性的值(Attribute Value).

ATT(Attribute Protocol) 屬性層是GATT和GAP的基礎,它定義了BLE協議棧上層的數據結構和組織方式。

屬性概念是ATT層的核心,定義了屬性的內容,規定了訪問屬性的方法和權限。----類似于編程的數據結構

屬性包括三種類型:服務項、特征值和描述符。三者之間存在樹狀包含關系,服務項包含一個或多個特征值,特征值包含一個或多個描述符,多個服務項組織在一起,構成屬性規范(Attribute Profile)。

對于常用的屬性規范,比如體重計、心率計,BLE協議做了具體定義。

只要BLE主從設備均遵守某個Profile來進行設計,那么兩者就能優雅的通信。

GATT Profile 用ATT協議在設備間來傳輸命令、請求、應答、指示、通知和確認消息。這些數據存于Attibute? Protocol PDUS。

Opcode :操作碼---特定命令、請求、應答、指示、通知、確認的操作碼和用于身份驗證的標志。

Attribute Parameter:特定命令或請求的數據, 或者是應答、通知和指示的數據。

Authentication signature: 可選的。

在服務器server設備上: 屬性協議命令和請求以屬性形式存儲

屬性有四部分組成:屬性句柄、屬性類型、屬性值、屬性權限。

2.3.2.4.1? 屬性數據結構

屬性數據結構包含:句柄、類型、屬性值、權限。下圖是邏輯屬性表示。

屬性句柄(Attribute Handle)就是一個對應特定屬性的一個索引。它是一個2字節的十六進制碼,起始于0x0001,在系統初始化時候,各個屬性的句柄遞增(但不一定加一),最大不超過0xFFFF。與編程中的句柄的概念類似,就是某個屬性值的查詢地址。

屬性類型(Attribute Type)是UUID,用于說明屬性值的類型。用以區分當前屬性是服務項或是特征值等。

屬性值(Attribute Value): 數據(由Attribute Type描述,由Attribute handle 索引)。

屬性權限(Attribute permissions):有Server使用決定給定的attribute是否允許寫或讀訪問。由GATT來確認。

?

?

3.2.6?GATT

~1 Role

GATT的角色有兩種:GATT server 和GATT client。客戶端和服務器:提供數據的設備稱為GATT服務器,訪問GATT服務器而獲得數據的設備稱為GATT客戶端

~2?profile 架構

GATTProfile 指定了pfofile data 交換的數據結構。這個結構定義基本元素(如services和characteristics)。所有元素都用Attibute表示。

上圖是GATT Profile的架構。一個profile包含一個或多個services。一個service包括多個characteristics 或其他service的應用(include)。每個characteristic包括值和其他可選的值的信息。在server設備中,service和characteristic和characteristic的組成(valus和descrptors)以Attributes存儲。

~2.1 Characteristic

Characteristic定義至少包括2個屬性,一個屬性用于聲明(characteristic declaration),另一個用于存放特征的值(characteristic value declaration)。另外可能還有特征描述符(characteristic descriptor declaration) 。上述的三種declaration都是包含在獨立的Attribute中。?characteristic declaration之后緊跟characteristic value declaration。而可選的所有characteristic descriptor declaration跟在characteristic value declaration之后。characteristic descriptor declarations之間的順序就那么不重要了。

可以把多個characteristic value declaration聚合在一起成為一個復合的Characteristic。

~2.1.1characteristic declaration 特征聲明

對于Characteristic declaration 特征聲明是一個屬性。

其Attribute Type 為0x2803----- UUID for <<Characteristic>>;? ?特征聲明的UUID類型

其Attribute Value為Characteristic Properties,Characteristic Value Attribute的句柄和Characteristic UUID。

其Attribute Permissions 需要是可讀的且無需身份驗證或授權。

注意:當服務器和客戶端建立信任關系時,特征聲明的Attribute Value 不能改動。

一個service 可能有多個擁有相同Characteristic UUID的 特征聲明。

有必要對特征聲明的三個屬性值在細究一下。

Characteristic Properties---------決定了特征值如何使用、特征描述符如何訪問。如下表3.5所列,如果設置了對應的位,則表中UI對應描述會被允許。位或操作。

~2.1.2?characteristic value declaration 特征值

特征值是一個屬性,它包括特征的值。

其Attribute Type:16-bit BlueTooth UUID 或者是 128-bit的Characteristic UUID。

其Atrribute Vlaue: Characteristic 的值。

Attribute Permissions:有service指定,沒有指定時由spcecific實現。

~2.1.3characteristic descriptor declaration

這里面的內容比較多。

~2.1 Service

Service定義包括service描述(service declaration),也可能包括定義(definitions)和特征定義(Characteristic definitions)。

server設備上Service definitions按Attribute Handle的順序排列。

服務描述是一個Attribute。

Attribute Type屬性類型: 設置為0x2800——《Primary Service》或0x2801——《Secondary Service》.

Attribute Value:16bit的BlueTooth的UUID 或者 128bit 服務UUID。-------稱為服務UUID。客戶端必須同時支持16bit 和128bit 的UUID。一個客戶端可能可以忽略任何具有未知服務UUID的服務定義。一個未知的服務UUID是服務不支持的UUID。

Attribute Permission:必須是可讀的且無需身份驗證或授權。

當存在多個服務,服務定義中有16bit的藍牙UUID服務說明分在一組,128bi的UUID的服務說明分在另一組。

2.3.2.7?GAP-Generic Access Profile

該Profile保證不同的Bluetooth產品可以互相發現對方并建立連接。

GAP定義了藍牙設備如何發現和建立與其他設備的安全/不安全連接。它出一些一般的業務(如詢問、命名和搜索)和一些安全性問題(如擔保)?同時還處理一些有關連接的業務(如鏈路建立、信道和連接建立)。

GAP規定的是一些一般性的運行任務。因此,它具有強制性,并作為所有其它藍牙應用規范的基礎。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的蓝牙基础知识整理的全部內容,希望文章能夠幫你解決所遇到的問題。

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