最后更新:2022-07-01 07:01:15 手机定位技术交流文章



经过Physical Layer通过定义,通信所需的物理通道已经正常,即40RF Channel(后面统一使用Physical Channel指代)
此时Link Layer它的主要功能,可以在舞台上涂上,是:Physical Channel同时,控制与RF接收有关的参数是不可避免的。 此外,我们必须:
Physical Layer只提供有限的40个Physical Channel而且在BLE中参与通信的实体数量肯定不是这个数量水平。Link Layer需要解决Physical Channel的共享问题Logical Link)。这也是Link Layer需要解决的Physical Channel不可靠的,任何数据传输都可能因干涉问题而损坏或丢失,这对于某些应用来说是不能接受的。 因此,Link Layer需要提供校正、重新传输等机制,以确保数据传输的可靠性。
BLE协议在Link Layer层抽象出5种状态:
Connection国家以外的任何国家。Initiater和对应的Advertiser都会切换到Connection状态:状态由预备状态输入。Initiating State或Advertising State当频道被切断时,它就会返回Standby状态。
进入Connect State随后 确定 了 两 个 作用 :
Initiating State进入的Connect State连接成功后,它成了Master Role。Advertising State进入的Connect State连接成功后,它成了Slave Role。本节的正式文件地址为:
Core5.0 P2562
一旦 完成 地位 和 角色 定义, 其余 是 简单 的, 主要 包括 两 个 类别 :
BLE在协议中,这些都是通过所谓的空中接口数据包进行的(Air Interface Packets)的家伙负责。
空气接口包定义包的格式,主要用于描述LE Uncoded PHY、advertising channel和data channel的通信格式。
包的格式如下:

Preamble先驱代码:是0和1的交换序列,当物理通道是LE 1M PHY时,前导码为1Byte;当前导码为LE 2M PHY时,前导码为2Byte。
格式如下:

Access Address对于所有在广播频道发送的数据包,它们的值是0x8E89BED6.一旦链层处于启动状态,生成一个新的链层Access Address用于连接。该Access Address为一个4Byte的值。
蓝牙使用Access Address来标识不同的设备,访问地址可以是公开地址或随机地址无论哪种地址,它都是48bits长度。
静态地址通常是随机生成的,但必须遵守以下规则:

大多数设备(移动电话)在启动后启动静态地址;一旦启动,静态地址保持不变;重新启动后,生成一个新的静态地址。
私人地址也分为无法分析的私人地址和可以分析的私人地址。
无法分析的私人地址
不要分析私人地址,并遵循以下生成规则:

可以分析的私人地址
可以分析的私人地址,如白色斑点,是由加密算法生成的。Local Identity Resolving Key (IRK)或者the Peer Identity Resolving Key (IRK)这两个密钥,生成24bit的号码,
可以分析的私人地址必须遵守以下规则:

摘要:上两个有效位置代表设备地址的类型
Air Interface Packets整体的包结构是众所周知的,下面是主要的分析PDU字段。
PDU广播频道有两种传输方式。Advertising Channel PDU;数据通道上传输Data Channel PDU,长度为2-257字节
广播通道PDU,包括Advertising PDU、Scanning PDU、Initiating PDU三种类型。
广播通道的PDU,由16bit的数据头和1-255Byte变量大小数据的组成.

16bit数据头组成如下:


有多种类型的PDU, 文本位置:
core 5.0 P2567,可自行查阅。
ChSel:该位为1,支持LE Channel Selection Algorithm, 即LE通道选择算法, 相反, 不支持.TxAdd:该位为0,表明Payload的AdvA这个领域是公开的;职位为1,显示Payload的AdvA字段为随机的。Length:该字段表明了Payload的长度官方文档定位:
core 5.0 P2569
常见的Advertising PDU有:



常见的Scaning PDU有:


常见的Initiating PDU有:


LLData域具有相应的链层参数,可以详细查看Core 5.0 P2578
每一种PDU Type,都会定义自己的Payload组成。
数据通道PDU格式,包括16位Header,可变大小的Payload以及消息完整性检查MIC.
包的格式如下:

Header包括

LLID这个字段将这个包标识为LL Data PDU或者LL Control PDU
NESN:下次期望的序列号

根据LLID字段,Data Channel PDU又分为LL Data PDU和LL Control PDU两种类型。
当LLID为01b时,并且Length=0时,表示一个Empty PDU。
当LLID为10b在这种情况下,长度不能设置为0。

还有一些 Opcode 代码:


每个操作代码都符合不同的数据长度。
core5.0 P2589
CRC在链层包装结束时,检查所有PDU数据,大小长度为3Byte。
如果PDU数据被加密, CRC将计算加密的PDU数据。
CRC算法以多项式求解的形式出现, 值得理解.Core 5.0 P2601

本篇主要讲了BLE的Link Layer,包括链层所定义的角色和状态,空中接口数据包的通信格式,以及每个领域的意义,以促进我们的分析LOG和定位问题。

本文由 在线网速测试 整理编辑,转载请注明出处。