首页 > 其他分享 >【链路层】空口数据包详解(1):LE未编码物理层的数据包格式

【链路层】空口数据包详解(1):LE未编码物理层的数据包格式

时间:2024-11-04 09:16:18浏览次数:3  
标签:LE 传输 接入 PDU CRC 地址 数据包 链路层

目录

一、概述

1.1. 数据包结构

1.2. 传输特性

二、前导码(Preamble)

2.1. 功能

2.2. 长度

2.3. 位同步

2.4. 重要性

三、接入地址(Access Address)

3.1. 周期性广播序列中的接入地址

3.2. 其他广播信道数据包的接入地址

3.3. 链路层状态与接入地址生成

3.4. 接入地址要求

3.5. 广播同步集(BIG)中的接入地址

3.6. 随机数生成器的种子

3.7. 支持LE编码物理层时的额外要求

四、协议数据单元(PDU)

4.1. 广播物理通道PDU

4.2.  数据物理通道PDU

4.3.  同步物理通道PDU

4.4. PDU的组成

4.5. 注意事项

五、循环冗余校验(CRC)

5.1. CRC的定义与作用

5.2. CRC的计算

5.3. CRC的应用

5.4. 注意事项

六、恒音扩展(Constant Tone Extension)

6.1. 定义与特点

6.2. 应用场景

6.3. 传输规则

七、总结


本文深入介绍了低功耗蓝牙(BLE)中 LE 未编码物理层的数据包格式,包括前导码、接入地址、协议数据单元(PDU)、循环冗余校验(CRC)和恒音扩展(CTE)等关键组成部分的功能、特性及要求。通过本文,可以全面了解蓝牙LE未编码物理层数据包的结构和关键字段的作用。

一、概述

对于LE未编码物理层(包括LE 1M和LE 2M),定义了以下数据包格式,该格式适用于所有物理信道上的数据包

数据包格式如图2.1所示,每个数据包由四个必选字段和一个可选字段组成。必选字段包括:前导码(Preamble)、接入地址(Access Address)、协议数据单元(PDU)和循环冗余校验(CRC)。可选字段是恒定音调扩展(Constant Tone Extension,CTE)。

1.1. 数据包结构

  • 前导码(Preamble)
    • 在LE 1M物理层上传输或接收时,前导码为1个字节(octet)。
    • 在LE 2M物理层上传输或接收时,前导码为2个字节。
    • 前导码用于同步和定时估计。
  • 接入地址(Access Address)
    • 接入地址是4个字节的值,用于标识特定的连接或广播。
  • 协议数据单元(PDU)
    • PDU的长度范围是2到258个字节,它包含了要传输的实际数据。
  • 循环冗余校验(CRC)
    • CRC是3个字节的值,用于检测数据包在传输过程中是否发生了错误。
  • 恒定音调扩展(Constant Tone Extension,CTE)(可选)
    • CTE是一个可选的字段,通常用于信道探测和定位等应用。
    • 当数据包包含CTE时,它位于CRC之后。

1.2. 传输特性

  • 数据包中的各个字段按顺序传输:首先是前导码,然后是接入地址、PDU、CRC(以及可选的CTE)。
  • 整个数据包以相同的符号速率传输,对于LE 1M物理层是1 Msym/s(每秒百万符号),对于LE 2M物理层是2 Msym/s。
  • 不包括CTE的数据包传输时间介于44到2128微秒(µs)之间。
  • 当存在CTE时,CTE的持续时间介于16到160微秒之间。

这些参数确保了BLE设备在低功耗的条件下能够高效地传输数据,并且具有一定的错误检测能力。通过精心设计的数据包结构和传输参数,BLE技术能够在各种应用场景中实现稳定的无线通信。

二、前导码(Preamble)

在低功耗蓝牙(BLE)技术中,所有链路层(Link Layer)数据包都包含一个前导码。前导码是由0和1位交替组成的固定序列。

2.1. 功能

  • 频率同步:接收端使用前导码进行频率同步。
  • 符号定时估计:接收端通过前导码进行符号定时估计。
  • 自动增益控制(AGC)训练:接收端利用前导码进行AGC训练,以调整信号增益。

2.2. 长度

  • LE 1M物理层(PHY):前导码长度为8位(1个字节)。
  • LE 2M PHY:前导码长度为16位(2个字节)。

2.3. 位同步

  • 前导码的第一个位(传输顺序)与接入地址的最低有效位(LSB)相同,有助于接收端快速识别并同步数据包。

2.4. 重要性

前导码的结构如图2.2所示。在实际应用中,前导码是一个非常重要的组成部分,因为它确保了数据包在无线信道中的可靠传输。通过前导码,接收端能够进行精确的同步和定时估计,从而正确地接收和解码后续的数据包内容。

此外,前导码还有助于接收端进行自动增益控制(AGC)训练。AGC是一种用于调整接收端信号增益的技术,以确保接收到的信号强度适中,既不过强也不过弱。通过前导码,接收端可以评估信号的强度,并相应地调整增益,从而优化数据包的接收效果。

前导码在BLE技术中扮演着至关重要的角色。它确保了数据包在无线信道中的可靠传输,并为后续的同步、定时估计和AGC训练提供了基础。

三、接入地址(Access Address)

在低功耗蓝牙(BLE)技术中,接入地址(Access Address,AA)扮演着重要角色。接入地址在BLE技术中用于确保数据包能够正确同步和识别,其生成和使用需遵循一系列严格的规定和要求。

3.1. 周期性广播序列中的接入地址

  • 对于周期性广播序列中的AUX_SYNC_IND、AUX_CHAIN_IND、AUX_SYNC_SUBEVENT_IND、AUX_CONNECT_REQ和AUX_CONNECT_RSP等PDU,其接入地址应使用AUX_ADV_IND PDU中SyncInfo字段所设置的AA值。
  • 对于带响应的周期性广播序列中的AUX_SYNC_SUBEVENT_RSP PDU,其接入地址应使用AUX_ADV_IND PDU中周期性广播响应定时信息所设置的AA值。
  • 对于给定的带响应的周期性广播序列,AUX_SYNC_SUBEVENT_RSP PDU的AA值应与AUX_SYNC_SUBEVENT_IND PDU的AA值不同。

3.2. 其他广播信道数据包的接入地址

  • 对于其他广播信道数据包,其接入地址应为固定值0b10001110_10001001_10111110_11010110(0x8E89BED6)。

3.3. 链路层状态与接入地址生成

任意两个设备之间的每个链路层连接、每个基本信息集(BIS)以及每个周期性广播序列都有不同的接入地址。

  • 发起状态:在其发送的每个发起 PDU 时生成一个新的接入地址。
  • 广播状态:每次启用周期性广播序列时生成新的 AA(对于带有响应的广播,还需为响应生成第二个 AA)。第一个地址在该周期性广播序列的 PDU 的同步信息字段中发送,第二个地址在该序列的周期性广播响应定时信息中发送。
  • 连接状态(中央角色):处于连接状态的中央角色的链路层应为其创建的每个连接同步流(CIS)生成一个新的接入地址。该地址在用于创建 CIS 的链路层控制 PDU 中发送。

3.4. 接入地址要求

接入地址应为 32 位值。每次需要新的接入地址时(广播同步流(BIS)除外),链路层应生成一个新的随机值。

  • 不应与现有 ACL 连接、CIS、周期性广播序列、BIS、大信息组控制逻辑链路的 AA 相同。
  • 新 CIS 的 AA 应与同一设备上其他 AA 相差不止一位。
  • 不应有超过六个连续的零或一。
  • 不应是广播信道数据包的 AA 或仅相差一位的序列。
  • 不应有所有四个八位字节都相等。
  • 不应有超过 24 次转换,且在最高有效六位中至少有两次转换。

3.5. 广播同步集(BIG)中的接入地址

  • 链路层在同步广播状态时,应为每个BIG生成新的种子接入地址(SAA)。SAA 应满足特定要求,如 SAA19 = SAA15,SAA22 = SAA16 ≠ SAA15,SAA25 = 0,SAA23 = 1
  • BIG中BIS和BIG控制逻辑链路的接入地址应从SAA派生。
  • 对于每个BIS逻辑传输,其接入地址应等于SAA与该逻辑传输的分化字(DW)按位异或(XOR)的结果。

3.6. 随机数生成器的种子

  • 随机数生成器的种子应来自物理熵源,并至少具有20位的熵。
  • 如果生成的随机数和(对于SAA)派生的BIS和BIG控制逻辑链路的接入地址不满足上述要求,则应继续生成新的随机数,直到满足要求为止。

3.7. 支持LE编码物理层时的额外要求

  • 如果设备还支持LE编码物理层,则接入地址还需满足额外的要求,如在最低有效8位中至少有三个1,以及在最低有效16位中不超过11个转换等。

四、协议数据单元(PDU)

在蓝牙通信中,PDU(Protocol Data Unit,协议数据单元)是数据包的核心部分,它紧随前导码(Preamble)和接入地址(Access Address)之后。PDU的具体内容取决于数据包是在哪个物理通道上传输的。

4.1. 广播物理通道PDU

当数据包在主广播物理通道、次广播物理通道或周期性物理通道上传输时,PDU应为广播物理通道PDU。这种PDU的定义和格式可以参考低功耗蓝牙核心规范的第2.3节。广播物理通道PDU通常用于广播设备信息、设备发现和服务发现等过程。

4.2.  数据物理通道PDU

当数据包在数据物理通道上传输时,PDU应为数据物理通道PDU。这种PDU的定义和格式可以参考低功耗蓝牙核心规范的第2.4节。数据物理通道PDU主要用于设备之间的数据传输,包括语音、视频、文本和其他类型的数据。

4.3.  同步物理通道PDU

当数据包在同步物理通道上传输时,PDU应为同步物理通道PDU之一。这种PDU的定义和格式可参考低功耗在蓝牙核心规范的第2.6节。同步物理通道PDU主要用于传输需要低延迟和高可靠性的数据,如音频和视频流。

4.4. PDU的组成

PDU通常由多个字段组成,包括但不限于:

  • PDU头部:包含有关PDU类型和长度的信息。
  • 有效载荷:包含实际传输的数据。
  • CRC(循环冗余校验):用于检测数据传输中的错误。

4.5. 注意事项

  • 在不同的物理通道上传输的PDU具有不同的格式和用途,需要根据具体的应用场景选择合适的PDU。
  • PDU的设计需要考虑到数据传输的可靠性、效率和安全性等因素。
  • 在蓝牙通信中,PDU的传输需要遵循特定的规则和协议,以确保数据的正确传输和接收。

PDU是蓝牙通信中非常重要的组成部分,它负责在设备之间传输实际的数据。通过选择合适的PDU类型和格式,并遵循蓝牙通信的规则和协议,可以实现高效、可靠和安全的蓝牙通信。

五、循环冗余校验(CRC)

PDU 之后是一个 24 位的 CRC。它应针对 PDU 进行计算。

5.1. CRC的定义与作用

CRC是一种基于数据计算校验码的方法,用于核对数据传输过程中是否被更改或出现传输错误。在蓝牙技术中,CRC被广泛应用于确保数据包的完整性和正确性。

5.2. CRC的计算

  • 多项式:蓝牙规范中定义的CRC多项式为x10 + x6 + x3 + x + 1。这是一个24位的CRC多项式,用于生成和校验CRC码。
  • 计算过程:CRC的计算涉及将PDU中的所有比特从最低有效位(LSB)开始按传输顺序进行处理。通常通过线性反馈移位寄存器(LFSR)来实现,该寄存器使用上述多项式进行配置。
  • 初始化:对于每个数据通道PDU和同步连接PDU,移位寄存器应预先设置为ACL连接设置的CRC初始值。对于不同的PDU类型(如AUX_SYNC_IND PDU及其子集、广播物理通道PDUs等),移位寄存器的初始化值可能有所不同。

5.3. CRC的应用

  • 数据完整性校验:在接收端,通过重新计算接收到的PDU的CRC并与发送端附加的CRC进行比较,可以验证数据在传输过程中是否发生了更改或错误。
  • 错误处理:如果接收到的CRC与计算出的CRC不匹配,则表明数据包在传输过程中可能出现了错误,该数据包应被拒绝。

5.4. 注意事项

  • 加密与CRC:如果PDU已加密,则CRC应在加密后的PDU上计算。这意味着加密过程不会影响CRC的校验能力。
  • 白化与CRC:数据白化是一种用于避免长序列的0或1在数据位流中出现的技术。在蓝牙技术中,白化应用于所有链路层数据包的PDU和CRC字段。然而,白化过程在CRC生成之后进行,因此不会影响CRC的计算。

CRC在蓝牙技术中扮演着至关重要的角色,它确保了数据包的完整性和正确性。通过仔细计算和校验CRC,可以大大提高数据传输的可靠性和稳定性。

六、恒音扩展(Constant Tone Extension)

6.1. 定义与特点

Constant Tone Extension(CTE)是一个可选的字段,它位于CRC之后,由一系列未经过白化处理的持续调制的1组成。这个字段主要用于支持基于到达角度(AoA)和离开角度(AoD)的定位技术。CTE不会被包括在CRC或消息完整性校验(MIC)的计算中。

6.2. 应用场景

CTE主要应用于需要高精度定位的场景中,如室内导航、物品追踪等。通过测量CTE的到达时间差(TDOA)或相位差(PDOA),可以实现设备的精确定位。

6.3. 传输规则

  • 物理通道:CTE不会在同步物理通道的数据包中出现。这意味着,在同步传输中,如音频或视频流的传输中,不会包含CTE字段。
  • 调制方式:CTE的调制方式与数据包的其余部分相同,但它是持续调制的,且由未白化的1组成。
  • 长度:CTE的长度可以在一定范围内变化,具体长度由发射器根据需求确定。然而,它必须满足蓝牙规范中规定的最小和最大长度要求。

低功耗蓝牙核心规范的第2.5节中,对CTE进行了更详细的讨论。这包括CTE的结构和类型、发射器和接收器的行为要求以及支持CTE的设备的性能要求等。

Constant Tone Extension是蓝牙技术中一个重要的可选字段,它主要用于支持高精度定位技术。通过遵循蓝牙规范中规定的传输规则和要求,可以实现CTE的有效传输和接收,从而满足各种应用场景的需求。

七、总结

蓝牙LE未编码物理层的数据包格式是低功耗蓝牙通信的基础,其结构由四个必选字段(前导码、接入地址、PDU、CRC)和一个可选字段(CTE)组成。

前导码在不同物理层有不同长度,用于频率同步、符号定时估计和自动增益控制训练,其第一位与接入地址的最低有效位相同。接入地址在不同场景下有特定要求,包括周期性广播序列、其他广播信道等,且需满足一系列严格的生成要求。PDU 根据数据包传输的物理通道不同而有不同类型,分别用于广播物理通道、数据物理通道和同步物理通道等,由多个字段组成且需考虑不同因素。CRC 是 24 位的值,用于校验数据传输的完整性,其计算涉及特定多项式和过程,且在不同 PDU 类型中有不同的初始化值。CTE 是可选字段,由未白化的 1 组成,主要用于高精度定位场景,在同步物理通道的数据包中不会出现,其长度有一定范围要求。通过对这些组成部分的深入分析,全面了解低功耗蓝牙 LE 未编码物理层数据包格式的特点和应用。

综上所述,LE未编码物理层的数据包格式是一个结构化的数据封装方式,它确保了数据包在无线信道中的可靠传输和高效处理。通过精心设计的字段和校验机制,BLE设备能够在低功耗的条件下实现稳定的通信连接和数据传输。

标签:LE,传输,接入,PDU,CRC,地址,数据包,链路层
From: https://blog.csdn.net/weixin_37800531/article/details/143461709

相关文章

  • SpringBoot3+Vue3+ElementPlus通用权限后台系统 | 小蚂蚁云
     项目介绍基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、ElementPlus、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈......
  • SpringBoot3+Vue3+ElementPlus搭建后台系统脚手架 | 小蚂蚁云
     项目介绍基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、ElementPlus、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈......
  • SQLI LABS | Less-27 GET-Error Based-All Your UNION & SELECT Belong To Us-String-
    关注这个靶场的其它相关笔记:SQLILABS——靶场笔记合集-CSDN博客0x01:过关流程输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来): http://localhost/sqli-labs/Less-27/本关考察的是SQL注入的绕过姿势,至于发现注入点,相信强大如你已经很容易测出来了,......
  • SP30785 ADAAPPLE - Ada and Apple 题解
    洛谷题目传送门博客园可能食用更佳题目大意:给定一棵权值为000或11......
  • JavaScript(事件监听,点击事件,事件类型:鼠标事件mouseenter,mouseleave,焦点事件focus,blur,
    事件监听目标:能够给DOM元素添加事件监听什么是事件?事件是在编程时系统内发生的动作或者发生的事情比如用户在网页上单击一个按钮什么是事件监听?就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为绑定事件或者注册事件比如鼠标经过显示下拉菜......
  • blender动画导出Unity
    在Blender构建一个带有骨骼的模型为根骨骼(Root)构建动画导出FBX文件这里我是用了个插件,BetterFBXImport注意导出时,要将动画设置在第1帧,即小球在原点位置,不然导出后的FBX的原点会跑歪导入进Unity,设置一下根骨参数动画参数调整注意这3个选项是询问你,是否将旋转,X/Y/Z......
  • 【一学就会】Oracle通过伪列ROWNUM来实现分页功能
    本人详解作者:王文峰,参加过CSDN2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的Java开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯山峯转载说明:务必注明来源(注明:作者:王文峰哦)【一学就会】O......
  • LeetCode题练习与总结:两整数之和--371
    一、题目描述给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。示例1:输入:a=1,b=2输出:3示例2:输入:a=2,b=3输出:5提示:-1000<=a,b<=1000二、解题思路这个问题可以通过位运算来解决。位运算中的“与”操作(&)和“异或”操作(^......
  • LeetCode题练习与总结:超级次方--372
    一、题目描述你的任务是计算 a^b 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。示例1:输入:a=2,b=[3]输出:8示例2:输入:a=2,b=[1,0]输出:1024示例3:输入:a=1,b=[4,3,3,8,5,2]输出:1示例4:输入:a=2147483647,b=[2,......
  • 【Google Cloud】专用 Google 访问通道的组成和利用方法详解
    专用Google访问通道(PrivateGoogleAccess)允许从没有外部IP的虚拟机访问GoogleCloud服务的API。本文将详细介绍此功能。什么是专用Google访问通道专用Google访问通道(PrivateGoogleAccess)是指在GoogleCloud(原称GCP)中,允许没有外部IP(公网IP)的虚拟机或本地......