SparkLink SLE 协议总览¶
本文从整体视角介绍 SparkLink 同步低功耗空口 (SLE) 协议的核心架构和关键概念, 帮助读者建立对协议体系的全局认知, 为后续深入各子层的详细解释做铺垫。
协议定位¶
SparkLink 是面向短距无线通信的协议族, SLE 是其中的同步低功耗接入技术分支。对标的国内标准为 TXS-10002-2025《星闪无线通信系统 接入层 同步低功耗空口技术要求和测试方法》(V2.1.1, 2025-03-26 发布)。
SLE 的设计目标是在 2.4 GHz ISM 频段 (2402-2480 MHz) 实现低功耗、低时延、高可靠的短距无线链路, 典型应用场景包括:
音频传输 (耳机、车载免提)
近距离交互 (键鼠、遥控器)
传感器网络 (工业测量、环境监控)
室内定位与感知 (基于窄带跳频或超宽带脉冲)
协议栈层次¶
SLE 协议栈属于接入层, 分为两个子层:
┌─────────────────────────────┐
│ 高层应用/服务 │
├─────────────────────────────┤
│ 数据链路层 (Data Link) │ ← 标准第 7/9 章
│ · 广播/发现/接入 │
│ · 链路管理与控制面流程 │
│ · 帧编解码与信令 │
│ · 安全 (配对/加密/隐私) │
│ · QoS (ARQ/HARQ/流控) │
├─────────────────────────────┤
│ 物理层 (PHY) │ ← 标准第 6/8 章
│ · 调制解调 (GFSK/PSK) │
│ · 帧结构与同步 │
│ · 信道编码 (Polar/BCH) │
│ · 跳频与频率管理 │
│ · 射频参数与合规 │
└─────────────────────────────┘
↕ 射频信号 (2.4 GHz)
物理层利用无线传输介质为数据链路层提供物理连接, 实现比特流的透明传输。其职责包括: CRC 校验、Polar 码前向纠错、HARQ 重传合并、速率匹配、调制解调、频率/时间同步、无线特性测量和射频处理 (标准 §6.1)。
数据链路层负责资源管理、访问控制、数据分段与级联、工作模式切换, 保障数据的可靠传递 (标准 §5)。
核心概念¶
节点角色¶
SLE 通信链路由两个节点组成。接入完成后, 双方角色确定为:
G 节点 (Grant Node): 通常是功能较强的一方, 负责广播、调度、发起配对
T 节点 (Terminal Node): 通常是功能较简的一方, 扫描并发起接入请求
角色在接入阶段通过 GT 角色协商确定, 建链后可通过角色切换流程 (§7.2.15) 互换。项目中对应 NodeRole.G_NODE 和 NodeRole.T_NODE。
帧类型¶
标准定义了四种物理帧类型, 各自的调制方式、编码策略和用途不同:
帧类型 |
调制 |
信道编码 |
同步序列 |
导频 |
典型用途 |
|---|---|---|---|---|---|
FT1 |
GFSK |
无 (仅 BCH 保护头部) |
32 位, GFSK |
无 |
广播/发现 |
FT2 |
PSK |
Polar(64,K) |
64 位→32 QPSK 符号 |
可选 |
有连接数据 |
FT3 |
PSK |
Polar(256,K) |
31+31 位→62 BPSK 符号 |
有 |
有连接数据 |
FT4 |
PSK |
Polar(256,K) |
63+63 位→126 BPSK 符号 |
有 |
有连接数据/广播 |
FT1 是最简单的帧类型, 适合低速率广播; FT2-FT4 依次增加同步序列长度和频谱效率, 支持 BPSK/QPSK/8PSK 调制阶数切换。
链路生命周期¶
一条 SLE 链路的典型生命周期:
stateDiagram-v2
state "空闲 (IDLE)" as IDLE
state "广播/扫描 (BROADCASTING / SCANNING)" as BCAST
state "接入 (ACCESS)" as ACCESS
state "配对与鉴权 (PAIRING, 可选)" as PAIRING
state "加密建立 (ENCRYPTION, 可选)" as ENCRYPT
state "已连接 (CONNECTED)" as CONNECTED
state "断开 (DISCONNECTED)" as DISCONNECTED
[*] --> IDLE
IDLE --> BCAST : G节点发送广播帧, T节点扫描接收
BCAST --> ACCESS : T节点发送接入请求, G节点回复接入响应
ACCESS --> PAIRING : 协商G/T角色, 分配首次调度点
PAIRING --> ENCRYPT : ECDH密钥交换, 鉴权验证
ENCRYPT --> CONNECTED : 派生会话密钥, 启动AES-CCM帧加密
CONNECTED --> DISCONNECTED : 主动断开或超时断开
DISCONNECTED --> IDLE
note right of CONNECTED
双向数据传输, 信令交互
功率控制/跳频/MCS自适应/QoS
end note
项目中 SleNode 类封装了完整的生命周期, 对应 NodeState 枚举:
IDLE → BROADCASTING/SCANNING → CONNECTING → CONNECTED → DISCONNECTED。
时序调度¶
SLE 采用同步时分复用调度。系统基础时隙 \(T_{sys} = 125\,\mu s\), 用 30 位计数器表示时刻。调度时隙可选 25/50/75/100/125 \(\mu s\) 五种粒度。
G 节点作为调度主控方, 通过系统管理帧 (SMF) 向所有 T 节点广播时隙分配信息。每个调度点的结构:
发送子时隙 → 接收子时隙 → (保护间隔)
跳频在每个调度点执行一次, 按照预定义的跳频序列切换工作信道。
频率管理¶
SLE 窄带系统工作在 2.4 GHz 频段, 共 79 个信道 (2402-2480 MHz, 1 MHz 间隔)。跳频序列由伪随机数生成器驱动, 依据跳频种子和跳频地图计算每一跳的目标信道。
跳频地图标记哪些信道"可用", 哪些"被屏蔽"。屏蔽原因通常是干扰检测或外部要求, 标准要求最少可用信道数不低于门限 (§7.2.10)。
代码结构与协议映射¶
本项目的代码组织直接映射到 SLE 协议的层次划分:
nearlink_sdr/
├── common/ ← 信道编码与底层算法 (CRC, Polar, BCH, 加扰, MCS)
├── phy/ ← 物理层 (调制, 帧, 同步, 导频, 跳频, 测量, 射频)
├── mac/ ← 数据链路层 (广播, 接入, 链路管理, 信令, 安全, QoS)
├── sim/ ← 仿真引擎 (16 阶段链路仿真)
└── node.py ← 节点实体 (SleNode, 集成全部功能)
common/ 是两层共用的编码算法库, 不直接对应标准的独立章节, 而是被物理层和数据链路层的各个流程引用。
node.py 中的 SleNode 是面向应用的顶层入口, 封装了从广播到断开的全部操作, 内部组合了 LinkManager、QosManager、PairingManager、FreqHopping、PowerController、ScheduleManager 等组件。
数据传输约定¶
标准规定了严格的比特/字节序:
最低有效位 (LSB) 最先在空口传输
多字节序列按低字节优先传输 (小端序)
数值默认十进制, 支持
0b/0o/0d/0x前缀
项目中的比特操作统一遵循此约定, 在 common/crc.py, mac/frame.py 等模块中均以 LSB-first 处理。