CC27xx 集成了一个专用的低频校准 (LFCAL) 硬件模块,旨在将睡眠时钟精度保持在蓝牙核心规范允许的 ±500ppm 范围内,无需 CPU 干预。在待机期间,LFCAL 硬件自主执行由以下操作组成的周期性校准序列:
- 启用高频晶体振荡器 (HFXT),为测量提供 CLKULL 基准时钟。
- 根据 CLKULL 基准时钟测量当前的 LFOSC 周期。
- 推导更新后的 LFINC 换算系数并将其应用于实时时钟 (RTC)。
- 禁用 HFXT 并使器件返回低功耗待机状态。
整个校准序列在硬件中自主执行。无需 CPU 唤醒事件,从而省去了相关软件开销。该机制验证蓝牙低能耗连接事件时序在整个待机间隔内保持在规格允许的范围内。
基于上述简化示例,下面分析启用 LFCAL 后的相同场景。配置唤醒间隔为 1000ms 的补偿配置文件后,LFCAL 硬件会在待机期间执行周期性校准,在步骤 2 和步骤 3 之间新增一个校准操作。因此,步骤 3 的 RX 窗口时序结果发生改变。
步骤 2a — 待机模式期间的校准
- 在进入待机模式之前,软件采用适配 1000ms 连接间隔的补偿配置文件,对 LFCAL 硬件进行配置。本示例中仅作假设,校准间隔设定为 150ms。实际值取决于所有配置文件参数(请参阅了解补偿配置文件)。\
- 在待机期间,LFCAL 在 T = 150ms、300ms、450ms、600ms 和 750ms 时刻唤醒,以基准时钟测量 LFOSC,并相应更新 LFINC
- 完成 T = 750ms 的最后一次额外校准后,LFINC 与实际 LFOSC 周期匹配。如果 LFOSC 在剩余 250ms 无补偿待机时段内立即产生 500ppm 的漂移,则仅产生残余时序误差
步骤 3 — RX 窗口时序
- 此时 RX 窗口仅提前 125µs 开启,而未启用 LFCAL 时提前 806µs。
- 为简化计算,忽略主机 SCA(通常约为 50ppm),因此主机在 T = 1000.00ms 时发送连接数据包。
- 在相同假设条件下,即外设 SCA 仍为 500ppm、瞬时抖动容限仍为 16µs,RX 窗口约在 999.359ms 开启,1000.391ms 关闭,数据包可被成功接收。
请注意,本示例中使用的校准间隔并不表示所有使用 1000ms 作为唤醒间隔的补偿配置文件。有关更多详细信息,请参阅了解补偿配置文件。