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

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

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

GAP層和GATT層,SM層完成應(yīng)用層數(shù)據(jù)交互和加密解密!

丫丫119 ? 來(lái)源:未知 ? 作者:肖冰 ? 2019-09-20 10:59 ? 次閱讀

實(shí)驗(yàn)用到的工具:

藍(lán)牙主機(jī):TI BTool + CC2540 dongle

藍(lán)牙從機(jī):CC2541模塊

抓包工具:TI Sniffer + CC2540 dongle

手機(jī)工具:BLE調(diào)試工具箱 (無(wú)線技術(shù)聯(lián)盟微信公眾號(hào)關(guān)聯(lián)的藍(lán)牙測(cè)試工具)

01

連接請(qǐng)求

TI的Btool是個(gè)非常好用的PC主機(jī)小工具,其部分界面如下所示,在Discover/Connect界面,可以配置不同的連接參數(shù),選擇掃描以及根據(jù)掃描到的廣播設(shè)備有選擇性的進(jìn)行連接。多說(shuō)一句whitelist,什么是whitelist?這個(gè)和微信公眾號(hào)的白名單一樣,是得到主機(jī)授權(quán)的從機(jī)設(shè)備,當(dāng)選擇只掃描whitelist的設(shè)備時(shí)(前提是已經(jīng)在主機(jī)上添加了whitelist設(shè)備),主機(jī)只會(huì)掃描過(guò)濾在whitelist里面的設(shè)備。

從下圖截獲的控制數(shù)據(jù)包可以看到,主機(jī)端在廣播掃描之后發(fā)出一條CONNECT_REQ的指令,附帶LL data,開啟了主從設(shè)備連接的過(guò)程的第一步。TI的工具做的比較人性化,可以從該條語(yǔ)句的注釋可以看到

Adv PDU Header Type的值為5,對(duì)應(yīng)Spec的值是CONNECT_REQ。

在指令后面標(biāo)注出發(fā)起端(主機(jī))和從機(jī)端的Mac地址,然后是LL data。

這一條指令嚴(yán)格來(lái)說(shuō)也是屬于廣播范疇,其數(shù)據(jù)格式說(shuō)明可以參考上一篇文章。

展開CONNECT_REQ包,其數(shù)據(jù)包格式可分為前導(dǎo),接入地址,數(shù)據(jù)包,CRC效驗(yàn),詳細(xì)規(guī)范如下:

PDU數(shù)據(jù)包分可分為兩個(gè)部分,Header部分是指令(CONNECT_REQ),payload是詳細(xì)LL data,拉出LL Data來(lái)看,如下圖所示:

下面對(duì)LL Data格式詳細(xì)說(shuō)明:

AA:連接中的兩設(shè)備的接入地址,如下圖所示,

CRCInit:CRC 初始化

WinSize:主機(jī)發(fā)送第一包數(shù)據(jù)的時(shí)間窗口

Winoffset:主機(jī)發(fā)送第一包數(shù)據(jù)的偏移時(shí)間

WinSize和Winoffset是配和使用,主機(jī)在發(fā)起CONNECT_REQ開始的Winoffset+1.25ms內(nèi)準(zhǔn)備和從機(jī)建立連接,這段時(shí)間被稱為連接建立準(zhǔn)備時(shí)間,WinSize是主機(jī)第一包數(shù)據(jù)發(fā)送的時(shí)間窗口范圍。

Interval:藍(lán)牙連接間隔時(shí)間。

Latency:連接延遲,主多次請(qǐng)求才喚醒從機(jī)交互一次數(shù)據(jù)。

Timeout:超時(shí)斷開連接。

ChM:跳頻表,主機(jī)根據(jù)信道情況給出一張?zhí)l表,約定和從機(jī)可用的信道(0-36信道),0表示該信道不可用,1表示該信道可用。

Hop:跳頻階躍,hop是一個(gè)5~16的值。

SCA:休眠時(shí)鐘校正范圍。

跳頻算法介紹:

跳頻算法用于數(shù)據(jù)連接時(shí)候,數(shù)據(jù)信道為37個(gè),跳頻公式如下: unmappedChannel = (lastUnmappedChannel + hopIncrement) mod 37

fn+1=(fn+hop) mod 37

hop是一個(gè)5~16的值,每次調(diào)頻之后中心頻率加hop值 mod 37。因?yàn)槎际钦麛?shù),這個(gè)表達(dá)式在軟件中非常容易實(shí)現(xiàn),軟件中通過(guò)求余運(yùn)算便能完成運(yùn)算,協(xié)議規(guī)定第一次連接事件中fn=0,fn+1=(0+hop) mod 37,也就是hop信道編號(hào)。

02

連接事件

連接請(qǐng)求發(fā)出之后,開始進(jìn)入連接狀態(tài),空中數(shù)據(jù)包如下所示,由綠色部分轉(zhuǎn)變?yōu)辄S色部分。

進(jìn)入藍(lán)牙連接狀態(tài),連接狀態(tài)的數(shù)據(jù)包格式如下所示,PUD數(shù)據(jù)包包含兩個(gè)部分,頭字說(shuō)明和數(shù)據(jù)包,頭字說(shuō)明里面有幾種類型,分別在LLID里面詳細(xì)規(guī)定,NESN和SN控制主從發(fā)送的數(shù)據(jù)包是否被正確接收。

LLID:數(shù)據(jù)包類型格式

NESN:下一個(gè)數(shù)據(jù)包序列

SN:數(shù)據(jù)包序列

NESN和SN是配合使用,他們的作用是來(lái)標(biāo)識(shí)主從是否正確交互。如主從交互所示,主發(fā)心跳包或者數(shù)據(jù)時(shí),標(biāo)記NESN和SN給從機(jī),從機(jī)在接收到主機(jī)標(biāo)識(shí)的NESN和SN之后,回傳NESN和SN+1給主,主接收到和之前發(fā)送的相差1表示之前數(shù)據(jù)正確傳輸,如果主機(jī)接收到的回傳值是非(NESN和SN+1),表示數(shù)據(jù)可能在空中存在都是,此時(shí)需要重傳。

03

數(shù)據(jù)交互

從機(jī)發(fā)起了MTU更新:

可以發(fā)現(xiàn)該LL Data出現(xiàn)橙黃色部分,抓包工具對(duì)數(shù)據(jù)進(jìn)行的解析,橙黃部分表示從機(jī)要求更新MTU的大小,然后和主機(jī)相互約束一個(gè)MTU的值,后面數(shù)據(jù)包的格式及按照新約定的MTU大小來(lái)傳輸數(shù)據(jù)。

總結(jié)

用一張圖作為總結(jié),整個(gè)鏈路層的連接的流程圖如下所示:

所以要想連接一個(gè)藍(lán)牙設(shè)備,主設(shè)備只需要做幾個(gè)動(dòng)作,自身初始化,掃描周邊設(shè)備,對(duì)特點(diǎn)設(shè)備發(fā)出連接請(qǐng)求,開始交換數(shù)據(jù)。

到此低功耗藍(lán)牙就相互連接上了,后面應(yīng)用層數(shù)據(jù)交互和加密解密就要交給GAP層和GATT層,SM層來(lái)完成,我們下次再講解。

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

    關(guān)注

    0

    文章

    78

    瀏覽量

    28948
  • GAP
    GAP
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    8462
收藏 0人收藏
  • WB莫遥燚1

評(píng)論

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

感知、傳輸、應(yīng)用層一體化:工控一體機(jī)廠家聚徽詳解集成技術(shù)方案

過(guò)程的全面智能化與高效化。本文將深入探討工控一體機(jī)中感知、傳輸、應(yīng)用層一體化的集成技術(shù)方案,剖析其工作原理、技術(shù)優(yōu)勢(shì)以及實(shí)際應(yīng)用案例。 一、工控一體機(jī)概述 工控一體機(jī)是一種專為工業(yè)環(huán)境設(shè)計(jì)的計(jì)算機(jī)設(shè)備,具備高可
的頭像 發(fā)表于 05-27 14:35 ?182次閱讀

PCB的EMC設(shè)計(jì)(一):的設(shè)置與排布原則

PCB的電磁兼容性(EMC)設(shè)計(jì)首先要考慮的設(shè)置,這是因?yàn)閱伟?b class='flag-5'>層數(shù)的組成、電源和地層的分布位置以及平面的分割方式對(duì)EMC性能有著決定性的影響。為昕MarsPCBlayerstack層數(shù)
的頭像 發(fā)表于 05-17 16:17 ?366次閱讀
PCB的EMC設(shè)計(jì)(一):<b class='flag-5'>層</b>的設(shè)置與排布原則

什么是原子刻蝕

本文介紹了什么是原子刻蝕(ALE, Atomic Layer Etching)。 1.ALE 的基本原理:逐精準(zhǔn)刻蝕? 原子刻蝕(ALE)是一種基于“自限性反應(yīng)”的納米加工技術(shù),其特點(diǎn)是以單
的頭像 發(fā)表于 01-20 09:32 ?478次閱讀
什么是原子<b class='flag-5'>層</b>刻蝕

在OSI模型中哪一負(fù)責(zé)處理加密解密數(shù)據(jù)

OSI模型是一個(gè)七的網(wǎng)絡(luò)通信框架,每一都承擔(dān)著特定的職責(zé),以確保數(shù)據(jù)能夠從源頭順利傳輸?shù)侥康牡亍牡撞康奈锢?b class='flag-5'>層開始,這一負(fù)責(zé)在物理媒介
的頭像 發(fā)表于 12-26 15:27 ?1229次閱讀

MultiGABSE-AU物理PMA子及PMD子的相關(guān)機(jī)制

在之前的文章中,我們介紹了IEEE 802.3cz[1]協(xié)議,MultiGABSE-AU物理中XMII、PCS子以及兩個(gè)可選功能的相關(guān)內(nèi)容,本篇將介紹MultiGABSE-AU物理PMA子
的頭像 發(fā)表于 12-23 10:20 ?968次閱讀
MultiGABSE-AU物理<b class='flag-5'>層</b>PMA子<b class='flag-5'>層</b>及PMD子<b class='flag-5'>層</b>的相關(guān)機(jī)制

OSI七模型中的數(shù)據(jù)封裝過(guò)程

數(shù)據(jù)能夠在不同網(wǎng)絡(luò)之間順利傳輸,按層次將數(shù)據(jù)添加相應(yīng)的協(xié)議頭和尾的過(guò)程。每一在傳輸數(shù)據(jù)時(shí),會(huì)在接收到的
的頭像 發(fā)表于 11-24 11:11 ?2459次閱讀

OSI七模型在網(wǎng)絡(luò)故障排查中的應(yīng)用

模型在網(wǎng)絡(luò)故障排查中的具體應(yīng)用: 一、OSI七模型概述 OSI七模型是一個(gè)概念性的框架,它將網(wǎng)絡(luò)通信的功能劃分為七個(gè)層次。這些層次從低到高分別是:物理、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)
的頭像 發(fā)表于 11-24 11:01 ?1538次閱讀

OSI七模型中各層的協(xié)議 OSI七模型的優(yōu)勢(shì)與不足

功能。以下是OSI七模型中各層的協(xié)議: 物理(Physical Layer) : 主要負(fù)責(zé)傳輸比特流,即實(shí)際的數(shù)據(jù)信號(hào)傳輸和物理連接的建立。 協(xié)議包括Ethernet(以太網(wǎng),如IEEE
的頭像 發(fā)表于 11-24 10:54 ?1146次閱讀

OSI七模型的每一功能

開放系統(tǒng)互聯(lián)(OSI)模型是一個(gè)概念性框架,用于標(biāo)準(zhǔn)化網(wǎng)絡(luò)通信過(guò)程,以便不同的計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)能夠相互通信。OSI模型分為七,每一都有其特定的功能和協(xié)議。以下是OSI七模型的每一
的頭像 發(fā)表于 11-24 10:46 ?1447次閱讀

詳解KiCad中的

“ ?不同EDA對(duì)于PCB中物理的定義基本相同,比如信號(hào)、絲印、阻焊、助焊等。但對(duì)于工藝(輔助)的定義會(huì)略有不同,比如Altium Designer沒(méi)有專門的板框
的頭像 發(fā)表于 11-12 12:21 ?1781次閱讀
詳解KiCad中的<b class='flag-5'>層</b>

PCM2707C是否支持Android系統(tǒng)?PCM2707C Android應(yīng)用層怎么寫?

有如下兩個(gè)問(wèn)題,幫忙看看,謝謝! 1,PCM2707C是否支持Android系統(tǒng) 2,PCM2707C Android應(yīng)用層怎么寫?如何獲取USB上的音頻數(shù)據(jù)。
發(fā)表于 10-30 07:46

金屬2工藝是什么

金屬2(M2)工藝與金屬1工藝類似。金屬2工藝是指形成第二金屬互連線,金屬互連線的目的是實(shí)現(xiàn)把第一金屬或者第三
的頭像 發(fā)表于 10-24 16:02 ?761次閱讀
金屬<b class='flag-5'>層</b>2工藝是什么

Linux應(yīng)用層控制外設(shè)的兩種不同的方式

眾所周知,linux下一切皆文件,那么應(yīng)用層如何控制硬件,同樣是通過(guò) 文件I/O的方式來(lái)實(shí)現(xiàn)的,那么應(yīng)用層控制硬件通常有兩種方式。
的頭像 發(fā)表于 10-05 19:03 ?1229次閱讀
Linux<b class='flag-5'>應(yīng)用層</b>控制外設(shè)的兩種不同的方式

神經(jīng)網(wǎng)絡(luò)中的卷積、池化與全連接

在深度學(xué)習(xí)中,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)是一種特別適用于處理圖像數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。它通過(guò)卷積、池化和全連接的組合,實(shí)現(xiàn)了
的頭像 發(fā)表于 07-11 14:18 ?9792次閱讀

反向傳播神經(jīng)網(wǎng)絡(luò)分為多少

層數(shù)可以根據(jù)具體問(wèn)題和數(shù)據(jù)集來(lái)確定,但通常包括輸入、隱藏和輸出。 輸入 輸入
的頭像 發(fā)表于 07-03 11:02 ?676次閱讀

電子發(fā)燒友

中國(guó)電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會(huì)員交流學(xué)習(xí)
  • 獲取您個(gè)性化的科技前沿技術(shù)信息
  • 參加活動(dòng)獲取豐厚的禮品