chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

BLE 藍(lán)牙空中報文格式與解析(廣播包)

矜辰所致 ? 來源:矜辰所致 ? 2026-01-04 17:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

BLE 廣播包數(shù)據(jù)格式解析說明 ...... 矜辰所致

前言

報文格式 是 藍(lán)牙學(xué)習(xí)必備理論基礎(chǔ),本文來講一講藍(lán)牙廣播報文格式 以及 在 沁恒微藍(lán)牙芯片代碼中如何設(shè)置廣播報文 。

我是矜辰所致,全網(wǎng)同名,盡量用心寫好每一系列文章,不浮夸,不將就,認(rèn)真對待學(xué)知識的我們,矜辰所致,金石為開!

一、 廣播包格式

BLE 廣播報文(Advertising Packet)在空中的完整格式分 4 段,總共 47 字節(jié)(BLE 4.x/5.x 都一樣),用戶能改的只有中間 31 字節(jié) Payload(下圖淺綠色部分),其余由鏈路層自動拼好。

1.1 格式解析

我們先上一張整體的廣播包示意圖(后面會詳細(xì)分析):

在這里插入圖片描述

我們再給加上解釋說明:

在這里插入圖片描述

看完整體的格式包,我們再重點關(guān)注一下我們應(yīng)用時候可以修改的 Payload 部分, 這部分由若干「AD Structure」拼接而成,「AD Structure」是有一定格式的,我們在代碼中定義廣播包的時候就是要按照這種格式填寫我們想要的廣播數(shù)據(jù)。

「AD Structure」 格式如下:

Len(1 B) + Type(1 B) + Data(n B)

整包總長度 ≤ 31 B,不足補 0 ,如下圖:

在這里插入圖片描述

對于每個 「AD Structure」,我們重點要知道的是類型,AD Type(包括 0x01 ~ 0xFF 的全部定義)由 Bluetooth SIG(藍(lán)牙技術(shù)聯(lián)盟)統(tǒng)一分配和維護(hù),大家需要用什么可以網(wǎng)上查詢,這里放出部分常用 AD Type(保持更新):

AD TypeValue (Hex)描述
Flags0x01廣播出自己藍(lán)牙某些特性
Incomplete List of 16-bit Service UUIDs0x02只放部分 16-bit UUID,不完全
Complete List of 16-bit Service UUIDs0x03完全的16-bit UUID
Incomplete List of 32-bit Service UUIDs0x04部分 32-bit UUID
Complete List of 32-bit Service UUIDs0x05完全的32-bit UUID
Incomplete List of 128-bit Service UUIDs0x06部分 128-bit
Complete List of 128-bit Service UUIDs0x07完全 128-bit
Shortened Local Name0x08設(shè)備簡稱
Complete Local Name0x09設(shè)備全名
TX Power Level0x0A廣播出自己的射頻發(fā)射功率
Simple Pairing Option OOB Tags0x0D ~ 0x0F廣播出安全管理帶外標(biāo)簽(本文忽略)
Security Manager TK Value0x10廣播出帶外方式配對綁定時的 TK(本文忽略)
Security Manager OOB Flags0x11廣播出帶外特性標(biāo)志(本文忽略)
Slave Connection Interval Range0x12廣播出自己已希望的連接參數(shù)范圍
ServiceData0x16服務(wù)數(shù)據(jù)
Appearance0x19外觀類型(鼠標(biāo)/鍵盤/游戲柄等 HID 設(shè)備必放)
Advertising Interval0x1A廣播出當(dāng)前廣播間隔(單位 0.625 ms)
PB-ADV0x22Mesh 配網(wǎng)階段專用廣播承載
Manufacturer Specific Data0xFF廣播出廠商信息(用戶可以放自定義數(shù)據(jù))

根據(jù)上面表格,我們?nèi)绻朐O(shè)置短的 16bit UUID:

0x03 0x02 (UUID低8位) (UUID高8位)
0x03 0x02 0xE1 0xFF

如果想設(shè)置完整的名字:

(名字長度加+1) 0x09 (名字,自己取,自己算長度)
0x07 0x09 'S' 'i' 'm' 'p' 'l' 'e'

至此,廣播包格式詳細(xì)大家已經(jīng)完全清楚了。

1.2 藍(lán)牙廣播 和 掃描響應(yīng)

為什么講藍(lán)牙廣播要提到掃描響應(yīng)?

掃描響應(yīng)的報文格式和藍(lán)牙廣播一摸一樣。

我們先來說一下什么是掃描響應(yīng),廣播是我們從機(jī)主動發(fā)出的報文,掃描響應(yīng)是從機(jī)在收到主機(jī)掃描請求后 回復(fù)的響應(yīng)報文(前提是它支持回復(fù)掃描響應(yīng)),如下圖:

在這里插入圖片描述

掃描響應(yīng)有什么作用?

我們知道藍(lán)牙廣播包只有 31 個字節(jié)可以用戶自定義,如果我們廣播數(shù)據(jù)放不下,想放更多的數(shù)據(jù),我們可以寫在 掃描響應(yīng)里面,在手機(jī)掃描過程中,會一并作為廣播包加入解析(下面會有示例說明)。

二、 代碼示例

我們完成了理論說明,我們來看看在實際工程中廣播包的體現(xiàn),本次測試說明使用的是沁恒微藍(lán)牙芯片 CH585 ,示例為官方的從機(jī)示例 Peripheral 。

2.1 示例效果

我們只要關(guān)注的點就是在工程中peripheral.c 文件里面,有兩個數(shù)組就是廣播包的定義其中 scanRspData[] 對應(yīng)掃描響應(yīng),advertData[] 對應(yīng)廣播包,我們燒錄好程序觀察一下現(xiàn)象:

在這里插入圖片描述

通過圖片大家應(yīng)該可以很直觀的理解,然后配合上文說明的 「AD Structure」 格式解析,應(yīng)該都能明白怎么回事。

大家完全可以根據(jù)我們上文的說明,設(shè)置成自己想要的廣播數(shù)據(jù)。

2.2 設(shè)置廣播類型

這里需要額外說明的是,上面說到過不是所有的廣播包都支持掃描響應(yīng),在 CH58x 的 EVT 是使用:

GAPRole_SetParameter(GAPROLE_ADV_EVENT_TYPE, 1, &advEventType);

來設(shè)置廣播類型的,但是示例中的從機(jī)初始化環(huán)節(jié)并沒有設(shè)置GAPROLE_ADV_EVENT_TYPE 這個類型的操作,那是因為默認(rèn)就是GAP_ADTYPE_ADV_IND類型:

在這里插入圖片描述

我們可以繼續(xù)查看一下,官方有哪些類型的定義:

在這里插入圖片描述

上個表格就一目了然了:

宏定義(CH585 SDK)實際值廣播類型支持連接?支持掃描響應(yīng)?典型用途
GAP_ADTYPE_ADV_IND0x00通用廣播(可連接 / 非定向)??最常見,外設(shè)等人來連
GAP_ADTYPE_ADV_HDC_DIRECT_IND0x01高占空比定向廣播(可連接 / 定向)??快速重連,不響應(yīng)掃描
GAP_ADTYPE_ADV_SCAN_IND0x02可掃描廣播(不可連接 / 非定向)??只廣播數(shù)據(jù),允許掃描但不連
GAP_ADTYPE_ADV_NONCONN_IND0x03不可連接廣播(不可連接 / 非定向)??純 beacon,不連也不掃
GAP_ADTYPE_ADV_LDC_DIRECT_IND0x04低占空比定向廣播(可連接 / 定向)??功耗更低定向包,同樣不響應(yīng)掃描

說明:沁恒微代碼把「高占空比」和「低占空比」拆成兩條宏,其實都屬于同一個 PDU 類型 ADV_DIRECT_IND

所以我們想設(shè)置廣播類型,只要在初始化的時候,加上這兩句代碼:

uint8_t  advEventType = GAP_ADTYPE_ADV_IND;
GAPRole_SetParameter(GAPROLE_ADV_EVENT_TYPE, 1, &advEventType);

2.3 中文廣播包

設(shè)置中文廣播包,首先要知道中文的編碼,藍(lán)牙名稱采用的編碼格式位 UTF-8 格式的,一個漢字 UTF-8 編碼格式占用 3 個字節(jié)。 我們實際生產(chǎn)編碼的時候一般都需要使用工具。

我們測試的時候可以通過這個在線工具生成,網(wǎng)址如下:

https://www.jyshare.com/front-end/695/

在這里插入圖片描述

然后我們把這個編碼按照格式寫入廣播包定義數(shù)組里面,效果如下:

在這里插入圖片描述

三、 BLE分析儀抓包

廣播報文不復(fù)雜,我們這里也是簡單上一下藍(lán)牙分析儀抓包的效果:

在這里插入圖片描述
在這里插入圖片描述

通過 Adv PDU Type 我們就可以看出空中包的類型,簡單解釋一下:

SCAN_REQ

  • 主設(shè)備的掃描請求,主設(shè)備發(fā)送SCAN_REQ請求從機(jī)響應(yīng),用于獲取從設(shè)備信息(包括設(shè)備名字,或者服務(wù)UUID,及其它如廠家特定格式的信息等)

SCAN_RSP

  • 從設(shè)備的響應(yīng),作為廣播包的補充,從設(shè)備可以給主設(shè)備更多的廣播數(shù)據(jù),依賴此包補充數(shù)據(jù),比如說,有些設(shè)備在廣播包里面沒有設(shè)備名字,這個時候就可以把設(shè)備名字放在這個包里面發(fā)給主設(shè)備。

ADV_NONCONN_IND

  • 不可連接廣播包
  • 用于設(shè)備廣播自身信息(如名稱、服務(wù)類型等),
    數(shù)據(jù)格式:包含廣播地址(AdvA)和廣播數(shù)據(jù)(AdvData),其中AdvData由多個AD結(jié)構(gòu)組成,每個AD結(jié)構(gòu)包含長度、類型和數(shù)據(jù)字段。
    典型設(shè)備:iBeacon等需要周期廣播但無需連接的設(shè)備。

ADC_IND

  • 通用廣播包,可被任何設(shè)備接收并響應(yīng)。
    數(shù)據(jù)格式:與 ADV_NONCONN_IND 類似,但類型標(biāo)識符不同(報文類型低4位為0000,此處的類型就是在第一張圖中粉色部分 Header 中的 4 Bit TYPE 類型)。

AD_EXT_IND

  • 這個本不是我們本文討論的范圍,但是上圖抓包工具有了,就補充說明一下,AD_EXT_IND 是 BLE5 擴(kuò)展廣播的“索引包”,BLE5 Extended Advertising(輔助廣播)的“頭包”,只在 primary advertising PHY 上發(fā)送,用來告訴掃描者“后面還有一份更長的 payload 在 auxiliary packet 上”。
    BLE5 要發(fā) >31 B 的廣播或想用 2 M / coded PHY 時,鏈路層會先把 Header 做成 AD_EXT_IND,發(fā)到 37/38/39 信道上(1 M PHY)。

3.1 廣播報文類型

上面既然說到了 Adv PDU Type ,那就補充說明一下,這部分的表示是在協(xié)議種的這個部分:

在這里插入圖片描述

上個表格:

PDU Type名稱簡述
0b0000 (0)ADV_IND可連接、可掃描、非定向
0b0001 (1)ADV_DIRECT_IND可連接、定向、不掃描
0b0010 (2)ADV_NONCONN_IND不可連接、不掃描
0b0011 (3)SCAN_REQ掃描請求
0b0100 (4)SCAN_RSP掃描響應(yīng)
0b0101 (5)CONNECT_IND連接請求
0b0110 (6)ADV_SCAN_IND可掃描、不可連接
0b0111 (7)ADV_EXT_IND擴(kuò)展廣播頭包(指向 AUX 包
0b1000 (8)AUX_ADV_IND擴(kuò)展廣播真正負(fù)載

抓包工具怎么看:

在這里插入圖片描述

結(jié)語

本文我們說明了一下藍(lán)牙廣播包的報文格式,以及使用沁恒微藍(lán)牙芯片如何設(shè)置廣播包,通過本文學(xué)習(xí),相信大家能夠應(yīng)對所有廣播數(shù)據(jù)修改的問題 。

在藍(lán)牙設(shè)備連接上以后,連接過程數(shù)據(jù)交互也會有自己的協(xié)議包,這個在后期有機(jī)會也會寫一篇文中給大家分析。

好了,本文就到這里。謝謝大家!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 藍(lán)牙芯片
    +關(guān)注

    關(guān)注

    17

    文章

    449

    瀏覽量

    47816
  • 廣播
    +關(guān)注

    關(guān)注

    1

    文章

    324

    瀏覽量

    24026
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    13

    文章

    767

    瀏覽量

    66185
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    藍(lán)牙廣播

    ?藍(lán)牙廣播,全名藍(lán)牙廣播通道(channel)空中
    發(fā)表于 06-03 10:47

    一分鐘讀懂低功耗藍(lán)牙BLE)廣播數(shù)據(jù)

    一分鐘讀懂低功耗藍(lán)牙BLE)廣播數(shù)據(jù)低功耗藍(lán)牙 =》 BLE (Bluetooth Low
    發(fā)表于 08-25 14:08

    一分鐘讀懂低功耗藍(lán)牙BLE)廣播數(shù)據(jù)

    低功耗藍(lán)牙 =》 BLE (Bluetooth Low Energy)1. 怎樣抓取BLE廣播數(shù)據(jù)* 硬件:一個
    發(fā)表于 09-28 10:37

    一分鐘讀懂低功耗藍(lán)牙BLE)廣播數(shù)據(jù)

    低功耗藍(lán)牙 =》 BLE (Bluetooth Low Energy)1. 怎樣抓取BLE廣播數(shù)據(jù)* 硬件:一個
    發(fā)表于 10-10 11:41

    一分鐘讀懂低功耗藍(lán)牙BLE)廣播數(shù)據(jù)

    低功耗藍(lán)牙 =》 BLE (Bluetooth Low Energy)1. 怎樣抓取BLE廣播數(shù)據(jù)* 硬件:一個
    發(fā)表于 10-12 14:53

    1分鐘讀懂低功耗藍(lán)牙廣播數(shù)據(jù)

    低功耗藍(lán)牙 =》 BLE (Bluetooth Low Energy)1. 怎樣抓取BLE廣播數(shù)據(jù)* 硬件:一個
    發(fā)表于 10-27 10:36

    低功耗藍(lán)牙BLE廣播數(shù)據(jù)

    低功耗藍(lán)牙 =》 BLE (Bluetooth Low Energy)1. 怎樣抓取BLE廣播數(shù)據(jù)* 硬件:一個
    發(fā)表于 11-13 10:14

    榮小菜補鈣記第43期:報文合成與解析之字的合成與分解

    。假設(shè)報文格式如下圖所示,整個報文包包含4個字,每個bit組合均代表不同的涵義。下面我們根據(jù)該報文格式進(jìn)行報文合成和報文
    發(fā)表于 08-26 20:33

    CAN報文解析需要知道DBC的哪些信息排序方式

    CAN總線中報文數(shù)據(jù)讀取方法motorola編碼格式的CAN報文解析需要知道DBC的哪些信息排序方式讀取方式發(fā)送方式注motorola編碼格式
    發(fā)表于 01-12 07:28

    tcp報文格式詳解

    TCP(Transmission ControProtocol)傳輸控制協(xié)議是一種面向連接的、可靠的、基于字節(jié)流的傳輸層協(xié)議。TCP報文是TCP層傳輸?shù)臄?shù)據(jù)單元,也稱為報文段。
    發(fā)表于 12-08 11:11 ?3.4w次閱讀
    tcp<b class='flag-5'>報文格式</b>詳解

    怎樣抓取低功耗藍(lán)牙BLE4.2空中數(shù)據(jù)的詳細(xì)資料分析

    BLE = BTLE = Bluetooth Low Energy (低功耗藍(lán)牙) 1. 怎樣抓?。▊陕牐?b class='flag-5'>BLE4.2 空中數(shù)據(jù) (全頻
    發(fā)表于 10-15 08:00 ?11次下載

    一種基于粗糙集聚類的報文格式推斷方法

    報文聚類是報文格式推斷的基礎(chǔ),現(xiàn)有的報文聚類方法大多以報文的全局相似性為聚類的標(biāo)準(zhǔn),這類聚類方法的準(zhǔn)確率往往不高,進(jìn)而影響后續(xù)報文格式提取的
    發(fā)表于 04-25 11:45 ?3次下載
    一種基于粗糙集聚類的<b class='flag-5'>報文格式</b>推斷方法

    網(wǎng)絡(luò)協(xié)議棧:MQTT的報文格式解析

    在上一篇文章,直接在本地搭建了服務(wù)器和客戶端,簡單的實踐了MQTT的用法。而這一篇來解析MQTT的報文格式。MQTT的報文字段很精簡。但是解析起來還是有些復(fù)雜的。
    的頭像 發(fā)表于 05-13 14:06 ?6817次閱讀
    網(wǎng)絡(luò)協(xié)議棧:MQTT的<b class='flag-5'>報文格式</b><b class='flag-5'>解析</b>

    BLE廣播數(shù)據(jù)解析

    BLE 廣播數(shù)據(jù)結(jié)構(gòu) 在鏈路層,BLE廣播報文分為如下幾個部分: |前導(dǎo)|存取地址|報頭|長度|廣播數(shù)據(jù)|校驗| 一般抓包工具抓取
    發(fā)表于 10-08 10:49 ?0次下載

    Path延時測量相關(guān)報文格式介紹

    Pdelay_Req報文格式定義 如下圖15所示為IEEE802.1AS定義的報文格式定義: 圖15 Pdelay_Req報文格式定義 上圖中header與SYNCMessage頭信息定義
    的頭像 發(fā)表于 07-24 10:45 ?2018次閱讀
    Path延時測量相關(guān)<b class='flag-5'>報文格式</b>介紹