1. 程式人生 > >BlueTooth 藍牙基礎知識進階——Packet解析

BlueTooth 藍牙基礎知識進階——Packet解析

問題 data ice str 三種 lan lib 總結 之前

包的格式解析

在分析其它問題之前,我們需要了解在空氣中傳播的數據包的格式,這樣才能深刻理解我們能通過格式中的各個部分做些什麽。

Q1PACKET的基本格式是什麽樣子的

之前我們提到藍牙傳輸有兩種rate,不同的rate其格式是不同的,我們分別來看一下。

Basic Rate

Basic Rate的包格式如下圖6-1所示:

技術分享圖片

6-1 Basic Ratepacket通用格式

從圖中可以看到基本可以分為三個部分:

ACCESS CODE:長度是68或者72bit,當HEADER域沒有的話就是68,否則就是正常的72bit。他是用來同步和DC偏移補償的。更通俗地來講他是同一個

piconet上的標誌,也就是一個piconet上(即同一個物理通道上)傳輸的packetACCESS CODE是相同的。

HEADER:包含用於鏈路控制的信息。

PAYLOAD:就是信息內容,他的大小最大是2745bit

總得來說,一個Basic Ratepacket可以由上面三者的以下組合組成:

1)ACCESS CODE;2)ACCESS COED + HEADER; 3)ACCESS CODE + HEADER + PAYLOAD;

Enhanced Data Rate

Enhanced Data Rate的包格式如下圖6-2所示:

技術分享圖片

6-2 EnhancedData Rate

的包格式

這裏的ACCESS CODEHEADER是和Basic Rate一樣的。事實上,我們可以理解為後面的都是payload的部分,只不過在payload部分,我們強制使用了一些頭和尾的內容。

Guard保護間隔,它要來表示HEADER的結尾到SYNC開始之間的時間。範圍是4.75μs5.25μs

Sync同步序列,DPSK使用的同步序列。

Enhanced data rate payload對應的負載。

Trailerpayload的尾,其實他們都是0,對π/4 DQPSK調制而言是0000,對8DPSK的調制而言是000,000.

其實對於同步的數據而言,在payload

的最後還有一個16bitCRC校驗,大家知道就可以了。

Q2Header域都有哪些link控制的信息啊

Header域是很重要的,它包含了很多鏈路控制的信息,不過總得來說,可以總結為6個部分,如下圖6-3

技術分享圖片

6-3 Header域的結構示意圖

各個部分的含義如下:

LT_ADDR:3bit的邏輯傳輸地址,他是用來表示master是把這個包發給哪一個slave的。或者這個包是從哪個slave發送過來的。

TYPE:表示packet的類型。。

FLOW:是流控位,只有在ACL邏輯傳輸的時候才會使用,當RX buffer滿的時候,就會把這個位置0,表示stop。當buffer又空了之後,就會把這個位置為1告訴TX可以繼續發送了。需要註意的是ACL-C以及SCO,ESCO是不能使用這個位的。

ARQN:是用來告知tx放,payload是成功傳輸的,就是通過了CRC校驗。

SEQN:就是數據流的sequence number

HEC:就是前向糾錯。

Q3:上文提到的packet類型能否簡單介紹一下

我們會把這些packet分為幾個部分來簡單介紹,首先是5common packet type

ID Packet這個packet就是上文提到的只有ACCESSCODE那一種packet。我們之後提到的inquiry msg就是一個ID Packet

NULL Packet這個packet只有ACCESS CODEHEADER。一般來說他是用來返回鏈路信息的,比如什麽rx buffer狀態,或者ARQN之類的。他不需要對端的確認。

POLL PacketNULL Packet是類似的,比較大的差別就在於它需要對端回確認信息。需要註意的是不能會POLL Packet,否則就沒玩沒了。

FHS Packet這個包的特別之處在於他包含了發送的clk信息和address信息,在page等開始的同步過程中起到了很大的作用。

DM1 Packet:這個packet的特別之處在於所有邏輯鏈路的控制信息都需要允許這種包,不過他也能傳輸data,不過僅限於ACL鏈路中,從一定程度上來說,可以認為他是一種ACLpacket

接著我們來看4種類型的SCOPacket。這四種類型總得來說分為兩大類,分別是DVHVpacket。他們的差別在於:HV是沒有CRC並且不重傳,DVdata域有CRC,但是在同步數據域沒有,data域的數據應當重傳

HV Packet有可以分為HV1HV2HV3三種類型,HV1HV2HV3就是1/3,2/3/,以及沒有FEC糾錯,他們均沒有crc,長度是固定的30byte,所以HV1就是10byte的有效數據,HV2就是20byte的有效數據,HV3就全部都是有效數據

DV packet是由10bytedata150bitvoice域組成,voice域沒有FEC糾錯,data域是1~10byte長度加上16bitcrc,他們都是2/3FEC。所以就是96/3*2,就是144bitVoice域不能重傳,data域是有校驗的,所以可以重傳。所示沒有ack,也是需要重傳的

下面我們來看一下7eSCOpacket類型。這七種根據BasicRateEnhanced Data Rate有可以分為兩個部分,對Basic Rate而言,有以下三種packet的類型:EV3EV4EV5

EV31~30byte,加上16bitcrc,無FEC

EV41~120byte,加上16bit crc,然後是2/3FEC

EV51~180byte加上16bitcrc,無FEC

Enhanced Data Rate而言就是還有四種packet會被使用:

2-EV3,2-EV5和上面EV3EV5的差別在於,使用π/4DQPSK進行調制。

3-EV3,3-EV5和上面EV3EV5的差別在於,使用8DPSK進行調制。

最後我們看一下ACL上傳輸的packet類型,同樣可以分為BasicRateEnhanced Data Rate兩個部分。

Basic Rate有以下幾種類型的packet

DM1就是1~18byte,加16bitcrc,然後又2/3FEC

DH1:DH1相比DM1而言,沒有FEC,所以長度也可以長一點

DM3:2byte123byte的長度,加16bitcrc,然後有2/3FEC

DH3DM3類似,就是沒有FEC糾錯

DM52~226byte16bitcrc校驗,信息價crc校驗有一個2/3FEC糾錯

DH5DM5類似,但是沒有FEC的糾錯

AUX1就是沒有CRC校驗的DH1

Enhanced Data Rate而言,又增加了幾個類型,分別是2-DH1,2-DH3,2-DH5以及3-DH1,3-DH33-DH5,這個也是調制的差別,能理解吧,哈哈~~

Q4:這麽多的packet類型,4bitTYPE位是如何來全部表示的啊

其實很簡單啦,就是和邏輯傳輸的類型一起就可以判斷了,具體的值見下圖6-4,大家一看就了解了哦。

技術分享圖片

6-4 packet的類型和type域值的對應關系表

若您覺得該文章對您有幫助,請直接按頂,哈哈~~

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

BlueTooth 藍牙基礎知識進階——Packet解析