c879ed04e2a1baf8ae3e5073bb562d053f8236fc
按用户 2026-09-10 四条指示: 1) 0x8F 下行的"本地处理"明确为 CH32V208GBU6 私有指令 —— 只作用在自身读写配置上, 一般不转发。实现: 不再留空壳计数, 直接复用 BLE 侧同一个分发器 manage_dbn_ble_default() (dbn_ble_srv.c:729)。两侧帧布局完全一致 (pkg[1]=Addr, pkg[2]=LEN, pkg[3]=CMD, pkg[4..]=Value), 零适配。 响应仍走 g_buf_ble_response -> BLE 通知; 不回 4G —— Air780 侧 parser 只认 0x7F, 回 0x8F 也没人接。 增加 OTA 门控: g_flag_counter_ota.flag != 0 时拒绝私有指令 —— 私有指令会写自身配置(碰 flash), 与 OTA 刷写并发是自找麻烦。 魔数宏改用 dbn_ble_srv.h 的 MAGIC_BYTE_DBN_DEFAULT, 不再硬编码 0x8F。 2) 0x7D 帧: 删除/不理会。V1.11 曾提的 DBN<->Air780 握手/配置同步构想作废, 代码里本就没实现, 正式协议也从未收录。devlog 待办项移除, 记入"已定案"。 3) net_srv.c:125 裸 printf() -> PRINT。该文件本已用 PRINT 53 处, 无需补 include。 DEBUG=0 时随 PRINT 一起消失, 不再出现"往未初始化的 USART1 写字节"。 4) devlog.md 行尾统一 CRLF (修复 132 个孤立 LF: 顶部 V1.13 条目原为 LF)。 验证 (host 单测, 代码从 usart_biz.c 原样抽取, gcc -Wall -Wextra -Werror 零警告): 15 组用例全部通过, 其中新增: - 0x8F -> manage_dbn_ble_default 被调用 1 次, 传入 len==全帧长, 内容逐字节一致, 未转发 - OTA 期间 0x8F -> 处理器未被调用, 但仍计数 (可观测) 原有 13 组 (魔数分流/最大帧/坏帧回找魔数/截断帧不丢帧/LEN 非法/0x9F 忽略...) 保持通过。 待板级验证: 需 MounRiver 工具链编译 + 实机 (本机无 riscv 工具链)。
vd_960 — DLD960 四通道车辆检测器(双 MCU 架构)
当前发布:vd960DBN V1.02.05(2026-08-21,DBN 单侧更新)· 完整版本见 CHANGELOG.md
产品概述
DLD960 是一款基于环形线圈检测原理的四通道车辆检测器,支持网口(TCP JSON / IoT MQTT)、蓝牙(小程序配置 + OTA)、4G 扩展(RFU),面向停车场出入口控制、流量计数、会车控制等场景。
产品型号:DLD960GA
硬件架构(双 MCU)
┌─────────────────────────────────────────┐
线圈1~4 ──────────► AT32F421 (vd960Loop) │
(TMR3 输入捕获) │ · 四路线圈驱动/频率采样 │
继电器1~4 ◄───────│ · 车辆检测算法(IIR/斜率限幅/基线跟踪) │
└───────────────┬─────────────────────────┘
│ UART 0x7F 协议 @192000
┌───────────────▼─────────────────────────┐
蓝牙(小程序) ◄────► CH32V208 (vd960DBN) │
网口 ETH ◄────►│ · TCP JSON :5960 / IoT MQTT 双主题 │
4G(RFU) ◄────►│ · BLE 配置 + OTA、Loop MCU ISP 透传 │
│ · 参数/日志外部存储 │
└─────────────────────────────────────────┘
| 芯片 | 型号 | 主频 | Flash | SRAM | 职责 |
|---|---|---|---|---|---|
| 检测 MCU | AT32F421 (Cortex-M4) | 120MHz | 64KB | 16KB | 四路线圈信号采集与车辆检测算法 |
| 通信 MCU | CH32V208 (RISC-V) | 144MHz(实际 120MHz) | 128KB | 64KB | 蓝牙、网口、双路 TTL 串口(内部互联 + 4G 扩展)、外部存储 |
- 四路线圈、四个双路继电器,每路线圈两级调频电容(33nF/10nF)。
- 支持 OTA:CH32V208 经蓝牙小程序 OTA;AT32F421 经 CH32V208 串口透传 ISP 升级。
- 地感配置存储于 AT32F421,可经 小程序↔BLE↔CH32V208↔UART↔AT32F421 链路读写。
子项目
| 子项目 | 目录 | MCU | 固件版本 | 功能 |
|---|---|---|---|---|
| vd960Loop | vd960Loop/ |
AT32F421 | 1.0 | 线圈驱动、频率采样、车辆检测算法、0x7F 串口上报 |
| vd960DBN | vd960DBN/ |
CH32V208 | 1.02.05 | 蓝牙管理、TCP/IP(WCHNET)、MQTT、串口桥接、4G 扩展(RFU) |
⚠ 发布约束:自协议 V1.05 起(variation 2B无符号 → 3B有符号),Loop 固件与 DBN 固件必须同版本配套发布,禁止混刷。
产品文档(docs/)
| 文档 | 版本 | 说明 |
|---|---|---|
| DLD960_产品手册.md | V1.03 | 面向安装调试与使用:接口、指示灯、线圈施工、配置、故障排查 |
| DLD960_技术规格书.md | V1.03 | 完整技术参数:检测规格、灵敏度、算法机制、接口、协议矩阵 |
协议文档(docs/)
| 文档 | 版本 | 适用层 | 说明 |
|---|---|---|---|
| DLD960Loop_串口通信协议.md | V1.05 | Loop MCU ↔ DBN MCU | 0x7F 帧、0xC0 传感主动上报、variation 3B 有符号 |
| DLD960_串口通信协议.md | V1.01 | 整机 TTL 串口 | 设备管理、参数配置、数据上报 |
| DLD960_TCP_JSON协议.md | V1.03 | 以太网 TCP :5960 | 鉴权 + 命令 + event_report 客户端必答 + 脱机日志(事件/快照流) |
| DLD960_IoT_MQTT协议.md | V1.13 | 云平台 MQTT | 双主题 {sn}/srv+{sn}/dev、initialize(extra_info 含 imei/iccid)、event_report 平台必答、设备时钟同步、脱机日志(事件/快照流)、Loop 远程 OTA(ota_* 命令,先存后刷)、4G 通道适配(方案 C:Air780 协议转换,标准 JSON 命令面 + link,V1.12) |
| DLD960_BLE协议.md | V1.03 | 蓝牙 BLE | 帧格式 + 分包 + 配置命令全表(0x09~0x24/0x31/0x8A/0x92/0xC5,未实现如实标注)+ 脱机日志(OFFLOG_STAT/QUERY/CLEAR)+ 传感快照(SNAP_STAT/QUERY/CLEAR)+ 透传(0x7F/0x9F) |
| DLD960硬件资源.md | — | 硬件 | 双 MCU IO 分配、继电器、指示灯、拨码 |
开发文档
| 文档 | 说明 |
|---|---|
| vd960Loop/docs/devlog.md | 检测算法开发日志(IIR、斜率限幅、基线冻结、时间量单位演进) |
| vd960DBN/docs/devlog.md | 通信固件开发日志(WCHNET、MQTT 稳定性、event_report 可靠上报) |
| vd960Loop/docs/acceptance-standard.md | 检测算法验收标准 |
| vd960Loop/docs/variation-analysis.md | variation 上报量分析报告(基线 vs 当前值三时钟关系) |
| vd960DBN/docs/incidents/ | 现场事故分析归档 |
配套工具
| 工具 | 目录 | 说明 |
|---|---|---|
| DBNetClient | DBNetClient/ |
TCP JSON 协议桌面测试工具(Python + tkinter,零第三方依赖) |
| DBNMQTTool | DBNMQTTool/ |
IoT MQTT 协议测试工具(Python + PySide6 + paho-mqtt,双主题 UI) |
开发环境
- vd960Loop:Keil MDK / AT32 IDE(ARM Cortex-M4,ARMCC V5)、FreeRTOS V10.4.3
- vd960DBN:MounRiver Studio(RISC-V)、WCH BLE 协议栈 + WCHNET
- 调试口:Loop MCU TTL Tx(3.3V 9600 8N1);DBN 侧 PRINT 串口
版本发布流程
- 确认
vd960Loop与vd960DBN固件按同一协议版本联调通过; - 更新两侧
cmcng.h的FIRMWARE_VER; - 更新
CHANGELOG.md与各 devlog 修订记录; - 打 tag(
vX.Y.Z)推送 Gitea,并在 Gitea Releases 挂发布说明与固件产物(hex/bin)。
Releases
4
vd960DBN V1.02.05(DBN 单侧发布)
Latest
Languages
C
98.1%
Python
0.9%
Assembly
0.6%
CMake
0.2%
Linker Script
0.2%