目录
六、恒音扩展(Constant Tone Extension)
本文深入介绍了低功耗蓝牙(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