# 编码实现 - 自适应 RF 解码与发射 (Docs/60_coding/mod-rf.md) 本文件对应自适应射频解码与主动发射的具体编码实现细节。已验证无变动。 ## 1. 对应代码源文件 * [Drivers/rf.c](file:///c:/workfile/105/stc32g12k128/Drivers/rf.c) (RF 初始化、EV1527 时序比值软解码、主动发射) * [Drivers/rf.h](file:///c:/workfile/105/stc32g12k128/Drivers/rf.h) (芯片控制管脚与编解码函数声明) ## 2. 关键代码片段与逻辑实现 ### 2.1 自适应比值解码 (EV1527_Decode) 解码时,软件轮询检测接收管脚状态。 1. **抓取同步头**:检测到一个大于 `1500us` 且小于 `60000us` 的低电平。 2. **计算基准 T**:`T = low_time / 31`。 3. **采集 24 个数据位**:对于每一位,检测它的高电平持续时间 `h_val` 和低电平持续时间 `l_val`: ```c // 解码一位数据 if (h_val > l_val) { res = (res << 1) | 1; } else { res = (res << 1) | 0; } ``` 4. **极速解析与 CPU 效率**:去除了之前在主循环中阻塞多帧解析的详细日志串口打印,仅在解析整帧成功后发送一行 Summary。单帧处理耗时控制在 **2ms** 以内,彻底避免了连续波形导致的丢包现象。 ### 2.2 主动对码广播发射 手环通过 LT4455 发送对码广播,在 `rf.c` 中实现: ```c void EV1527_Transmit(u32 addr, u8 data_code) { // 产生多帧 EV1527 时序 // 包含同步头 (高 1T + 低 31T) 与 24 位数据码 // ... } ``` 通过控制发射引脚的电平跳转产生标准的 433MHz EV1527 载波信号。