docs: optimize all module breakdown files with architect-level details

This commit is contained in:
2026-07-09 18:42:00 +08:00
parent 9f54220e27
commit 039029ab20
7 changed files with 183 additions and 160 deletions

View File

@@ -1,30 +1,39 @@
# 模块拆分 - 自适应 RF 解码与发射 (Docs/50_module-breakdown/mod-rf.md)
本模块管理射频芯片 GPIO 初始化、433MHz EV1527 解调接收(宽限时比值算法)与射频打包主动发射。
本模块描述 LR690L 433MHz 射频物理收发的控制、自适应宽限时比值解码机制以及对码/呼救编码包的发射。
## 1. 模块职责说明
* **职责范围**
1. 初始化射频接收和发射控制引脚
2. 对射频输入引脚进行高低电平时序轮询解码,计算其高低电平比值,实现自适应 EV1527 24位数据解码。
3. 在特定系统请求下(例如发送 SOS 呼救或与 IPC 对码绑定),主动通过发射引脚发出 EV1527 编码帧。
* **自适应比值解调机制**
不依赖死宽度的微秒延迟。检测同步头低电平(时间在 1500~60000us 之间)与高电平时间(时间在 50~2500us 之间),算出两者的时序比例
* `31` 作为低电平对高电平的时钟倍率基准(高低比值支持在 `15``48` 倍范围)
* 计算出每 bit 的标准时钟周期 `T = low_time / 31`,根据此动态 `T` 进行后续 24 个数据位(高/低电平宽度)的比值反解
1. 配置射频芯片接收 GPIO 与发射 GPIO 的电平方向
2. **自适应比值解调算法**
EV1527 协议数据速率变化范围较宽。本模块采用自适应宽度比值解调机制:
* 捕获到一个低电平维持时间介于 1500us~60000us 之间的脉冲,判定为同步前导头。
* 抓取该帧的标准时钟周期基准 `T = low_time / 31`(前导低电平占 31 个时钟周期 T允许 T 的宽度随环境在宽限范围内自适应计算)
* 连续捕获 24 位宽数据:每个 bit 的电平变化依据其高低电平的宽幅比例1:3 对应 03:1 对应 1反解出对应的数据位
3. 解析出 24 位载波包:前 20 位为无线探测器的出厂唯一地址码Address Code后 4 位为状态数据码Data Code
4. **数据包主动发送**
将手环 Factory ID 编码为一帧 EV1527 数据,通过物理发射引脚输出同步头及 24 位调制波形,连发多遍以确保 IPC 接收质量。
## 2. 接口与函数说明
---
* `void RF_Init(void)`:配置射频芯片引脚方向,初始化控制端口电平。
## 2. 业务状态射频数据编码定义
* **对码绑定发送 (LIAISON IPC)**
* 数据码固定为 **`0x01`** (0001),源地址为手环 20-bit 出厂 Factory ID周期性连续发射。
* **本地主动 SOS 呼救 (SOS EMIS)**
* 数据码固定为 **`0x08`** (1000),源地址为手环 20-bit 出厂 Factory ID以 2 秒为周期循环向外发射。
* **传感器自动识别对码**
* 手环被动接收 433MHz 对码信号。若捕获成功,状态机直接**依据后 4 位数据码的数据值自动判断识别传感器的设备类型**(如门磁为 `0x01`,红外为 `0x02`),直接跳转到对码微调序号页,类型与大图标只读高亮。
---
## 3. 接口与函数说明
* `void RF_Init(void)`:初始化射频物理端口,使能 INT2 (接收脚的沿中断)。
* `bit EV1527_Decode(u32 *out_addr, u8 *out_type)`
进行射频接收包解码尝试
* 首先通过计数检测大于 `1500us` 的同步低电平前导信号。
* 自适应计算时钟基准 `T`
* 连续接收 24 位宽数据:如果某个数据位的高电平比低电平长,则认为该位为 `1`;反之为 `0`
* 正常解码成功将 20 位地址存入 `out_addr`,后 4 位数据存入 `out_type` 并返回 `1`;否则返回 `0`
主循环轮询调用。如果捕获到合法同步头且成功解调出 24 位数据流,则输出 `out_addr``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`
主动发射数据。连发至少 5 遍,每遍间歇 20ms产生满足 T 基准的同步码头、`1`时序(高 3T 低 1T `0`时序(高 1T 低 3T
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes V2 -->