藍牙 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。
BNEP協(xié)議棧層級
PANU和NAP實體之間的協(xié)議交互
2SDP服務(wù)發(fā)現(xiàn)
為了確保PAN能正常連接,需要在手機上打開藍牙網(wǎng)絡(luò)共享功能。Android和iOS操作系統(tǒng)的開啟路徑分別如下圖所示(不同Android機型略有差異):
Android 藍牙共享網(wǎng)絡(luò)開啟路徑
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ù)的描述為泰凌。
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)建失敗。
創(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連接成功。
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è)備。
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。
DHCP IP地址分配
ARP階段完成網(wǎng)卡地址和IP地址的轉(zhuǎn)換與綁定,設(shè)備可以直接通過IP地址向?qū)Χ税l(fā)送數(shù)據(jù)。
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。
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本地了。
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è)備所需的所有特性和功能集于一身,為客戶提供了一個全面而高效的音頻解決方案。
-
藍牙
+關(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
+關(guān)注
關(guān)注
1文章
19瀏覽量
14260
原文標(biāo)題:【技術(shù)專欄】經(jīng)典藍牙協(xié)議PAN概述
文章出處:【微信號:telink-semi,微信公眾號:泰凌微電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論