0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

经典蓝牙协议PAN详解

泰凌微电子 来源:泰凌微电子 作者:泰凌微电子 2024-07-17 09:25 次阅读

蓝牙 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。

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

BNEP协议栈层级

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

PANU和NAP实体之间的协议交互

2SDP服务发现

为了确保PAN能正常连接,需要在手机上打开蓝牙网络共享功能。AndroidiOS操作系统的开启路径分别如下图所示(不同Android机型略有差异):

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

Android 蓝牙共享网络开启路径

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

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,对该服务的描述为泰凌。

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

PANU 服务查询表

3BNEP数据交互

BNEP建立在L2CAP之上,因此需要根据BNEP的PSM在L2CAP上创建对应的通道。根据BNEP Specification规定,BNEP对应的PSM为0x000F(SDP就是根据PSM来识别是哪一个Profile),BNEP的MTU SIZE最小值为1691。在L2CACP_CONFIGURATION阶段如果MTU SIZE小于1691则会导致通道创建失败。

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

创建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连接成功。

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

BNEP的连接与网络数据包交互

BNEP成功连接后随即会收到来自手机的网络包,主要的网络协议包有IPv4、IPv6、ARP。至此PAN Profile建立成功,接下来需要结合TCP/IP协议栈(lwIP、uIP)去解析/封装网络数据。

4uIP协议栈与网络帧收发逻辑

uIP协议栈(Micro IP)是一个相较于lwIP更加轻量级的嵌入式TCP/IP协议栈,特别适用于低内存、低带宽的嵌入式设备。我们将uIP协议栈与BTBLE Dual Mode SDK做了适配,通过软件的方式使用两组环形队列模拟了uIP协议中所需要的网卡驱动设备。

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

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。

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

DHCP IP地址分配

ARP阶段完成网卡地址和IP地址的转换与绑定,设备可以直接通过IP地址向对端发送数据。

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

ARP网络地址转换

接下来以访问https://zongxiaodong.cn/image_test/images为例,下载该网站中名为1.png的图片。在DNS解析阶段会将zongxiaodong.cn转换为对应的IP地址60.205.46.170。

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

uIP DNS域名解析

紧接着将1.png下载到本地。uIP web client用例主要是实现接入互联网的功能,并通过HTTP协议访问指定的网站。其功能主要包括建立网络连接,构建HTTP请求,发送HTTP请求,接受HTTP响应,解析HTTP响应。如图示,等待网站响应后1.png的图片数据就通过网络下载到PANU本地了。

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

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

    文章

    5658

    浏览量

    167847
  • 网络
    +关注

    关注

    14

    文章

    7375

    浏览量

    88158
  • 局域网
    +关注

    关注

    5

    文章

    719

    浏览量

    46112
  • PAN
    PAN
    +关注

    关注

    1

    文章

    19

    浏览量

    14241

原文标题:【技术专栏】经典蓝牙协议PAN概述

文章出处:【微信号:telink-semi,微信公众号:泰凌微电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用HCI log调试经典蓝牙

    泰凌TLSR9系列芯片支持经典蓝牙和低功耗蓝牙5.3 各项核心规范 ,目前开发者可以基于泰凌提供的协议栈和参考设计,开发各种音频相关产品,其中包括:双模低延时TWS耳机、双模低延时头戴
    的头像 发表于 03-22 10:24 2815次阅读
    如何使用HCI log调试<b class='flag-5'>经典</b><b class='flag-5'>蓝牙</b>?

    蓝牙个人局域网的应用测试步骤详解

    本文以蓝牙PAN的互操作性测试模型为例,从工程实际需求出发,运用软件测试的自动化技术,结合协议一致性测试的一般理论和方法说明蓝牙应用的互操作性测试的特点,并总结出一种适用于
    发表于 10-08 10:44 3826次阅读
    <b class='flag-5'>蓝牙</b>个人局域网的应用测试步骤<b class='flag-5'>详解</b>

    EVAL_PAN1026EMK,PAN1026EMK基于PAN1026系列蓝牙射频模块的实验套件

    由外部处理器控制,该环境可缩短软件和硬件开发时间。该套件适用于使用PAN1026蓝牙智能就绪RF模块的设计工程师,该模块具有嵌入式蓝牙经典蓝牙
    发表于 08-14 08:46

    BLE蓝牙相比经典蓝牙区别是什么

    蓝牙模块也按照应用和支持协议分为主要两种,不同类型的价格、定位、功能各有不同。  经典蓝牙(BT):泛指支持蓝牙
    发表于 11-06 16:36

    蓝牙协议栈初始化和调度机制资料?

    青云NRF51822/NRF52832蓝牙4.x详解第二讲:蓝牙协议栈初始化和调度机制对应蓝牙协议
    发表于 06-19 09:00

    蓝牙GAP详解

    蓝牙基础按照下面的大纲安排发布:前面的内容:第一讲:蓝牙样例的解析第二讲:蓝牙协议栈初始化和调度机制 第三讲:蓝牙广播初始化
    发表于 07-08 09:25

    基于PAN1026系列布局和播放蓝牙模块的评估套件

    和集成天线。这种成本设计的解决方案基于单芯片解决方案,该解决方案将ARM处理器与蓝牙控制器集成在一起。蓝牙4.0结合了蓝牙经典(3Mb / s)的数据速率和
    发表于 08-20 07:59

    Modbus_通讯协议详解

    Modbus_通讯协议详解,Modbus_通讯协议详解
    发表于 12-08 14:13 0次下载

    Pan1325蓝牙HCI模块介绍

    Introducing the PAN1325 Bluetooth RF module with embedded antenna. The PAN1325 provides
    发表于 09-11 17:05 2次下载

    C指针详解-经典-非常详细

    C指针详解-经典-非常详细
    发表于 10-23 17:39 79次下载
    C指针<b class='flag-5'>详解</b>-<b class='flag-5'>经典</b>-非常详细

    简述低功耗蓝牙经典蓝牙的区别

    经典蓝牙(classic Bluetooth)和低功耗蓝牙(Bluetooth low energy,简称BLE或者LE),两者有什么区别?为什么他们都叫“蓝牙”?Bluetooth
    发表于 06-05 20:11 2.5w次阅读

    python经典实例详解

    python经典实例详解说明。
    发表于 04-26 10:14 32次下载

    蓝牙协议版本解析:不同类型的蓝牙协议及其作用

    到2.1:经典蓝牙协议 蓝牙1.0: 首次引入蓝牙技术,支持数据传输速率为1 Mbps,主要应用在耳机和手机等简单设备的连接。
    的头像 发表于 12-28 11:17 1541次阅读

    蓝牙模块选经典蓝牙还是低功耗蓝牙

      经典蓝牙(classic Bluetooth)和低功耗蓝牙(Bluetooth low energy,简称BLE或者LE),两者有什么区别?为什么他们都叫“蓝牙”?Bluetoot
    的头像 发表于 05-23 17:57 469次阅读
    <b class='flag-5'>蓝牙</b>模块选<b class='flag-5'>经典</b><b class='flag-5'>蓝牙</b>还是低功耗<b class='flag-5'>蓝牙</b>?

    什么是经典蓝牙模块?

      什么是经典蓝牙模块? 前面我们已经就蓝牙模块的概念做了了解,随着时间的推移,产品越来越智能,需要的蓝牙模块也就越来越广泛,本篇文章我们就一起了解下什么是
    的头像 发表于 05-24 14:52 276次阅读
    什么是<b class='flag-5'>经典</b><b class='flag-5'>蓝牙</b>模块?