From 31f5066052108e87375d6f9d70262e3d5fe9aa55 Mon Sep 17 00:00:00 2001 From: Antigravity IDE Date: Thu, 16 Jul 2026 18:25:16 +0800 Subject: [PATCH] =?UTF-8?q?fix(rf):=20=E5=8D=87=E7=BA=A7=20EV1527=20?= =?UTF-8?q?=E4=B8=BA=E5=AE=8C=E6=95=B4=2024=20=E4=BD=8D=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E5=AF=BB=E5=9D=80=EF=BC=8C=E5=BD=BB=E5=BA=95=E5=88=86=E6=B8=85?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E6=8C=89=E9=94=AE/=E5=9E=8B=E5=8F=B7?= =?UTF-8?q?=E9=85=8D=E5=AF=B9=E6=8A=A5=E8=AD=A6=E7=9A=84=20Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Drivers/rf.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Drivers/rf.c b/Drivers/rf.c index 8587312..6b8eb94 100644 --- a/Drivers/rf.c +++ b/Drivers/rf.c @@ -295,7 +295,7 @@ bit EV1527_Decode(u32 *out_addr, u8 *out_data) Uart_SendHex16(T); Uart_SendString("us\r\n"); - // ====== 4. 自适应决策:组合成地址及数据位 ====== + // ====== 4. 自适应决策:组合成 24 位完整射频数据帧 ====== for (i = 0; i < 24; i++) { // 比较本位高低电平持续宽度: @@ -303,24 +303,20 @@ bit EV1527_Decode(u32 *out_addr, u8 *out_data) // 否则高电平短,判定为 0 (1T高+3T低)。 if (raw_h[i] > raw_l[i]) { - if (i < 20) addr = (addr << 1) | 1; // 高 20 位写入物理地址 - else dat = (dat << 1) | 1; // 低 4 位写入状态码 + addr = (addr << 1) | 1; // 写入 24 位物理地址与状态数据相结合的最终值 } else { - if (i < 20) addr = (addr << 1); - else dat = (dat << 1); + addr = (addr << 1); } } - *out_addr = addr; - *out_data = dat; + *out_addr = addr; // 输出包含状态数据的 24 位完整射频编码作为传感器唯一 ID + *out_data = (u8)(addr & 0x0F); // 输出低 4 位作为指令/状态,保持调用兼容性 // 串口打印解码最终结果 - Uart_SendString("Decoded ADDR: 0x"); - Uart_SendHex20(addr); - Uart_SendString(", DATA: 0x"); - Uart_SendHex4(dat); + Uart_SendString("Decoded 24bit ADDR: 0x"); + Uart_SendHex32(addr); Uart_SendString("\r\n"); return 1; // 成功解析