Files
stc32g128k/Docs/50_module-breakdown/mod-rf.md

31 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 模块拆分 - 自适应 RF 解码与发射 (Docs/50_module-breakdown/mod-rf.md)
本模块管理射频芯片 GPIO 初始化、433MHz EV1527 解调接收(宽限时序比值算法)与射频打包主动发射。
## 1. 模块职责说明
* **职责范围**
1. 初始化射频接收和发射控制引脚。
2. 对射频输入引脚进行高低电平时序轮询解码,计算其高低电平比值,实现自适应 EV1527 24位数据解码。
3. 在特定系统请求下(例如发送 SOS 呼救或与 IPC 对码绑定),主动通过发射引脚发出 EV1527 编码帧。
* **自适应比值解调机制**
不依赖死宽度的微秒延迟。检测同步头低电平(时间在 1500~60000us 之间)与高电平时间(时间在 50~2500us 之间),算出两者的时序比例。
*`31` 作为低电平对高电平的时钟倍率基准(高低比值支持在 `15``48` 倍范围)。
* 计算出每 bit 的标准时钟周期 `T = low_time / 31`,根据此动态 `T` 进行后续 24 个数据位(高/低电平宽度)的比值反解。
## 2. 接口与函数说明
* `void RF_Init(void)`:配置射频芯片引脚方向,初始化控制端口电平。
* `bit EV1527_Decode(u32 *out_addr, u8 *out_type)`
进行射频接收包解码尝试。
* 首先通过计数检测大于 `1500us` 的同步低电平前导信号。
* 自适应计算时钟基准 `T`
* 连续接收 24 位宽数据:如果某个数据位的高电平比低电平长,则认为该位为 `1`;反之为 `0`
* 正常解码成功将 20 位地址存入 `out_addr`,后 4 位数据存入 `out_type` 并返回 `1`;否则返回 `0`
* `void EV1527_Transmit(u32 addr, u8 data_code)`
主动发射一帧数据。生成同步头,并按 `1` 码(高电平 3T, 低电平 1T`0` 码(高电平 1T, 低电平 3T依次驱动发射引脚电平持续多帧以确保接收方捕获。
* 该函数被手环用作向 IPC 摄像头主动对码绑定(`data_code = 0x01`)。
* 该函数也用于手环主动发射 SOS 紧急呼救包(`data_code = 0x08`),此时传入手环自身的出厂固定 ID `bracelet_factory_id`
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes V2 -->