docs: 根据架构.odg重新设计重构手环系统的分层事件驱动APP框架设计文档
This commit is contained in:
@@ -1,39 +1,27 @@
|
||||
# 模块拆分 - 自适应 RF 解码与发射 (Docs/50_module-breakdown/mod-rf.md)
|
||||
# 模块拆分 - 自适应 RF 解码事件源 (Docs/50_module-breakdown/mod-rf.md)
|
||||
|
||||
本模块描述 LR690L 433MHz 射频物理收发的控制、自适应宽限时间比值解码机制以及对码/呼救编码包的发射。
|
||||
本模块描述 LR690L 433MHz 无线接收的自适应比值解调机制、主动射频数据发送、以及其作为事件产生者投递对码/报警事件的过程。
|
||||
|
||||
## 1. 模块职责说明
|
||||
|
||||
* **职责范围**:
|
||||
1. 配置射频芯片接收 GPIO 与发射 GPIO 的电平方向。
|
||||
2. **自适应比值解调算法**:
|
||||
EV1527 协议数据速率变化范围较宽。本模块采用自适应宽度比值解调机制:
|
||||
* 捕获到一个低电平维持时间介于 1500us~60000us 之间的脉冲,判定为同步前导头。
|
||||
* 抓取该帧的标准时钟周期基准 `T = low_time / 31`(前导低电平占 31 个时钟周期 T,允许 T 的宽度随环境在宽限范围内自适应计算)。
|
||||
* 连续捕获 24 位宽数据:每个 bit 的电平变化依据其高低电平的宽幅比例(1:3 对应 0,3:1 对应 1)反解出对应的数据位。
|
||||
3. 解析出 24 位载波包:前 20 位为无线探测器的出厂唯一地址码(Address Code),后 4 位为状态数据码(Data Code)。
|
||||
4. **数据包主动发送**:
|
||||
将手环 Factory ID 编码为一帧 EV1527 数据,通过物理发射引脚输出同步头及 24 位调制波形,连发多遍以确保 IPC 接收质量。
|
||||
1. **事件产生者 (Event Producer)**:当物理引脚 `P0.0` (RF_RX_DATA) 沿中断触发,射频解调成功后,模块产生 `RF_PAIR_EVENT` (对码) 或 `RF_ALARM_EVENT` (报警) 并投递至系统事件总线。
|
||||
2. **自适应解调算法**:
|
||||
* 捕获 1500us~60000us 的同步低电平,动态计算时钟基准 `T = low_time / 31`。
|
||||
* 连续解调 24 位宽数据:1:3 对应 0 码,3:1 对应 1 码,计算出 20 位地址码与 4 位状态数据码。
|
||||
3. **屏蔽接收 0x08 SOS 码**:手环被动接收到数据码为 `0x08` 的载波信号时,强制过滤忽略,不产生任何事件。仅保留主动向外界发射 `0x08` 求救码的能力。
|
||||
4. **主动发送驱动**:在应用层请求下,使能 `P0.1` (RF_TX) 和数据线 `P0.3` (RF_TX_DAT),连续发射多遍调制数据(如对码绑定 `0x01` 或求救包 `0x08`)。
|
||||
|
||||
---
|
||||
|
||||
## 2. 业务状态射频数据编码定义
|
||||
## 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 (接收脚的沿中断)。
|
||||
* `void RF_Init(void)`:配置 `P0.0~P0.3` 物理引脚。使能接收控制 `RF_RX = 1`。使能引脚电平变化中断用于休眠唤醒。
|
||||
* `bit EV1527_Decode(u32 *out_addr, u8 *out_type)`:
|
||||
主循环轮询调用。如果捕获到合法同步头且成功解调出 24 位数据流,则输出 `out_addr` 和 `out_type` 并返回 1,否则返回 0。
|
||||
被主循环 `main.c` 轮询轮空调用。
|
||||
* 通过状态标志检测引脚跳变沿。
|
||||
* 若解调出合法 24 位数据,填入 `out_addr` 和 `out_type`,返回 1;否则返回 0。
|
||||
* `void EV1527_Transmit(u32 addr, u8 data_code)`:
|
||||
主动发射数据。连发至少 5 遍,每遍间歇 20ms,产生满足 T 基准的同步码头、`1` 码时序(高 3T 低 1T)和 `0` 码时序(高 1T 低 3T)。
|
||||
由主动发送 App 调度。产生前导头及 24 位电平时序。连续发送 5 遍,以确保 IPC 摄像头可靠捕获。
|
||||
|
||||
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes V2 -->
|
||||
|
||||
Reference in New Issue
Block a user