From 5f70f59530a9635b2b6d8dbae902172591c5d6ff Mon Sep 17 00:00:00 2001 From: wangfq Date: Fri, 24 Jul 2026 11:57:15 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BC=80=E5=8F=91=E6=97=A5=E5=BF=97=20?= =?UTF-8?q?=E2=80=94=20RS485=20=E5=8D=8F=E8=AE=AE=E8=B8=A9=E5=9D=91=20+=20?= =?UTF-8?q?=E5=9B=9B=E7=BA=A7=E7=81=B5=E6=95=8F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEVELOPMENT_LOG.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 DEVELOPMENT_LOG.md diff --git a/DEVELOPMENT_LOG.md b/DEVELOPMENT_LOG.md new file mode 100644 index 0000000..58af897 --- /dev/null +++ b/DEVELOPMENT_LOG.md @@ -0,0 +1,60 @@ +# DLD154Pro 开发日志 + +## 2026-07-24 — RS485 700BS 协议 & 四级灵敏度 + +### RS485 700BS 从机协议 (Commit: ab46931 → 2d7a5d7) + +**协议概述** + +| 项目 | 说明 | +|------|------| +| 物理层 | RS485 半双工, 9600 8N1, PA14=TX PA15=RX PA13=RE | +| 帧格式 | 主机 3 字节 (STX ADDR XOR), 从机 3~9 字节变长 | +| 心跳 | 空闲 5s / 故障(线圈断开) 1s / 事件(car_state翻转)立即 | +| 命令 | 0xFA 查询状态, 0x1B 查询频率, 0x2C 复位线圈, 0x3D 查询DIP | + +**踩坑记录** + +1. **UART0 API 不兼容** — CH592 SDK 中 `UART0_GetITFlag()` 是无参宏,`UART0_ClearITFlag()` 不存在。改用 `switch(UART0_GetITFlag())` 标准模式。 +2. **`while(R8_UART0_TFC == 0)` 死循环** — TX FIFO 空时 `TFC==0` 条件永真,主循环卡死,地感不工作。改为 `!= 0`(等 FIFO 空)。 +3. **`rs485_init()` 从未被调用** — `gpio_uart_init()` 只写了注释没调用,UART0/GPIO 未初始化。 +4. **频率为 0** — `g_loop_acs_info.frequent` 只在 BLE 报告路径 `usart_packet_processing_acs_loop` 中更新,BLE 断开时永不更新。 +5. **频率非实时** — 改用 `g_loop_acs_info.loop_capvd` 仍有问题:该值被 `flag_change` 门控冻结(上电/车辆进出时 `flag_change=1`→capvd 不更新)。最终改用 `loop1_CAPVD`(`vd1_task()` 每次实时 IIR 滤波值)。 + +**最终频率计算** + +```c +freq = (uint64_t)FREQ_SYS * loop1_LPCNT / loop1_CAPVD + 360 +``` + +直接从 TMR0 捕获值 + IIR 滤波值实时计算,不经过 BLE 通道,不受 `flag_change` 冻结影响。 + +### 四级灵敏度 (Commit: 4964e0d) + +`MAX_LOOP_SENS_AMOUNT`: 3 → 4 + +| 档位 | 进入阈值 (sens_in) | 离开阈值 (sens_out) | +|------|--------------------|--------------------| +| 1 | 108 | 81 | +| 2 | 54 | 32 | +| 3 | 28 | 16 | +| 4 | 14 | 12 | + +阈值 = `Origin * sens_in / 65536`(进入)、`Origin * sens_out / 65536`(离开)。 + +--- + +## 历史记录 + +### BLE RS485 配置 (Commit: 441a3e6) +- BLE 新增 RS485 地址/波特率读写特征值 +- 空闲关蓝牙超时机制 +- 功能码细分(区分读写操作) + +### 呼吸灯 (Commit: f89457c) +- PB23 PWM11 呼吸灯从 ~3.8s 加速至 ~1.9s 周期 +- ISP 烧录时需关闭外部复位 `RB_CFG_RESET_EN=0`(运行时 RO 不可改) + +### 算法移植 (基线) +- 移植 DLD154V4B V2.0 检测算法:IIR τ≈32ms, WINDOW_ORIGIN=5s, 斜率限幅 5% +- TMR0 输入捕获测频, TMR1 5ms 定时状态机