BLE数据包

一、link layer数据包格式
1.Uncoded Phys
1M/2M Phys

| Preamble|AccessAddress |PDU| CRC| Constant Tone Extension|

其中前4部分是强制的,最后一部分cte是可选的,用于AoA等用途。
Preamble:4Bytes, 这个是为了接收机来同步频率等用途的,每种无线通信都必须必须包含的。是固定的01序列,
并且对于1M PHY 是1字节,2M PHY是2字节。取值取决于之后的访问码地址最低位。简言之,就是Preamble取值是为了与相邻的AccessAddress域有明显的位跳变。具体取值如下:
如果访问码b0是1,则Preamble取以0结束的值,即0xAA/0xAAAA;
如果访问码b0是0,则Preamble取以1结束的值,即0x55/0x5555.

因为整包数据传输工作在1Msybs 或者 2M sybs,所以在不包括CTE的情况下,整包数据传输需要44us~2128us时间。

AccessAddress
在我个人看来,accessAddress更多的是标识一个物理通道,通信双方约定好在哪个通道上碰头交换信息。另外对于监听的设备,只需要通过判断该域就可以判断是否是自己感兴趣的数据。

PDU
PDU分为三大类,
primary广播通道/Secondary广播通道以及周期广播通道上的packet使用广播通道Adv PDU;
数据通道上使用数据通道 Data PDU;
Isochronous通道上使用Isochronous PDU.

1. 广播通道
包括Primary/Secondary/Periodic广播通道PDU格式如下:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ChSel/TxAdd/RxAdd 对于不同的type可能有不同的含义,如果不包含该域,则认为是保留域。

Length: 表示之后的数据Payload的长度,取值1~255字节。

这里着重说一下扩展广播包:
扩展广播的payload的数据使用 Common Extended Advertising Payload Format。
在这里插入图片描述
Extended Header Length 取值范围在0~63之间,实际取决于Extended Header.
AdvMode:
0b00 - 不可扫描不可连接广播包
0b01 - 可连接不可扫描
0b10 - 不可连接可扫描
0b01 - reseved.

在这里插入图片描述
Extended Header Flags: 位map,域映射,分别对应之后的AdvA ~ TxPower域。如果某位为1,说明该域存在。
AdvA 和 TargetA含义和之前广播header含义一致,分别代表广播发出者地址和广播接收者地址。并且类型受广播header种的TxAdd 和 RxAdd约束。
CTEInfo: 表明该包是否包含 Constant Tone Extension(额外的16~160us).
AdvDataInfo(ADI) : 由advertiser设置用于表明广播集信息。
在这里插入图片描述
SID: 用于区分不同的广播集
DID: 广播数据ID。scanner可以据此来区分是不是重复数据包。
AuxPtr:
如果存在该域,就说明至少有部分甚至所有广播数包是存在于随后的辅助广播包里(subsequent auxiliary packet)。但是接下的数据包会在什么时间什么地点发送呢?该域就是描述辅助包的。
在这里插入图片描述
Channel Index,表示可能在哪些通道上发辅助包。
offset Units, Aux Offset域对应数值的时间单位。
0 - 30us,
1- 300us
AUX Offset, 表明从参考点到辅助包开始发送的时间便宜。参考点是指包含该AuxPtr的数据包开始时间。offset = AUX Offset * offset Units. 这个offset至少要大于该包整包发送时间+T_MAFS. 如果Aux Offset小于 245,700 µs, Offset Units需要设置为0. 辅助包的发送时间点不应该早于参考点之后的Aux Offset,并且不晚于参考点之后的Aux Offset + Offset Units。其实就是限制辅助包在参考点+ Aux Offset之后的 offset Units时间内发出去。
在这里插入图片描述
Aux Phy: 辅助包使用的phy
00 - 1M 01 - 2M 10 - Coded 11 - reseved
CA , Clock Accuracy,表示Adevertiser在该包与辅助广播包之间将会使用的时钟精度。
0 : 51ppm ~ 500ppm 1: 0ppm ~ 50ppm

2.Data通道
在这里插入图片描述
在这里插入图片描述
在以下2种情况下可能不存在MIC,

  1. 未加密的acl链路
    2)加密但是payload长度为0

流控机制
connection建立时初始化NESN 和 SN均为0,
NESN:next expected sequence number,
SN : sequence Number
本地维护两个变量transmitSeqNum 和 expectedSeqNum,
Tx时, 设置SN = transmitSeqNum
Rx时,判断接收包的SN是否等于expectedSeqNum, 如果相等则说明对端已经确认收到了last packet,此时将transmitSeqNum加1.

  1. Constant Tone Extention and IQ sample
  2. Isochronous physical channel
    在这里插入图片描述
    CIS 数据包:
    A Connected Isochronous PDU (CIS PDU) shall be either a CIS Data PDU or a CIS Null PDU. A CIS Data PDU is used to carry isochronous data. A CIS Null PDU is used when there is no data to be sent.
    在这里插入图片描述
    在这里插入图片描述
    BIS包:
    A Broadcast Isochronous PDU (BIS PDU) shall be either a BIS Data PDU or BIG Control PDU. A BIS Data PDU is used to carry isochronous data. A BIG Control PDU is used to send control information for a BIG.
    在这里插入图片描述
    在这里插入图片描述
    BIG控制包:
    在这里插入图片描述
    目前BIG控制包只包括2个实际的opcode:
    0x00 - BIG_CHANNEL_MAP_IND
    0x01 - BIG_TERMINATE_IND
    在这里插入图片描述
    在这里插入图片描述
  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值