BLE Core Spec 链接层规范(一)
2026/8/28 5:20:46 网站建设 项目流程

1. General Description (总体描述)

1.1 Link Layer States (链路层状态机)

链路层的操作可以描述为一个包含以下 7 种状态的状态机:

  • Standby State(待机状态)
  • Advertising State(广播状态)
  • Scanning State(扫描状态)
  • Initiating State(发起状态)
  • Connection State(连接状态)
  • Synchronization State(同步状态)
  • Isochronous Broadcasting State(等时广播状态)

关键规则:

  • 链路层状态机在同一时间只能处于一种状态。
  • 设备必须至少拥有一台支持 Advertising 或 Scanning 状态的状态机,但可以有多个状态机实例。
  • Connection State (连接状态)包含两种角色:
    • Central Role (中心角色):从 Initiating 状态进入,负责定义传输时序,可与一个处于外围角色的设备通信。
    • Peripheral Role (外围角色):从 Advertising 状态进入,与单一的中心角色设备通信。
  • 同步接收者 (Synchronized Receiver):在 Synchronization 状态下接收等时数据包 (BIG) 的设备。
  • 等时广播者 (Isochronous Broadcaster):在 Isochronous Broadcasting 状态下传输等时数据包的设备。

1.1.1 允许的状态和角色组合

设备可以支持多个状态机,支持扫描周期性广播的设备至少需要两个状态机。
如果设备支持表 A 中的组合,则必须同样支持表 B 中的组合:

组合 A (Combination A)组合 B (Combination B)
Initiating + 其他状态组合 CConnection (Central role) + 相同组合 C
Connection (Central role) + Initiating + 组合 C连接到多个 Peripheral 设备的 Connection (Central role) + 组合 C
可连接的 Advertising 状态 + 组合 CConnection (Peripheral role) + 组合 C
Connection (Peripheral role) + 可连接的 Advertising 状态 + 组合 C连接到多个 Central 设备的 Connection (Peripheral role) + 组合 C

1.2 Bit Ordering (比特序)

  • 链路层规范中的数据包或 PDU 内字段采用小端序 (Little-endian)格式。
  • 最低有效位 (LSB, Least Significant Bit)对应b0b_0b0,且最先在空中传输。
  • 举例:3-bit 参数X=3X=3X=3对应二进制0b0110\text{b}0110b011,发送顺序为 1、1、0。文档中写作110
  • 多字节字段 (Multi-octet fields):除 CRC (循环冗余校验) 和 MIC 外,均需最低有效字节 (Least significant octet) 先传。每个字节内部以 LSB 优先传输。
  • 二进制字段 (如 0b10101010) 或多字节值 (如初始 CRC 0x112233445566) 书写时 MSB 位于左侧。

1.3 Device Address (设备地址)

设备通过48位的设备地址和地址类型进行标识,类型分为公有地址 (Public)随机地址 (Random)
设备的 Identity Address 是其在发送数据包时使用的公有地址或随机静态地址。

1.3.1 Public Device Address (公有设备地址)

  • 除非用作 BR/EDR 控制器的 BD_ADDR,否则没有 LAP 值的限制。

1.3.2 Random Device Address (随机设备地址)

由最高两位决定具体子类型:

Address [47:46]Sub-Type (子类型)
0b00Non-resolvable private address (不可解析私有地址)
0b01Resolvable private address (可解析私有地址)
0b10Reserved for future use (保留)
0b11Static device address (静态设备地址)

1. 静态设备地址 (Static device address)

  • 要求:地址的随机部分至少包含一个0和一个1
  • 格式:[ 随机部分 ] + [ 1 1 ](MSB)
  • 生命周期:设备可以在电源循环后重新初始化静态地址,但在下一次掉电前不可改变。

2. 私有设备地址生成 (Private device address generation)

  • 不可解析私有地址:随机部分至少一个0,至少一个1,且不能等于公有地址。格式为[ 随机部分 ] + [ 0 0 ](MSB)。
  • 可解析私有地址 (RPA):使用 Identity Resolving Key (IRK) 和一个 24-bit 随机数 (prandprandprand) 生成。
    • prandprandprand的随机部分必须至少有一个0和一个1,最高两位为1 0
    • hashhashhash生成公式(使用 ah 哈希函数):
      hash=ah(IRK,prand)hash = ah(IRK, prand)hash=ah(IRK,prand)
    • 地址拼接(最低有效字节为 hash 的最低字节,最高有效字节为 prand 的最高字节):
      randomAddress=prand∥hashrandomAddress = prand \parallel hashrandomAddress=prandhash

3. 私有设备地址解析
接收端通过提取 RPA 中的prandprandprand并使用已知的IRKIRKIRK计算本地哈希值来进行验证:
localHash=ah(IRK,prand)localHash = ah(IRK, prand)localHash=ah(IRK,prand)
如果localHashlocalHashlocalHash与 RPA 中提取的hashhashhash匹配,则设备身份解析成功。


1.4 Physical Channel (物理信道)

在 2.4 GHz ISM 频段内划分为40 个 RF 信道

  • Primary advertising channels (主广播信道):3 个,用于初始广播和所有传统广播活动。
  • General-purpose channels (通用信道):37 个,用于绝大多数通信。

四个 LE 物理信道:Advertising (广播)、Periodic (周期性)、Isochronous (等时)、Data (数据)。只有广播物理信道同时使用主广播信道和通用信道(次级广播信道),其余仅使用通用信道。

物理信道索引映射 (节选):

  • 2402 MHz -> Index 37 (主广播)
  • 2404 MHz -> Index 0 (通用)
  • 2426 MHz -> Index 38 (主广播)
  • 2480 MHz -> Index 39 (主广播)

2. Air Interface Packets (空中接口数据包)

2.1 Packet format for the LE Uncoded PHYs (LE 1M & 2M)

LE Uncoded PHY 的数据包结构如下(各阶段依次传输,保持 1 Msym/s 或 2 Msym/s 符号率):

字段大小说明
Preamble (前导码)1或2 octetsLE 1M 用 8-bit;LE 2M 用 16-bit。交替的 0 和 1 组成
Access Address (接入地址)4 octets32-bit,用于物理信道识别和防冲突
PDU (协议数据单元)2-258 octets广播信道、数据信道或等时信道的 PDU
CRC (循环冗余校验)3 octets24-bit,覆盖 PDU 计算
CTE (恒定音调扩展)(可选)16 ~ 160μs\mu\text{s}μs无白化处理的恒定全 1 调制序列,不参与 CRC/MIC 计算。等时物理信道中禁止存在

(注:不含 CTE 的数据包传输耗时介于 44 至 2128μs\mu\text{s}μs之间)

2.1.2 Access Address (接入地址) 规范

  • 长度为 32-bit,不得存在连续 6 个以上的 0 或 1,不得超过 24 次跳变。
  • 广播物理信道接入地址固定为:0x8E89BED6(二进制:0b10001110_10001001_10111110_11010110)。
  • 等时广播 (Isochronous Broadcasting)会为每个 BIG 随机生成种子接入地址SAA (Seed Access Address),满足:
    • SAA19=SAA15SAA_{19} = SAA_{15}SAA19=SAA15
    • SAA22=SAA16≠SAA15SAA_{22} = SAA_{16} \neq SAA_{15}SAA22=SAA16=SAA15
    • SAA25=0SAA_{25} = 0SAA25=0
    • SAA23=1SAA_{23} = 1SAA23=1
    • 对于同一个设备发射的 BIG 对,SAA15−0SAA_{15-0}SAA150的值必须至少有两位不同。
  • BIS 的 Access Address由 SAA 与该逻辑传输的 Diversifier Word (DWDWDW) 按位异或得出。DWDWDW派生公式为:
    • D=((35×n)+42)(mod128)D = ((35 \times n) + 42) \pmod{128}D=((35×n)+42)(mod128)(其中 n 为 BIS_Number)
    • DW=0bD0D0D0D0D0D0D1D6_D10D5D40D3D20DW = \text{0b}D_0D_0D_0D_0D_0D_0D_1D_6\_D_10D_5D_40D_3D_20DW=0bD0D0D0D0D0D0D1D6_D10D5D40D3D20

2.2 Packet format for the LE Coded PHY (编码物理层包格式)

所有物理信道使用的 LE Coded PHY 数据包结构如下 (1 Msym/s):

  1. Preamble (80μs\mu\text{s}μs):无编码。
  2. FEC Block 1 (前向纠错块1)
    • 采用S=8S=8S=8编码。
    • 包含字段:Access Address (256μs\mu\text{s}μs), Coding Indicator (CI, 16μs\mu\text{s}μs), TERM1 (24μs\mu\text{s}μs)。
    • CI (编码指示器):决定 FEC Block 2 采用哪种编码方案。
  3. FEC Block 2 (前向纠错块2)
    • 采用S=2S=2S=2S=8S=8S=8编码。
    • 包含字段:PDU (N×8×S μsN \times 8 \times S\ \mu\text{s}N×8×Sμs), CRC (24×S μs24 \times S\ \mu\text{s}24×Sμs), TERM2 (3×S μs3 \times S\ \mu\text{s}3×Sμs)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询