RM新时代网站-首页

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

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

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

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

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

實驗用到的工具:

藍牙主機:TI BTool + CC2540 dongle

藍牙從機:CC2541模塊

抓包工具:TI Sniffer + CC2540 dongle

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

01

連接請求

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

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

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

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

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

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

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

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

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

CRCInit:CRC 初始化

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

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

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

Interval:藍牙連接間隔時間。

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

Timeout:超時斷開連接。

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

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

SCA:休眠時鐘校正范圍。

跳頻算法介紹:

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

fn+1=(fn+hop) mod 37

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

02

連接事件

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

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

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

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

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

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

03

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

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

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

總結(jié)

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

所以要想連接一個藍牙設(shè)備,主設(shè)備只需要做幾個動作,自身初始化,掃描周邊設(shè)備,對特點設(shè)備發(fā)出連接請求,開始交換數(shù)據(jù)。

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

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

    關(guān)注

    0

    文章

    78

    瀏覽量

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

    關(guān)注

    0

    文章

    15

    瀏覽量

    8307
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

    詳解KiCad中的

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

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

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

    金屬2工藝是什么

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

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

    眾所周知,linux下一切皆文件,那么應(yīng)用層如何控制硬件,同樣是通過 文件I/O的方式來實現(xiàn)的,那么應(yīng)用層控制硬件通常有兩種方式。
    的頭像 發(fā)表于 10-05 19:03 ?431次閱讀
    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)。它通過卷積、池化和全連接的組合,實現(xiàn)了
    的頭像 發(fā)表于 07-11 14:18 ?5377次閱讀

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

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

    在STM32F407官方LWIP例程中,怎樣修改把需要發(fā)送的數(shù)據(jù)直接由應(yīng)用層映射到數(shù)據(jù)鏈路層?

    STM32F407 以太網(wǎng)DMA數(shù)據(jù)發(fā)送問題,最近在做一個關(guān)于電網(wǎng)IEC61850通信項目,其中9-2SV協(xié)議要求應(yīng)用層數(shù)據(jù)直接映射到數(shù)據(jù)鏈路層,不需經(jīng)表示、會話
    發(fā)表于 04-29 06:21

    什么是PCB疊?PCB疊設(shè)計原則

    對于信號,通常每個信號都與內(nèi)電直接相鄰,與其他信號有有效的隔離,以減小串?dāng)_。在設(shè)計過程中,可以考慮多層參考地平面,以增強電磁吸收能力。
    的頭像 發(fā)表于 04-10 16:02 ?2398次閱讀
    什么是PCB疊<b class='flag-5'>層</b>?PCB疊<b class='flag-5'>層</b>設(shè)計原則

    華為顯示面板專利公布,聚焦介質(zhì)、平坦化、像素界定及電路設(shè)計

    該專利主要內(nèi)容如下:顯示面板由間介質(zhì)、平坦化和像素界定有序堆疊而成;在顯示面板非像素區(qū)的第一功能內(nèi)置入內(nèi)切結(jié)構(gòu)和至少一個電極搭接結(jié)
    的頭像 發(fā)表于 02-21 09:40 ?668次閱讀
    華為顯示面板專利公布,聚焦介質(zhì)<b class='flag-5'>層</b>、平坦化<b class='flag-5'>層</b>、像素界定<b class='flag-5'>層</b>及電路設(shè)計

    rfid屬于物聯(lián)網(wǎng)的哪個

    交換,進而提高效率、減少人為干預(yù)、優(yōu)化資源利用等。物聯(lián)網(wǎng)的技術(shù)結(jié)構(gòu)分為感知、傳輸、應(yīng)用層等幾個層次,其中感知是構(gòu)建物聯(lián)網(wǎng)最基礎(chǔ)和關(guān)鍵的一
    的頭像 發(fā)表于 01-11 10:23 ?4321次閱讀

    物聯(lián)網(wǎng)結(jié)構(gòu)之應(yīng)用層

    物聯(lián)網(wǎng)應(yīng)用層利用經(jīng)過分析處理的感知數(shù)據(jù),為用戶提供不同類型的特定服務(wù),其主要功能包括對采集數(shù)據(jù)的匯集、轉(zhuǎn)換、分析,以及用戶呈現(xiàn)的適配和事件觸發(fā)等。網(wǎng)絡(luò)
    的頭像 發(fā)表于 12-28 14:49 ?880次閱讀
    物聯(lián)網(wǎng)結(jié)構(gòu)之<b class='flag-5'>應(yīng)用層</b>

    OSI七模型如何幫助網(wǎng)絡(luò)通信?

    OSI(開放系統(tǒng)互聯(lián))七模型是計算機網(wǎng)絡(luò)體系結(jié)構(gòu)的一種描述方式,它為不同系統(tǒng)之間的通信提供了統(tǒng)一的標(biāo)準(zhǔn)。這個模型從低到高分別是:物理、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)、傳輸
    的頭像 發(fā)表于 12-21 16:27 ?593次閱讀

    板如何設(shè)置板層

    板是一種常用于電子產(chǎn)品中的印制電路板(PCB),具有四個層次或?qū)用?。在設(shè)計四板時,需要合理設(shè)置板層,以優(yōu)化電路性能和信號傳輸。本文將詳細(xì)介紹四板的板層設(shè)置方法。 四板概述 四
    的頭像 發(fā)表于 12-21 11:26 ?2125次閱讀
    RM新时代网站-首页