Files
wangfq e3a27af24f feat: 检测算法移植 DLD154V4B V2.0, 删除旧线圈算法
- 自适应测量窗 2^19 (~8.74ms @60MHz), IIR 79/256 + 斜率限幅 5%
- 稳定期 128 窗快速收敛; 基线跟踪窗 500 + 冻结保护(超时+稳定性双条件)
- 进入确认 3 次; 平坦性三条件离开 (CN200910309382), 阈值按新幅值基准缩放
- 删除 FltHistoryManager/SecondOrderState/StageRangeConfig/二次判断/FUNCTION_A/B
- 断线重连/有限存在超时: 全复位重建基线; 安全复位恢复启用; 灵敏度开关运行时生效
- BLE: loop_capvd 去掉 <<5, condition 改用 g_env_activity, variation 幅值基准 8x
- 修复 update_moving_average window uint8 截断; 稳定期计数器改全局可复位
- FIRMWARE_VER 4.00 -> 4.20; 新增 README.md 与 docs/devlog.md
2026-07-18 23:30:12 +08:00

90 lines
3.8 KiB
Markdown
Raw Permalink 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.
# DLD110SV4 单线圈蓝牙车辆检测器
## 硬件规格
| 项目 | 参数 |
|------|------|
| MCU | 沁恒 CH591R (RISC-V, BLE 5.1) |
| 主频 | 60MHz (PLL) |
| Flash | 192KB (BLE OTA 三段式布局, 应用区 28KB) |
| RAM | 32KB (应用可用约 18KB, BLE 协议栈常驻) |
| 通道数 | 1 路环形线圈 |
| 对外接口 | BLE (小程序读写参数 / OTA / 状态上报)、双继电器 |
| 指示灯 | 红色电源灯 (硬件直连)、绿色状态灯 LEDA |
| 灵敏度 | 滑动开关 3 级 + BLE 可配置灵敏度表 |
## IO 资源分配
### 线圈测量
| 引脚 | 标识 | 外设 | 功能 |
|------|------|------|------|
| PA9 | LP | TMR0 | 线圈信号输入捕获 (FallEdge_To_FallEdge) |
| PA12 | F1 / FLEVEL_H | GPIO | 调频电容 33nF (0=接入) |
| PA13 | F2 / FLEVEL_L | GPIO | 调频电容 10nF (0=接入) |
频率档位 (loopFreq_Level): 高频 / 中高 / 中低 / 低频, 由两只电容组合切换。
### 输出与指示
| 引脚 | 标识 | 功能 |
|------|------|------|
| PA8 | RLY1 | 功能继电器: 存在 / 进入脉冲 / 离开脉冲 (output_mode 配置) |
| PB23 | RLY2 | 存在继电器 |
| PB22 | LEDA | 绿灯: 有车亮 / 无车灭; 稳定期 200ms 快闪; 断线 150ms 快闪 |
### 滑动开关
| 引脚 | 标识 | 功能 |
|------|------|------|
| PA14 | KEY_SA1 | 灵敏度选择 (与 SA2 组合出 3 级) |
| PA15 | KEY_SA2 | 灵敏度选择 |
SA1=1/SA2=1 → 0 档(低); SA1=0/SA2=1 → 1 档(中); SA1=1/SA2=0 → 2 档(高)。
## 检测算法 (V2.0, 移植自 DLD154V4B)
- **自适应测量窗**: `LPCNT = 2^19 / Xn`, 测量窗时长 ~8.74ms @60MHz, 与线圈频率无关, `Value = ΣXn ≈ 524288`
- **一阶 IIR** α=79/256 + **斜率限幅 5%** (拒绝 EMI 瞬态尖峰)
- **稳定期**: 上电/复位后 128 窗 (~1.1s) 小窗口(100)快速收敛, 绕过滤波
- **基线跟踪**: 窗口 500 (~4.4s); **冻结保护**: CAPVD 偏离 4×阈值时暂停跟踪, 持续 ~8.7s 且波动 ±2% 以内才强制接受新基线 (温漂/换线圈自适应, 慢速进车不误吸收)
- **进入判定**: `CAPVD < Origin - Origin×sens_in/65536`, 连续 3 次确认
- **离开判定**: 平坦性三条件 (幅值回归 + 一阶平坦 + 二阶平坦, 专利 CN200910309382), 滞回阈值 sens_out
- **有限存在超时 / 线圈断开重连**: 全复位重建基线, 继电器保持释放
- **安全复位**: loopSafe_Timeout 非 0 时, 有车持续超时后重新初始化基线
## 工程结构
```
DLD110SV4/
├── BLE/
│ ├── DLD110S_Peripheral_28K/ # 主应用 (检测算法 + BLE DBN 服务)
│ │ ├── APP/
│ │ │ ├── peripheral_main.c # 主流程 + 检测算法 + TMR0/TMR1 ISR
│ │ │ ├── dbn_ble_srv.c # DBN BLE 协议服务 (小程序对接)
│ │ │ ├── peripheral.c # BLE 外设角色管理
│ │ │ └── storage.c # 参数存储 (EEPROM)
│ │ ├── Profile/ # GATT Profile
│ │ ├── Startup / Ld # 启动文件 / 链接脚本
│ │ └── DLD110S_Peripheral_28K.wvproj
│ ├── 592OnlyUpdateApp_IAP_28K/ # OTA IAP 引导
│ ├── 592OnlyUpdateApp_JumpIAP_28K/ # 跳转 IAP
│ ├── HAL/ # MCU / RTC / KEY / LED
│ └── LIB/ # CH59x BLE ROM 库
├── SRC/ # StdPeriphDriver / RVMSIS / Startup / Ld
├── docs/ # 硬件资源文档 / CH592 datasheet / devlog
└── tools/
```
## 开发环境
- IDE: MounRiver Studio (wvproj)
- 调试串口: UART0 (PA14 TX, 仅 DEBUG 编译, 230400bps; 与 KEY_SA1 复用)
- 版本: 见 `APP/include/cmcng.h` (`FIRMWARE_VER`)
## 文档
- `docs/DLD110SV4硬件资源.md` — 硬件 IO 说明
- `docs/devlog.md` — 开发日志
- `docs/CH592DS1.PDF` — CH592/591 datasheet