欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 蓝牙数据包结构

蓝牙数据包结构

2024/10/26 15:53:01 来源:https://blog.csdn.net/qq_32966261/article/details/143248967  浏览:    关键词:蓝牙数据包结构

介绍

蓝牙技术联盟(Bluetooth SIG)为不同的应用场景定义了两种蓝牙数据结构,经典蓝牙(Bluetooth Classic)与低功耗蓝牙(BLE)。

经典蓝牙

Bluetooth Classic无线电,也被称为Bluetooth 基本速率/增强数据速率(BR/EDR),是一种低功率无线电,在2.4GHz非授权工业、科学和医疗(ISM)频段的79个频道上进行数据流。支持点对点设备通信,Bluetooth Classic主要用于实现无线音频流,已成为无线扬声器、耳机和车载娱乐系统背后的标准无线电协议。Bluetooth Classic无线电还能实现数据传输应用,包括移动打印。

低能耗蓝牙

Bluetooth 低能耗(LE)无线电是为非常低的功率操作而设计的。Bluetooth LE无线电在2.4GHz非授权ISM频段的40个信道上传输数据,为开发者提供了巨大的灵活性,以构建满足其市场独特连接要求的产品。Bluetooth LE支持多种通信拓扑结构,从点对点扩展到广播,最近又扩展到广播。 mesh,使Bluetooth 技术能够支持创建可靠的、大规模的设备网络。虽然最初以其设备通信功能而闻名,但Bluetooth LE现在也被广泛用作设备定位技术,以满足对高精度室内定位服务日益增长的需求。Bluetooth LE现在包括一些功能,使一个设备能够确定另一个设备的存在、距离和方向。

低功耗蓝牙数据包结构

蓝牙LE未编码物理层(Uncoded PHY)

数据包包含四个必选字段Preamble(前导码), AccessAddress(接入地址),PDU(数据),CRC。其中Constant Tone Extension是可选的。
在这里插入图片描述

前导码(Preamble):前导码是0,1交替的位数据,如01010101(0x55) 或者10101010(0xAA),长度为1字节或者2个字节,由传输模式确定。LE 1M PHY 模式前导码为1个字节,LE 2M PHY前导码分别为2字节。
这段序列之所以非常重要,是因为芯片必须能够应对输入信号强度的可能范围。接收机需要应付 -10dBm到-90dBm的信号强度,也就是80dB的动态范围。从接收机的角度讲,也就是1pW到0.1pW的能量。自动增益控制器必须检测出输入信号的能量等级,并调整增益,使得信号刚好处于接收机能够轻容工作的范围之中。
访问地址(Access address):接入地址的第一个比特决定了前导是01010101还是10101010。如果接入地址的第一个比特为0,则使用01010101序列;如果是1则使用10101010序列。这保证了任一报文的前9个比特都是交替的,即要么为101010101要么为010101010。
LL层使用接入地址来区分当前发送的数据是广播包还是数据包,广播包接入地址固定为0x8E89BED6,数据包使用是在连接时生成的接入地址。

  • 连接时主设备分配一个32位的随机数并发送给从设备,这就是接入地址。
  • 接入地址被用来表示一个连接,在连接期间保持不变。
  • 对于同一个从设备,断开从新连接接入地址也会重新生成。

协议数据单元(PDU):根据使用的通道不同可以分为广播报文数据报文。广播报文在广播通道上传输(37, 38, 39), 数据报文在数据通道上传输(0到36)。
协议上对于BLE4.0/BLE4.1 上层协议(LL)最大可以包含39字节,但是更新后的BLE4.2/BLE5.0 直接升级硬件,将这一长度扩展到257。但是默认了兼容BLE4.0/4.1还是采用了上面的39设计。
注意:PDU的最大长度直接由硬件决定,也是限制我们BLE 数据包大小的根本原因。
CRC:校验

广播通道PDU

下图为广播通道数据格式
在这里插入图片描述
数据包由16位的头和1~255字节的载荷组成
在这里插入图片描述
PDU Type(4bit) 广播报文类型
在这里插入图片描述

  • ADV_IND,通用广播,外设发出的一般称为通用广播,广播中包含mac地址设备名字等信息。
  • ADV_DERECT_IND,定向广播,某个外设在工作的时候就希望某个主设备来连接它,就可以向这个中央设备发起一个定向广播。
  • ADV_NONCONN_IND,不可连接的广播,比如货架上的广告机,会不断的向外发送广播信息。
  • SCAN_REQ,扫描请求,当中央设备发现通用广播中包含的信息并不全,这个时候主设备可以发一个扫描请求。
  • SCAN_RSP,外设响应主设备的扫描请求,返回给中央设备更多的信息。
  • CONNECT_REQ,连接请求,当主设备得到足够的信息之后就可以发送一个连接请求。来建立连接。
  • ADV_SCAN_IND,可发现广播,包含了比通用广播更加丰富的信息。
  • ADV_EXT_IND, 通用扩展广播
  • AUX 开头的广播类型和ADV_EXT_IND是蓝牙5.0新引入的,暂且不表。

数据通道PDU

在这里插入图片描述
包头(header)
在这里插入图片描述

  • LLID(2bit),逻辑链路标识符,用来判断数据报文属于下列哪种类型
    0b00, 保留
    0b01, 来自L2CAP的延续帧,或者是一个空包。
    0b10, 来自L2CAP的开始帧,或者是一个完整的报文。
    0b11, 控制报文。
  • NESN(1bit),预期序列号
  • SN(1bit),序列号
  • MD(1bit),更多数据
  • CP(1bit),是否包含CTEinfo
  • RFU(3bit),保留
  • length(8bit),长度
  • CTEinfo(8bit), 指明Constant Tone Extension的类型和长度

数据载荷(Payload)
消息完整性检查(message integrity check,MIC)

标准蓝牙数据包结构

数据包结构

BR模式数据包格式如下
在这里插入图片描述
EDR模式数据包格式如下
在这里插入图片描述

访问码(Access Code)

在这里插入图片描述

头(Header)

在这里插入图片描述

名词解释

Uncoded PHY:传送数据的时候,数据实打实的,未经过额外的编码的
空口包:在空中传输的数据(Air Interface packets)

参考

BLE 链路层(LL)的数据结构
https://ww2.mathworks.cn/help/bluetooth/ug/bluetooth-packet-structure.html#mw_a3c3f34d-47e4-4b1f-ab96-1a66a338c335
BLE 蓝牙抓包分析

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com