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

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

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

經(jīng)典藍牙協(xié)議PAN詳解

泰凌微電子 ? 來源:泰凌微電子 ? 作者:泰凌微電子 ? 2024-07-17 09:25 ? 次閱讀

藍牙 Profile定義了藍牙設(shè)備之間如何進行通信以及實現(xiàn)特定的功能和應(yīng)用場景。正是由于各種Profile的存在拓展出了藍牙豐富的應(yīng)用場景,例如A2DP、HFP、HID等。PAN Profile便提供了藍牙設(shè)備接入以太網(wǎng)絡(luò)的能力。

PAN(Personal Area Networking)Profile即個人局域網(wǎng)協(xié)議。它描述了兩臺或多臺支持藍牙的設(shè)備如何組成一個自組網(wǎng)絡(luò),以及如何使用相同的機制通過網(wǎng)絡(luò)接入點訪問遠程網(wǎng)絡(luò)。PAN Profile中主要包含的角色是網(wǎng)絡(luò)接入點(Network Access Point)、組自組網(wǎng)絡(luò)(Group Ad-hoc Network)和個人局域網(wǎng)用戶(Personal Area Network User)。網(wǎng)絡(luò)接入點可以是傳統(tǒng)的局域網(wǎng)數(shù)據(jù)接入點,而組自組織網(wǎng)絡(luò)則代表一組只相互連接的設(shè)備,個人局域網(wǎng)用戶代表通過PAN協(xié)議上網(wǎng)的用戶。本文將基于泰凌 BTBLE Dual Mode SDK以個人局域網(wǎng)用戶(PANU)的角度講述PAN在經(jīng)典藍牙協(xié)議棧中的層級結(jié)構(gòu)、SDP服務(wù)發(fā)現(xiàn)、BNEP數(shù)據(jù)交互、PAN Profile連接以及通過HTTP訪問網(wǎng)頁并獲取網(wǎng)頁數(shù)據(jù)的流程。

BNEP(Bluetooth Network Encapsulation Protocol)即藍牙網(wǎng)絡(luò)封裝協(xié)議規(guī)范。它描述了PAN 使用的協(xié)議,定義了藍牙網(wǎng)絡(luò)封裝的數(shù)據(jù)包格式,用于在藍牙媒體上傳輸常用網(wǎng)絡(luò)協(xié)議。藍牙網(wǎng)絡(luò)封裝支持與 IEEE 802.3/以太網(wǎng)封裝相同的網(wǎng)絡(luò)協(xié)議。支持的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包包含在藍牙網(wǎng)絡(luò)封裝數(shù)據(jù)包中,直接通過藍牙L2CAP協(xié)議傳輸。簡而言之PAN負責(zé)處理收/發(fā)的網(wǎng)絡(luò)數(shù)據(jù),BNEP負責(zé)將網(wǎng)絡(luò)數(shù)據(jù)封裝上藍牙協(xié)議的包頭。

1層級結(jié)構(gòu)

類似A2DP和AVDTP,PAN是建立在BNEP之上的,而BNEP又直接建立在L2CAP上。從NAP發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)經(jīng)過PANU端的Baseband再到L2CAP經(jīng)過BENP解析最終到達PANU。

804e1414-43d4-11ef-b8af-92fbcf53809c.png

BNEP協(xié)議棧層級

80588f8e-43d4-11ef-b8af-92fbcf53809c.png

PANU和NAP實體之間的協(xié)議交互

2SDP服務(wù)發(fā)現(xiàn)

為了確保PAN能正常連接,需要在手機上打開藍牙網(wǎng)絡(luò)共享功能。AndroidiOS操作系統(tǒng)的開啟路徑分別如下圖所示(不同Android機型略有差異):

8066a8a8-43d4-11ef-b8af-92fbcf53809c.png

Android 藍牙共享網(wǎng)絡(luò)開啟路徑

8075d77e-43d4-11ef-b8af-92fbcf53809c.png

iOS藍牙共享網(wǎng)絡(luò)開啟路徑

在SDP服務(wù)發(fā)現(xiàn)階段手機會主動查詢我們可用的服務(wù)并作出響應(yīng),下圖為PANU角色時手機查詢到的服務(wù)信息

分配給PAN Profile的Record Handle為0x0010001a,service class ID表明當(dāng)前角色是PANU,BNEP對應(yīng)的PSM為0x000F,當(dāng)前BNEP協(xié)議版本為v1.0,支持的以太網(wǎng)絡(luò)類型有IPv4(0x0800)和ARP(0x0806)。在Profile描述列表中表明PAN當(dāng)前版本為v1.0,服務(wù)名稱為Personal Ad-hoc User Service,對該服務(wù)的描述為泰凌。

808c75f6-43d4-11ef-b8af-92fbcf53809c.png

PANU 服務(wù)查詢表

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

BNEP建立在L2CAP之上,因此需要根據(jù)BNEP的PSM在L2CAP上創(chuàng)建對應(yīng)的通道。根據(jù)BNEP Specification規(guī)定,BNEP對應(yīng)的PSM為0x000F(SDP就是根據(jù)PSM來識別是哪一個Profile),BNEP的MTU SIZE最小值為1691。在L2CACP_CONFIGURATION階段如果MTU SIZE小于1691則會導(dǎo)致通道創(chuàng)建失敗。

80b15e5c-43d4-11ef-b8af-92fbcf53809c.png

創(chuàng)建L2CAP通道

BNEP主要有五種類型的數(shù)據(jù)包,分別是BNEP_GENERAL_ETHERNET、BNEP_CONTROL、BNEP_COMPRESSED_ETHERNET、BNEP_COMPRESSED_ETHERNET_SOURCE_ONLY、BNEP_COMPRESSED_ETHERNET_DEST_ONLY。BNEP_CONTROL提供了兩臺藍牙設(shè)備PANU與NAP之間交換控制信息的能力,其中包括發(fā)起B(yǎng)NEP連接請求/響應(yīng)、設(shè)置網(wǎng)絡(luò)類型過濾器、設(shè)置MAC/網(wǎng)卡地址過濾器和響應(yīng)未知控制命令的能力。除BNEP_CONTROL之外的其他四種數(shù)據(jù)包都用于兩臺藍牙設(shè)備之間傳輸網(wǎng)絡(luò)數(shù)據(jù)。

BNEP_GENERAL_ETHERNET:該類型數(shù)據(jù)包的包頭中會攜帶自身藍牙MAC地址/IP網(wǎng)卡地址以及對端藍牙MAC地址/IP網(wǎng)卡地址,這種包適合在多連接情況下進行數(shù)據(jù)交互。

BNEP_COMPRESSED_ETHERNET:該類型數(shù)據(jù)包省略了對端和自身的藍牙MAC地址/IP網(wǎng)卡地址,這種包適合在一對一連接情況下PANU與PANU之間數(shù)據(jù)交互。

BNEP_COMPRESSED_ETHERNET_DEST_ONLY:該類型數(shù)據(jù)包的包頭中僅攜帶對端的網(wǎng)絡(luò)包類型和對端的藍牙MAC地址/IP網(wǎng)卡地址,省略了自身的藍牙MAC地址/IP網(wǎng)卡地址,這種包適合在一對多連接情況下進行數(shù)據(jù)交互。

BNEP_COMPRESSED_ETHERNET_SOURCE_ONLY:該類型數(shù)據(jù)包的包頭中僅攜帶自身的藍牙MAC地址/IP網(wǎng)卡地址,省略了對端的藍牙MAC地址/IP網(wǎng)卡地址,這種包適合在一對多連接情況下進行數(shù)據(jù)交互。

任意一端發(fā)起B(yǎng)NEP連接時需要發(fā)送BNEP_SETUP_CONNECTION_REQUEST_MSG,對端藍牙設(shè)備在接收到該CONTROL包時需要回復(fù)BNEP_SETUP_CONNECTION_RESPONSE_MSG,若Response Message字段的值為0x0000( Operation Successful)則表示BNEP連接成功。

811bd2b4-43d4-11ef-b8af-92fbcf53809c.png

BNEP的連接與網(wǎng)絡(luò)數(shù)據(jù)包交互

BNEP成功連接后隨即會收到來自手機的網(wǎng)絡(luò)包,主要的網(wǎng)絡(luò)協(xié)議包有IPv4、IPv6、ARP。至此PAN Profile建立成功,接下來需要結(jié)合TCP/IP協(xié)議棧(lwIP、uIP)去解析/封裝網(wǎng)絡(luò)數(shù)據(jù)。

4uIP協(xié)議棧與網(wǎng)絡(luò)幀收發(fā)邏輯

uIP協(xié)議棧(Micro IP)是一個相較于lwIP更加輕量級的嵌入式TCP/IP協(xié)議棧,特別適用于低內(nèi)存、低帶寬的嵌入式設(shè)備。我們將uIP協(xié)議棧與BTBLE Dual Mode SDK做了適配,通過軟件的方式使用兩組環(huán)形隊列模擬了uIP協(xié)議中所需要的網(wǎng)卡驅(qū)動設(shè)備。

81200b5e-43d4-11ef-b8af-92fbcf53809c.png

uIP協(xié)議棧封包格式

uip_buf用于保存接收和發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包。接收的網(wǎng)絡(luò)數(shù)據(jù)和發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)都應(yīng)該放入該緩沖區(qū)。

在接收到手機的網(wǎng)絡(luò)數(shù)據(jù)時會把BNEP格式的網(wǎng)絡(luò)幀數(shù)據(jù)包按照uIP協(xié)議棧的包格式組包好后拷貝到模擬網(wǎng)卡RX FIFO(sTlkTapDevRxFifo)環(huán)形隊列中。main_loop將接收到的網(wǎng)絡(luò)幀數(shù)據(jù)包從模擬網(wǎng)卡RX FIFO環(huán)形隊列中取出并拷貝到uip_buffer中。

在發(fā)送網(wǎng)絡(luò)數(shù)據(jù)時將uip_buffer中的網(wǎng)絡(luò)幀數(shù)據(jù)包拷貝到模擬網(wǎng)卡TX FIFO(sTlkTapDevTxFifo)環(huán)形隊列中。main_loop將需要發(fā)送的網(wǎng)絡(luò)幀數(shù)據(jù)包從模擬網(wǎng)卡TX FIFO環(huán)形隊列中取出并將包格式從uIP協(xié)議棧的包格式包轉(zhuǎn)換成BNEP格式的網(wǎng)絡(luò)幀數(shù)據(jù)包,然后調(diào)用BNEP發(fā)送函數(shù)將網(wǎng)絡(luò)包數(shù)據(jù)發(fā)送給對端藍牙設(shè)備。

當(dāng)BNEP連接完成后會先進行DHCP_DISCOVER、DHCP_OFFER、DHCP_REQUEST、DHCP_ACK四階段交互,完成手機分配IP地址給PANU。

81241cb2-43d4-11ef-b8af-92fbcf53809c.png

DHCP IP地址分配

ARP階段完成網(wǎng)卡地址和IP地址的轉(zhuǎn)換與綁定,設(shè)備可以直接通過IP地址向?qū)Χ税l(fā)送數(shù)據(jù)。

8128cc30-43d4-11ef-b8af-92fbcf53809c.png

ARP網(wǎng)絡(luò)地址轉(zhuǎn)換

接下來以訪問https://zongxiaodong.cn/image_test/images為例,下載該網(wǎng)站中名為1.png的圖片。在DNS解析階段會將zongxiaodong.cn轉(zhuǎn)換為對應(yīng)的IP地址60.205.46.170。

8137d3d8-43d4-11ef-b8af-92fbcf53809c.png

uIP DNS域名解析

緊接著將1.png下載到本地。uIP web client用例主要是實現(xiàn)接入互聯(lián)網(wǎng)的功能,并通過HTTP協(xié)議訪問指定的網(wǎng)站。其功能主要包括建立網(wǎng)絡(luò)連接,構(gòu)建HTTP請求,發(fā)送HTTP請求,接受HTTP響應(yīng),解析HTTP響應(yīng)。如圖示,等待網(wǎng)站響應(yīng)后1.png的圖片數(shù)據(jù)就通過網(wǎng)絡(luò)下載到PANU本地了。

8156da8a-43d4-11ef-b8af-92fbcf53809c.png

HTTP訪問網(wǎng)站并下載圖片數(shù)據(jù)

5結(jié)束語

泰凌 BTBLE Dual Mode SDK集成了PAN網(wǎng)絡(luò)服務(wù)功能,這使得采用泰凌TLSR951x/952x藍牙芯片的模塊和產(chǎn)品能夠通過標(biāo)準(zhǔn)協(xié)議,輕松連接至支持NAP藍牙網(wǎng)絡(luò)熱點的智能手機等主設(shè)備。這種連接提供了網(wǎng)絡(luò)訪問和數(shù)據(jù)下載服務(wù),而且整個過程無需在手機上安裝任何APP,極大地簡化了設(shè)備間的互聯(lián)互通和數(shù)據(jù)共享過程。

泰凌TLSR951x是一款高性能的藍牙雙模SoC,它巧妙地將經(jīng)典藍牙與低功耗藍牙技術(shù)集成在單一芯片之中。這款芯片搭載了一個32位RISC-V MCU,具備強大的內(nèi)核功能和一系列先進的外設(shè)模塊,為高端耳戴式和可穿戴設(shè)備的創(chuàng)新設(shè)計和開發(fā)提供了堅實的基礎(chǔ)。其多級電源管理設(shè)計使得TLSR951x在實現(xiàn)超低功耗運行的同時,也滿足了對功耗極為敏感的應(yīng)用需求,而高集成度則進一步幫助客戶優(yōu)化了系統(tǒng)總成本。

TLSR952x則是泰凌微電子推出的一款集成了先進音頻子系統(tǒng)的SoC,它包含了FastDSP單元、帶加速器的音頻編解碼器電源管理單元,特別適合于ANC(主動降噪)和ENC(環(huán)境降噪)等高端音頻應(yīng)用。TLSR952x全面支持藍牙5.3標(biāo)準(zhǔn),包括基本速率(BR)、增強數(shù)據(jù)速率(EDR)、低功耗(LE)、藍牙低功耗 Mesh以及2.4 GHz專有標(biāo)準(zhǔn),將無線音頻設(shè)備所需的所有特性和功能集于一身,為客戶提供了一個全面而高效的音頻解決方案。

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

    關(guān)注

    114

    文章

    5751

    瀏覽量

    169596
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7485

    瀏覽量

    88541
  • 局域網(wǎng)
    +關(guān)注

    關(guān)注

    5

    文章

    739

    瀏覽量

    46224
  • PAN
    PAN
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

    14260

原文標(biāo)題:【技術(shù)專欄】經(jīng)典藍牙協(xié)議PAN概述

文章出處:【微信號:telink-semi,微信公眾號:泰凌微電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何使用HCI log調(diào)試經(jīng)典藍牙?

    泰凌TLSR9系列芯片支持經(jīng)典藍牙和低功耗藍牙5.3 各項核心規(guī)范 ,目前開發(fā)者可以基于泰凌提供的協(xié)議棧和參考設(shè)計,開發(fā)各種音頻相關(guān)產(chǎn)品,其中包括:雙模低延時TWS耳機、雙模低延時頭戴
    的頭像 發(fā)表于 03-22 10:24 ?3092次閱讀
    如何使用HCI log調(diào)試<b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍牙</b>?

    藍牙個人局域網(wǎng)的應(yīng)用測試步驟詳解

    本文以藍牙PAN的互操作性測試模型為例,從工程實際需求出發(fā),運用軟件測試的自動化技術(shù),結(jié)合協(xié)議一致性測試的一般理論和方法說明藍牙應(yīng)用的互操作性測試的特點,并總結(jié)出一種適用于
    發(fā)表于 10-08 10:44 ?3888次閱讀
    <b class='flag-5'>藍牙</b>個人局域網(wǎng)的應(yīng)用測試步驟<b class='flag-5'>詳解</b>

    EVAL_PAN1026EMK,PAN1026EMK基于PAN1026系列藍牙射頻模塊的實驗套件

    由外部處理器控制,該環(huán)境可縮短軟件和硬件開發(fā)時間。該套件適用于使用PAN1026藍牙智能就緒RF模塊的設(shè)計工程師,該模塊具有嵌入式藍牙經(jīng)典藍牙
    發(fā)表于 08-14 08:46

    BLE藍牙相比經(jīng)典藍牙區(qū)別是什么

    藍牙模塊也按照應(yīng)用和支持協(xié)議分為主要兩種,不同類型的價格、定位、功能各有不同。  經(jīng)典藍牙(BT):泛指支持藍牙
    發(fā)表于 11-06 16:36

    藍牙協(xié)議棧初始化和調(diào)度機制資料?

    青云NRF51822/NRF52832藍牙4.x詳解第二講:藍牙協(xié)議棧初始化和調(diào)度機制對應(yīng)藍牙協(xié)議
    發(fā)表于 06-19 09:00

    藍牙GAP詳解

    藍牙基礎(chǔ)按照下面的大綱安排發(fā)布:前面的內(nèi)容:第一講:藍牙樣例的解析第二講:藍牙協(xié)議棧初始化和調(diào)度機制 第三講:藍牙廣播初始化
    發(fā)表于 07-08 09:25

    基于PAN1026系列布局和播放藍牙模塊的評估套件

    和集成天線。這種成本設(shè)計的解決方案基于單芯片解決方案,該解決方案將ARM處理器與藍牙控制器集成在一起。藍牙4.0結(jié)合了藍牙經(jīng)典(3Mb / s)的數(shù)據(jù)速率和
    發(fā)表于 08-20 07:59

    Modbus_通訊協(xié)議詳解

    Modbus_通訊協(xié)議詳解,Modbus_通訊協(xié)議詳解
    發(fā)表于 12-08 14:13 ?0次下載

    Pan1325藍牙HCI模塊介紹

    Introducing the PAN1325 Bluetooth RF module with embedded antenna. The PAN1325 provides
    發(fā)表于 09-11 17:05 ?2次下載

    C指針詳解-經(jīng)典-非常詳細

    C指針詳解-經(jīng)典-非常詳細
    發(fā)表于 10-23 17:39 ?79次下載
    C指針<b class='flag-5'>詳解</b>-<b class='flag-5'>經(jīng)典</b>-非常詳細

    簡述低功耗藍牙經(jīng)典藍牙的區(qū)別

    經(jīng)典藍牙(classic Bluetooth)和低功耗藍牙(Bluetooth low energy,簡稱BLE或者LE),兩者有什么區(qū)別?為什么他們都叫“藍牙”?Bluetooth
    發(fā)表于 06-05 20:11 ?2.6w次閱讀

    python經(jīng)典實例詳解

    python經(jīng)典實例詳解說明。
    發(fā)表于 04-26 10:14 ?32次下載

    藍牙協(xié)議版本解析:不同類型的藍牙協(xié)議及其作用

    到2.1:經(jīng)典藍牙協(xié)議 藍牙1.0: 首次引入藍牙技術(shù),支持?jǐn)?shù)據(jù)傳輸速率為1 Mbps,主要應(yīng)用在耳機和手機等簡單設(shè)備的連接。
    的頭像 發(fā)表于 12-28 11:17 ?1942次閱讀

    藍牙模塊選經(jīng)典藍牙還是低功耗藍牙?

    ? 經(jīng)典藍牙(classic Bluetooth)和低功耗藍牙(Bluetooth low energy,簡稱BLE或者LE),兩者有什么區(qū)別?為什么他們都叫“藍牙”?Bluetoot
    的頭像 發(fā)表于 05-23 17:57 ?1019次閱讀
    <b class='flag-5'>藍牙</b>模塊選<b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍牙</b>還是低功耗<b class='flag-5'>藍牙</b>?

    什么是經(jīng)典藍牙模塊?

    ? 什么是經(jīng)典藍牙模塊? 前面我們已經(jīng)就藍牙模塊的概念做了了解,隨著時間的推移,產(chǎn)品越來越智能,需要的藍牙模塊也就越來越廣泛,本篇文章我們就一起了解下什么是
    的頭像 發(fā)表于 05-24 14:52 ?424次閱讀
    什么是<b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍牙</b>模塊?