wangfq c879ed04e2 fix(vd960DBN): 0x8F 接入 DBN 私有指令处理器 + net_srv 裸 printf + devlog 行尾
按用户 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 工具链)。
2026-09-10 16:41:09 +08:00

vd_960 — DLD960 四通道车辆检测器(双 MCU 架构)

当前发布:vd960DBN V1.02.052026-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)。
  • 支持 OTACH32V208 经蓝牙小程序 OTAAT32F421 经 CH32V208 串口透传 ISP 升级。
  • 地感配置存储于 AT32F421,可经 小程序↔BLE↔CH32V208↔UART↔AT32F421 链路读写。

详见 docs/DLD960硬件资源.md

子项目

子项目 目录 MCU 固件版本 功能
vd960Loop vd960Loop/ AT32F421 1.0 线圈驱动、频率采样、车辆检测算法、0x7F 串口上报
vd960DBN vd960DBN/ CH32V208 1.02.05 蓝牙管理、TCP/IPWCHNET)、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、initializeextra_info 含 imei/iccid)、event_report 平台必答、设备时钟同步、脱机日志(事件/快照流)、Loop 远程 OTA(ota_* 命令,先存后刷)、4G 通道适配(方案 C:Air780 协议转换,标准 JSON 命令面 + linkV1.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

开发环境

  • vd960LoopKeil MDK / AT32 IDEARM Cortex-M4ARMCC V5)、FreeRTOS V10.4.3
  • vd960DBNMounRiver StudioRISC-V)、WCH BLE 协议栈 + WCHNET
  • 调试口:Loop MCU TTL Tx3.3V 9600 8N1);DBN 侧 PRINT 串口

版本发布流程

  1. 确认 vd960Loopvd960DBN 固件按同一协议版本联调通过;
  2. 更新两侧 cmcng.hFIRMWARE_VER
  3. 更新 CHANGELOG.md 与各 devlog 修订记录;
  4. 打 tagvX.Y.Z)推送 Gitea,并在 Gitea Releases 挂发布说明与固件产物(hex/bin)。
S
Description
车检器 DLD960 嵌入式软件 — 双MCU架构(AT32F421+CH32V208)
Readme
5.4 MiB
2026-08-21 09:07:40 +08:00
Languages
C 98.1%
Python 0.9%
Assembly 0.6%
CMake 0.2%
Linker Script 0.2%