# SparkLink SLE 协议总览 本文从整体视角介绍 SparkLink 同步低功耗空口 (SLE) 协议的核心架构和关键概念, 帮助读者建立对协议体系的全局认知, 为后续深入各子层的详细解释做铺垫。 ## 协议定位 SparkLink 是面向短距无线通信的协议族, SLE 是其中的同步低功耗接入技术分支。对标的国内标准为 TXS-10002-2025《星闪无线通信系统 接入层 同步低功耗空口技术要求和测试方法》(V2.1.1, 2025-03-26 发布)。 SLE 的设计目标是在 2.4 GHz ISM 频段 (2402-2480 MHz) 实现低功耗、低时延、高可靠的短距无线链路, 典型应用场景包括: - 音频传输 (耳机、车载免提) - 近距离交互 (键鼠、遥控器) - 传感器网络 (工业测量、环境监控) - 室内定位与感知 (基于窄带跳频或超宽带脉冲) ## 协议栈层次 SLE 协议栈属于接入层, 分为两个子层: ```text ┌─────────────────────────────┐ │ 高层应用/服务 │ ├─────────────────────────────┤ │ 数据链路层 (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 链路的典型生命周期: ```{mermaid} 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 节点广播时隙分配信息。每个调度点的结构: ```text 发送子时隙 → 接收子时隙 → (保护间隔) ``` 跳频在每个调度点执行一次, 按照预定义的跳频序列切换工作信道。 ### 频率管理 SLE 窄带系统工作在 2.4 GHz 频段, 共 79 个信道 (2402-2480 MHz, 1 MHz 间隔)。跳频序列由伪随机数生成器驱动, 依据跳频种子和跳频地图计算每一跳的目标信道。 跳频地图标记哪些信道"可用", 哪些"被屏蔽"。屏蔽原因通常是干扰检测或外部要求, 标准要求最少可用信道数不低于门限 (§7.2.10)。 ## 代码结构与协议映射 本项目的代码组织直接映射到 SLE 协议的层次划分: ```text 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 处理。 ## 下一步阅读 - [物理层详解](physical-layer.md): 调制波形、帧结构、编码、发射/接收流水线的完整说明 - [MAC 层详解](mac-layer.md): 广播/发现/接入流程、链路管理状态机、信令编解码 - [安全子系统](security.md): 配对协商、密钥派生、帧加密、隐私保护 - [端到端数据流](data-flow.md): 从应用数据到射频信号的完整处理链路 - [数学原理](principles.md): Polar 码、PSK/GFSK 调制、信道模型的数学推导