4. Radio时隙与调度基础
nRF52/nRF53 系列只有一套 2.4 GHz Radio 硬件,却要同时承载 BLE、802.15.4(Thread/Zigbee)或私有 2.4G 协议。多协议并发的本质不是"同时发射",而是时分复用(TDM):把时间切成极短的时隙,让不同协议轮流占用 Radio,并在切换间隙完成频率、调制、地址和状态机的重配置。调度器要保证每个协议的关键事件(连接事件、广播事件、CSMA 退避、ACK 窗口)都不被错过,同时把平均电流压到最低。
一、时分复用的时间尺度
BLE 连接间隔最小 7.5 ms,一个连接事件内可能有多个包;802.15.4 的 CSMA/CA 退避单位是 320 µs(20 symbol);Radio 从空闲到可收发的启动时间约 40~140 µs(取决于模式与是否使用快速 ramp)。因此调度粒度必须做到微秒级,否则一次切换就会吃掉整个 ACK 窗口。
典型的多协议时间预算示例(教学假设值):BLE 连接间隔 20 ms,每事件预留 1.2 ms;Thread 使用 802.15.4,CSMA 退避 + 发送约 2 ms,接收窗口 1 ms。若两者在同一 20 ms 周期内都要服务,Radio 占用约 4.2 ms,占空比约 21%,其余时间 Radio 关闭,由 RTC 唤醒。这个占空比直接决定平均电流量级。
二、Radio 事件优先级
当两个协议的事件在时间上重叠,必须由优先级裁决。Nordic 多协议实现中通常按以下原则排序:
- 硬实时事件优先:BLE 连接事件的锚点(anchor point)由双方时钟约定,错过即丢包甚至断连,优先级最高。
- 协议角色优先:主/协调器(Central/Coordinator)的发送窗口通常比从/终端(Peripheral/End Device)的接收窗口更不可移动。
- 可延迟事件让位:广播、扫描、可延后的 CSMA 发送可以推迟到下一个时隙。
- 同优先级按时间先后:先到的事件先服务,避免饥饿。
优先级不是静态表,而是随连接状态动态变化的。例如 BLE 从设备在收到连接请求后,其连接事件窗口就变成硬约束;而扫描窗口可以随时缩短。
三、PPI/DPPI 触发链:让硬件自己完成切换
如果每次 Radio 切换都靠 CPU 中断处理,唤醒延迟和抖动会达到几十微秒,且功耗高。Nordic 的 PPI(可编程外设互连) 和 nRF53 的 DPPI(分布式 PPI) 允许外设之间直接触发,不经过 CPU。典型触发链:
TIMER 比较匹配 → PPI 通道 → RADIO TASKS_TXEN/RXEN
RADIO 事件 END/BCMATCH → PPI → TIMER 捕获 / GPIOTE / DPPI 转发
RTC 周期事件 → PPI → 唤醒调度器或触发下一次 Radio 任务
这样,Radio 的启动、频率设置、发送/接收切换可以在硬件层面按精确时序完成,CPU 只在真正需要处理数据包时才被唤醒。DPPI 在 nRF53 上支持跨域触发,让网络核与应用核之间的 Radio 协调更灵活。
四、低功耗定时器与协议间时隙协商
Radio 关闭时,系统靠 RTC(低功耗定时器) 维持时间基准。RTC 以 32.768 kHz 运行,功耗约 1 µA 量级,可产生周期事件或比较匹配事件,再通过 PPI 唤醒 Radio 或 CPU。多协议调度的核心是:用 RTC 建立统一时间轴,把各协议的锚点映射到同一时间轴上,再计算不重叠的时隙分配。
协议间时隙协商的典型做法是"预留 + 让位":
- 为每个协议维护一个事件表,记录锚点、周期、窗口长度和优先级。
- 调度器在 RTC 时间轴上检查冲突:若两个事件窗口重叠,高优先级保留原时隙,低优先级尝试前移或后移一个退避单位。
- 若低优先级无法在允许抖动范围内找到空位,则丢弃本次事件或请求协议层调整连接参数(如增大连接间隔)。
- 每次调度结果写回 PPI/DPPI 通道配置,由硬件在精确时刻执行。
教学示例:BLE 连接间隔 20 ms、锚点偏移 0;Thread 轮询周期 20 ms、锚点偏移 3 ms。两者窗口各 1.2 ms 和 2 ms,偏移 3 ms 使窗口不重叠,可直接共存。若偏移改为 1 ms,则重叠 0.2 ms,需将 Thread 发送推迟 1.5 ms 或把 BLE 连接间隔改为 25 ms。实际工程中常用连接参数错开(connection interval offset)来天然避免冲突。
READY、ADDRESS、END 事件配合 TIMER 捕获,测量实际时隙占用与抖动。若发现某协议频繁丢包,先检查其锚点是否被高优先级事件持续挤压,再考虑调整连接间隔或优先级。
总结来看,多协议并发的调度基础是:以 RTC 为统一时间基准,以 PPI/DPPI 为硬件执行通道,以优先级裁决解决冲突,以时隙协商(偏移、退避、参数调整)实现共存。理解这四者的配合关系,才能在 nRF 平台上把 BLE 与 802.15.4 或私有协议稳定地跑在同一颗 Radio 上。