藍牙 Profile定義了藍牙設備之間如何進行通信以及實現特定的功能和應用場景。正是由于各種Profile的存在拓展出了藍牙豐富的應用場景,例如A2DP、HFP、HID等。PAN Profile便提供了藍牙設備接入以太網絡的能力。
PAN(Personal Area Networking)Profile即個人局域網協議。它描述了兩臺或多臺支持藍牙的設備如何組成一個自組網絡,以及如何使用相同的機制通過網絡接入點訪問遠程網絡。PAN Profile中主要包含的角色是網絡接入點(Network Access Point)、組自組網絡(Group Ad-hoc Network)和個人局域網用戶(Personal Area Network User)。網絡接入點可以是傳統的局域網數據接入點,而組自組織網絡則代表一組只相互連接的設備,個人局域網用戶代表通過PAN協議上網的用戶。本文將基于泰凌 BTBLE Dual Mode SDK以個人局域網用戶(PANU)的角度講述PAN在經典藍牙協議棧中的層級結構、SDP服務發現、BNEP數據交互、PAN Profile連接以及通過HTTP訪問網頁并獲取網頁數據的流程。
BNEP(Bluetooth Network Encapsulation Protocol)即藍牙網絡封裝協議規范。它描述了PAN 使用的協議,定義了藍牙網絡封裝的數據包格式,用于在藍牙媒體上傳輸常用網絡協議。藍牙網絡封裝支持與 IEEE 802.3/以太網封裝相同的網絡協議。支持的網絡協議數據包包含在藍牙網絡封裝數據包中,直接通過藍牙L2CAP協議傳輸。簡而言之PAN負責處理收/發的網絡數據,BNEP負責將網絡數據封裝上藍牙協議的包頭。
1層級結構
類似A2DP和AVDTP,PAN是建立在BNEP之上的,而BNEP又直接建立在L2CAP上。從NAP發送的網絡數據經過PANU端的Baseband再到L2CAP經過BENP解析最終到達PANU。
BNEP協議棧層級
PANU和NAP實體之間的協議交互
2SDP服務發現
為了確保PAN能正常連接,需要在手機上打開藍牙網絡共享功能。Android和iOS操作系統的開啟路徑分別如下圖所示(不同Android機型略有差異):
Android 藍牙共享網絡開啟路徑
iOS藍牙共享網絡開啟路徑
在SDP服務發現階段手機會主動查詢我們可用的服務并作出響應,下圖為PANU角色時手機查詢到的服務信息。
分配給PAN Profile的Record Handle為0x0010001a,service class ID表明當前角色是PANU,BNEP對應的PSM為0x000F,當前BNEP協議版本為v1.0,支持的以太網絡類型有IPv4(0x0800)和ARP(0x0806)。在Profile描述列表中表明PAN當前版本為v1.0,服務名稱為Personal Ad-hoc User Service,對該服務的描述為泰凌。
PANU 服務查詢表
3BNEP數據交互
BNEP建立在L2CAP之上,因此需要根據BNEP的PSM在L2CAP上創建對應的通道。根據BNEP Specification規定,BNEP對應的PSM為0x000F(SDP就是根據PSM來識別是哪一個Profile),BNEP的MTU SIZE最小值為1691。在L2CACP_CONFIGURATION階段如果MTU SIZE小于1691則會導致通道創建失敗。
創建L2CAP通道
BNEP主要有五種類型的數據包,分別是BNEP_GENERAL_ETHERNET、BNEP_CONTROL、BNEP_COMPRESSED_ETHERNET、BNEP_COMPRESSED_ETHERNET_SOURCE_ONLY、BNEP_COMPRESSED_ETHERNET_DEST_ONLY。BNEP_CONTROL提供了兩臺藍牙設備PANU與NAP之間交換控制信息的能力,其中包括發起BNEP連接請求/響應、設置網絡類型過濾器、設置MAC/網卡地址過濾器和響應未知控制命令的能力。除BNEP_CONTROL之外的其他四種數據包都用于兩臺藍牙設備之間傳輸網絡數據。
BNEP_GENERAL_ETHERNET:該類型數據包的包頭中會攜帶自身藍牙MAC地址/IP網卡地址以及對端藍牙MAC地址/IP網卡地址,這種包適合在多連接情況下進行數據交互。
BNEP_COMPRESSED_ETHERNET:該類型數據包省略了對端和自身的藍牙MAC地址/IP網卡地址,這種包適合在一對一連接情況下PANU與PANU之間數據交互。
BNEP_COMPRESSED_ETHERNET_DEST_ONLY:該類型數據包的包頭中僅攜帶對端的網絡包類型和對端的藍牙MAC地址/IP網卡地址,省略了自身的藍牙MAC地址/IP網卡地址,這種包適合在一對多連接情況下進行數據交互。
BNEP_COMPRESSED_ETHERNET_SOURCE_ONLY:該類型數據包的包頭中僅攜帶自身的藍牙MAC地址/IP網卡地址,省略了對端的藍牙MAC地址/IP網卡地址,這種包適合在一對多連接情況下進行數據交互。
任意一端發起BNEP連接時需要發送BNEP_SETUP_CONNECTION_REQUEST_MSG,對端藍牙設備在接收到該CONTROL包時需要回復BNEP_SETUP_CONNECTION_RESPONSE_MSG,若Response Message字段的值為0x0000( Operation Successful)則表示BNEP連接成功。
BNEP的連接與網絡數據包交互
BNEP成功連接后隨即會收到來自手機的網絡包,主要的網絡協議包有IPv4、IPv6、ARP。至此PAN Profile建立成功,接下來需要結合TCP/IP協議棧(lwIP、uIP)去解析/封裝網絡數據。
4uIP協議棧與網絡幀收發邏輯
uIP協議棧(Micro IP)是一個相較于lwIP更加輕量級的嵌入式TCP/IP協議棧,特別適用于低內存、低帶寬的嵌入式設備。我們將uIP協議棧與BTBLE Dual Mode SDK做了適配,通過軟件的方式使用兩組環形隊列模擬了uIP協議中所需要的網卡驅動設備。
uIP協議棧封包格式
uip_buf用于保存接收和發送網絡數據包。接收的網絡數據和發送的網絡數據都應該放入該緩沖區。
在接收到手機的網絡數據時會把BNEP格式的網絡幀數據包按照uIP協議棧的包格式組包好后拷貝到模擬網卡RX FIFO(sTlkTapDevRxFifo)環形隊列中。main_loop將接收到的網絡幀數據包從模擬網卡RX FIFO環形隊列中取出并拷貝到uip_buffer中。
在發送網絡數據時將uip_buffer中的網絡幀數據包拷貝到模擬網卡TX FIFO(sTlkTapDevTxFifo)環形隊列中。main_loop將需要發送的網絡幀數據包從模擬網卡TX FIFO環形隊列中取出并將包格式從uIP協議棧的包格式包轉換成BNEP格式的網絡幀數據包,然后調用BNEP發送函數將網絡包數據發送給對端藍牙設備。
當BNEP連接完成后會先進行DHCP_DISCOVER、DHCP_OFFER、DHCP_REQUEST、DHCP_ACK四階段交互,完成手機分配IP地址給PANU。
DHCP IP地址分配
ARP階段完成網卡地址和IP地址的轉換與綁定,設備可以直接通過IP地址向對端發送數據。
ARP網絡地址轉換
接下來以訪問https://zongxiaodong.cn/image_test/images為例,下載該網站中名為1.png的圖片。在DNS解析階段會將zongxiaodong.cn轉換為對應的IP地址60.205.46.170。
uIP DNS域名解析
緊接著將1.png下載到本地。uIP web client用例主要是實現接入互聯網的功能,并通過HTTP協議訪問指定的網站。其功能主要包括建立網絡連接,構建HTTP請求,發送HTTP請求,接受HTTP響應,解析HTTP響應。如圖示,等待網站響應后1.png的圖片數據就通過網絡下載到PANU本地了。
HTTP訪問網站并下載圖片數據
5結束語
泰凌 BTBLE Dual Mode SDK集成了PAN網絡服務功能,這使得采用泰凌TLSR951x/952x藍牙芯片的模塊和產品能夠通過標準協議,輕松連接至支持NAP藍牙網絡熱點的智能手機等主設備。這種連接提供了網絡訪問和數據下載服務,而且整個過程無需在手機上安裝任何APP,極大地簡化了設備間的互聯互通和數據共享過程。
泰凌TLSR951x是一款高性能的藍牙雙模SoC,它巧妙地將經典藍牙與低功耗藍牙技術集成在單一芯片之中。這款芯片搭載了一個32位RISC-V MCU,具備強大的內核功能和一系列先進的外設模塊,為高端耳戴式和可穿戴設備的創新設計和開發提供了堅實的基礎。其多級電源管理設計使得TLSR951x在實現超低功耗運行的同時,也滿足了對功耗極為敏感的應用需求,而高集成度則進一步幫助客戶優化了系統總成本。
而TLSR952x則是泰凌微電子推出的一款集成了先進音頻子系統的SoC,它包含了FastDSP單元、帶加速器的音頻編解碼器和電源管理單元,特別適合于ANC(主動降噪)和ENC(環境降噪)等高端音頻應用。TLSR952x全面支持藍牙5.3標準,包括基本速率(BR)、增強數據速率(EDR)、低功耗(LE)、藍牙低功耗 Mesh以及2.4 GHz專有標準,將無線音頻設備所需的所有特性和功能集于一身,為客戶提供了一個全面而高效的音頻解決方案。
-
藍牙
+關注
關注
114文章
5633瀏覽量
167608 -
網絡
+關注
關注
14文章
7365瀏覽量
88113 -
局域網
+關注
關注
5文章
717瀏覽量
46089 -
PAN
+關注
關注
1文章
19瀏覽量
14238
原文標題:【技術專欄】經典藍牙協議PAN概述
文章出處:【微信號:telink-semi,微信公眾號:泰凌微電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論