diff --git a/CHANGELOG.md b/CHANGELOG.md index 471c780..2411461 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,121 +1,150 @@ -# CHANGELOG — vd_960 (DLD960) - -本文件记录 DLD960 整机(双 MCU 配套)的版本发布历史。 -单侧固件的细粒度演进见 `vd960Loop/docs/devlog.md` 与 `vd960DBN/docs/devlog.md`。 - ---- - -## vd960DBN V1.02.01 — 2026-08-17(DBN 通信板单侧更新) - -> 本次为 **vd960DBN 单侧发布**(Loop 固件未变,协议均未变更,可正常配套)。 - -**配套版本矩阵** - -| 组件 | 版本 | -|------|------| -| vd960DBN 固件 (CH32V208, DLD960GA) | **1.02.01** | -| vd960Loop 固件 (AT32F421) | 1.0(不变) | -| DLD960Loop 串口协议(MCU 间 0x7F) | V1.05(不变) | -| DLD960 TCP JSON 协议(:5960) | V1.02(不变) | -| DLD960 IoT MQTT 协议 | V1.06(不变) | -| DLD960 BLE 协议 | V1.02(不变) | - -### 🔴 P0 稳定性修复:频繁"复位"根因闭环(栈溢出) -- **现象**:恢复快照区功能后设备 100~180ms 一轮"复位"循环(RSTSCKR 无复位标志 = PC 跑飞,非硬件复位) -- **根因**:`.bss ≈ 41.7KB` 挤占 RAM → 栈仅 ~1.9KB → `load_cfg/output_cfg` 的 printf 栈峰值触顶 → 覆盖返回地址 → PC 跑飞跳回 0 重启 -- **修复**: - - RAM 瘦身两轮:ETH_MAX_PACKET_SIZE 1520→768、RECE_BUF_LEN 1400→1024、ARP 表 50→16、MQTT 发送缓冲 1024→800、loop_data payload 1400→800 → **栈 1.9KB → 6.3KB** - - load_cfg 字符串 0 终止保险(防 Flash 配置字符串 %s 越界打印) - - 快照区初始化延后至开机 3s(避开启动早期 SPI 重负载窗口,非根因但减压) - -### 🟢 可靠性:UART2 RX DMA 循环接收 -- 根治遗留问题"PRINT 关中断(~7.4ms)期间 UART2 丢字节 → checksum fail(1-3 分钟一次)" -- DMA1_Ch6 循环模式硬件收字节(不依赖 CPU 中断),主循环轮询消费;512B 环形缓冲 + 溢出保护 -- 帧解析状态机移入主循环,消除中断竞争 - -### 🟢 资源与代码卫生 -- .bss 46KB → 41.7KB;中断路径大数组 static 化(栈峰值 -1.8KB) -- 调试代码结案清理:移除 BOOT_CNT 诊断打印、_dbg_cnt 心跳打印;保留 fault_diag 基础设施(未来疑难杂症复用) - -### 📋 其他 -- 固件版本三段式:`FIRMWARE_VER="1.02.01"`(MAIN=1 SUB=2 SUBSUB=1) - -### 已知约束 -- 设备无 RTC,时钟同步依赖平台下发(校准前 ts 为上电秒数) -- BLE 上报版本为 MAIN/SUB 两字节(1.02),SUBSUB 仅字符串上报(MQTT/TCP JSON) -- 快照区延后 3s 初始化:开机 3s 内传感数据不落盘(设计接受) -- UART2 RX DMA 占用 DMA1_Ch6(全工程唯一,无冲突) - -### 验证 -- ✅ 板级:无异常重启;MQTT(159.75.137.141:1883)、BLE 广播、配置加载正常 -- [ ] 待回归:UART2 DMA 长时间运行(checksum fail 消失)、TCP JSON 命令交互、快照 BLE 0x28/0x29/0x2A 查询 - ---- - -## V1.0.0 — 2026-07-16(首个正式发布) - -**配套版本矩阵** - -| 组件 | 版本 | -|------|------| -| vd960Loop 固件 (AT32F421) | 1.0 | -| vd960DBN 固件 (CH32V208, DLD960GA) | 1.0 | -| DLD960Loop 串口协议(MCU 间 0x7F) | V1.05 | -| DLD960 串口通信协议(TTL) | V1.01 | -| DLD960 TCP JSON 协议(:5960) | V1.02 | -| DLD960 IoT MQTT 协议 | V1.06 | - -> ⚠ 自协议 V1.05 起,Loop 固件与 DBN 固件必须同版本配套刷写,禁止混跑(variation 字段宽度变更导致帧格式不兼容)。 - -### vd960Loop(检测 MCU,AT32F421) - -**检测算法**(自 DLD154V4B 移植并四通道化,针对 M4 优化) -- 主循环 tick 50ms → **10ms**,单路 IIR(ALFA_CAP1=79,τ≈32ms,较 8051 时代快 5 倍) -- 斜率限幅 MAX_SLOPE_RATE=5%(含低基值 floor=100 防锁死) -- 进入确认 ENTRY_CONFIRM=3(连续 3 次低于阈值才判有车,抗尖峰误触发) -- 基线冻结超时 10s + ±2% 稳定性检查:温漂/换线圈可自适应,慢速进车不误吸收 -- 稳定期(上电 128 样本)旁路 IIR/限幅,窗口 100 快速收敛;常态基线窗口 500(5s 更新,噪声抑制 22×) -- 每通道可配置 hold_time(有限存在)与 relay_delay(继电器延时);有限存在超时执行**全通道重启**重建基线 - -**串口上报(0x7F 协议,UART @192000)** -- 0xC0 传感数据主动上报:频率、variation(**3B 有符号**,`Origin − CAPVD`,V1.05)、车状态 -- 时间量(通过时间/车间距)统一 **50ms 单位**;上电 3 秒抑制主动上报 -- 继电器输出次数上报;0x4A 版本查询(CAPVD→实际频率 uint64 精确换算) - -### vd960DBN(通信 MCU,CH32V208) - -**TCP JSON 服务(:5960,协议 V1.02)** -- 密码鉴权 + 18 条命令(新增脱机日志 log_stat/log_query/log_clear) -- 鉴权状态机 + 15 条命令;服务异常自动重启(3 条件 + 3 次限额 + 10min 冷却) -- event_report 客户端必答:5s 超时重发同 msg_id/原始 ts ×3 - -**IoT MQTT(协议 V1.06)** -- 双主题 `dld960/{sn}/srv` + `dld960/{sn}/dev`,消息类型由 `cmd` 区分 -- 上电 initialize 上线消息(dev_serial/model/hard_ver/soft_ver) -- loop_data 三档调度:空闲按配置间隔 / 活动 300ms / **car_state 翻转沿立即上报** -- event_report 平台必答 + 16 深环形队列,ACK 后出队;不受 report_config.enable 门控 -- 设备时钟同步方案B:平台经 report_config 下发 Unix ts,设备无 RTC 也能上报真实时间 -- 稳定性修复:mqtt_publish 缓冲溢出发垃圾包致 broker RST 风暴(现场 P0)、packet_id=0 断连、PINGREQ 保活、分批发送(MSS=576,Publish≤500B) -- loop_data 陈旧快照修复:0xC0 帧双消费路径统一摄取,事件与缓存同源 -- **脱机事件日志(W25Q32 环形 8064 条,V1.06 新增)**:log_stat / log_query / log_clear 三命令;BOOT 复位原因、MQTT 连接/断开、event ACK 超时、线圈事件、时钟锚点共 10 类;掉电不丢 - -**基础设施** -- BLE 小程序配置 + OTA;Loop MCU ISP 串口透传升级 -- WCHNET TCP/IP(listen=N / data=N+1)、simple_json 解析器 6 项 bug 修复 - -### 文档与工具 -- 四份协议文档 + 硬件资源文档齐套(见 README 协议矩阵) -- DBNetClient(TCP JSON 测试)、DBNMQTTool(MQTT 双主题测试) -- 双 MCU devlog、验收标准、variation 分析报告、现场事故归档 - -### 已知约束 -- 设备无 RTC,时钟同步依赖平台下发(校准前 ts 为上电秒数) -- CH32V208 栈资源紧张:2KB 任务栈内勿连续 PRINT,勿随意扩大全局 BSS - ---- - -## 版本号规则 - -- 整机发布 tag:`vX.Y.Z`(本仓库 git tag + Gitea Release) -- 固件版本:两侧 `cmcng.h` 的 `FIRMWARE_VER`,随整机版本同步 -- 协议文档版本:各文档内修订记录表独立演进,发布时在配套矩阵中锁定 +# CHANGELOG — vd_960 (DLD960) + +本文件记录 DLD960 整机(双 MCU 配套)的版本发布历史。 +单侧固件的细粒度演进见 `vd960Loop/docs/devlog.md` 与 `vd960DBN/docs/devlog.md`。 + +--- + +## vd960DBN V1.02.03 — 2026-08-19(DBN 通信板单侧更新) + +> 本次为 **vd960DBN 单侧发布**(Loop 固件未变,协议未变更,可正常配套)。 + +**配套版本矩阵** + +| 组件 | 版本 | +|------|------| +| vd960DBN 固件 (CH32V208, DLD960GA) | **1.02.03** | +| vd960Loop 固件 (AT32F421) | 1.0(不变) | +| DLD960Loop 串口协议(MCU 间 0x7F / 0x9F OTA) | V1.05(不变) | +| DLD960 TCP JSON 协议(:5960) | V1.03(不变) | +| DLD960 IoT MQTT 协议 | V1.07(不变) | +| DLD960 BLE 协议 | V1.02(不变) | + +### 🔧 BLE→Loop OTA 升级修复(0x9F 帧透传回 BLE) +- **现象**:UART2 RX DMA 改造后,通过 BLE 给地感(Loop MCU)OTA 升级失效 +- **根因**:DMA poll 帧解析 `lup_feed_byte()` 只认 0x7F,Loop bootloader 回的 0x9F 响应帧(pre_ok/addr_ok/data ACK)全部被吞;OTA 为**停等协议**(0xA7 WITH_BACK 每块必回 ACK),工具等不到 ACK 升级卡死 +- **修复**:新增 `lup_feed_byte_ota()` 0x9F 帧状态机(SUM 校验无 XOR);`uart2_dma_poll` 按 `g_flag_counter_ota.flag` 切换 0x9F/0x7F 解析器;`uart_srv` OTA 分支 0x9F 帧透传回 BLE + 清 flag;OTA 溢出阈值放宽 + 收帧 tick 归零 +- **验证**:gcc 隔离单测 8 断言全过;**板级 BLE OTA 全流程实测通过**(2026-08-19) +- **已知约束**:OTA 模式无自动退出机制(`g_flag_counter_ota.flag` 置 1 后需断电重启恢复 0x7F 通信),维持现状 + +### 📦 脱机日志快照流 + hex 上报(2026-08-18 已含,协议 V1.03/V1.07) +- TCP/MQTT `log_*` 命令支持 `stream=snapshot` 传感快照流(复用命令 + stream 字段,不新增命令码) +- `log_query` records 改 **hex 原始字节**上报(OfflogEvt 32B→64 hex / SnapRec 64B→128 hex,2 条快照 406B < 800B 缓冲) +- MQTT 查询命令补齐:`ssc_net_query` / `iot_net_query` / `iot_topic_query`(协议命令表全对齐) + +--- + +## vd960DBN V1.02.01 — 2026-08-17(DBN 通信板单侧更新) + +> 本次为 **vd960DBN 单侧发布**(Loop 固件未变,协议均未变更,可正常配套)。 + +**配套版本矩阵** + +| 组件 | 版本 | +|------|------| +| vd960DBN 固件 (CH32V208, DLD960GA) | **1.02.01** | +| vd960Loop 固件 (AT32F421) | 1.0(不变) | +| DLD960Loop 串口协议(MCU 间 0x7F) | V1.05(不变) | +| DLD960 TCP JSON 协议(:5960) | V1.02(不变) | +| DLD960 IoT MQTT 协议 | V1.06(不变) | +| DLD960 BLE 协议 | V1.02(不变) | + +### 🔴 P0 稳定性修复:频繁"复位"根因闭环(栈溢出) +- **现象**:恢复快照区功能后设备 100~180ms 一轮"复位"循环(RSTSCKR 无复位标志 = PC 跑飞,非硬件复位) +- **根因**:`.bss ≈ 41.7KB` 挤占 RAM → 栈仅 ~1.9KB → `load_cfg/output_cfg` 的 printf 栈峰值触顶 → 覆盖返回地址 → PC 跑飞跳回 0 重启 +- **修复**: + - RAM 瘦身两轮:ETH_MAX_PACKET_SIZE 1520→768、RECE_BUF_LEN 1400→1024、ARP 表 50→16、MQTT 发送缓冲 1024→800、loop_data payload 1400→800 → **栈 1.9KB → 6.3KB** + - load_cfg 字符串 0 终止保险(防 Flash 配置字符串 %s 越界打印) + - 快照区初始化延后至开机 3s(避开启动早期 SPI 重负载窗口,非根因但减压) + +### 🟢 可靠性:UART2 RX DMA 循环接收 +- 根治遗留问题"PRINT 关中断(~7.4ms)期间 UART2 丢字节 → checksum fail(1-3 分钟一次)" +- DMA1_Ch6 循环模式硬件收字节(不依赖 CPU 中断),主循环轮询消费;512B 环形缓冲 + 溢出保护 +- 帧解析状态机移入主循环,消除中断竞争 + +### 🟢 资源与代码卫生 +- .bss 46KB → 41.7KB;中断路径大数组 static 化(栈峰值 -1.8KB) +- 调试代码结案清理:移除 BOOT_CNT 诊断打印、_dbg_cnt 心跳打印;保留 fault_diag 基础设施(未来疑难杂症复用) + +### 📋 其他 +- 固件版本三段式:`FIRMWARE_VER="1.02.01"`(MAIN=1 SUB=2 SUBSUB=1) + +### 已知约束 +- 设备无 RTC,时钟同步依赖平台下发(校准前 ts 为上电秒数) +- BLE 上报版本为 MAIN/SUB 两字节(1.02),SUBSUB 仅字符串上报(MQTT/TCP JSON) +- 快照区延后 3s 初始化:开机 3s 内传感数据不落盘(设计接受) +- UART2 RX DMA 占用 DMA1_Ch6(全工程唯一,无冲突) + +### 验证 +- ✅ 板级:无异常重启;MQTT(159.75.137.141:1883)、BLE 广播、配置加载正常 +- [ ] 待回归:UART2 DMA 长时间运行(checksum fail 消失)、TCP JSON 命令交互、快照 BLE 0x28/0x29/0x2A 查询 + +--- + +## V1.0.0 — 2026-07-16(首个正式发布) + +**配套版本矩阵** + +| 组件 | 版本 | +|------|------| +| vd960Loop 固件 (AT32F421) | 1.0 | +| vd960DBN 固件 (CH32V208, DLD960GA) | 1.0 | +| DLD960Loop 串口协议(MCU 间 0x7F) | V1.05 | +| DLD960 串口通信协议(TTL) | V1.01 | +| DLD960 TCP JSON 协议(:5960) | V1.02 | +| DLD960 IoT MQTT 协议 | V1.06 | + +> ⚠ 自协议 V1.05 起,Loop 固件与 DBN 固件必须同版本配套刷写,禁止混跑(variation 字段宽度变更导致帧格式不兼容)。 + +### vd960Loop(检测 MCU,AT32F421) + +**检测算法**(自 DLD154V4B 移植并四通道化,针对 M4 优化) +- 主循环 tick 50ms → **10ms**,单路 IIR(ALFA_CAP1=79,τ≈32ms,较 8051 时代快 5 倍) +- 斜率限幅 MAX_SLOPE_RATE=5%(含低基值 floor=100 防锁死) +- 进入确认 ENTRY_CONFIRM=3(连续 3 次低于阈值才判有车,抗尖峰误触发) +- 基线冻结超时 10s + ±2% 稳定性检查:温漂/换线圈可自适应,慢速进车不误吸收 +- 稳定期(上电 128 样本)旁路 IIR/限幅,窗口 100 快速收敛;常态基线窗口 500(5s 更新,噪声抑制 22×) +- 每通道可配置 hold_time(有限存在)与 relay_delay(继电器延时);有限存在超时执行**全通道重启**重建基线 + +**串口上报(0x7F 协议,UART @192000)** +- 0xC0 传感数据主动上报:频率、variation(**3B 有符号**,`Origin − CAPVD`,V1.05)、车状态 +- 时间量(通过时间/车间距)统一 **50ms 单位**;上电 3 秒抑制主动上报 +- 继电器输出次数上报;0x4A 版本查询(CAPVD→实际频率 uint64 精确换算) + +### vd960DBN(通信 MCU,CH32V208) + +**TCP JSON 服务(:5960,协议 V1.02)** +- 密码鉴权 + 18 条命令(新增脱机日志 log_stat/log_query/log_clear) +- 鉴权状态机 + 15 条命令;服务异常自动重启(3 条件 + 3 次限额 + 10min 冷却) +- event_report 客户端必答:5s 超时重发同 msg_id/原始 ts ×3 + +**IoT MQTT(协议 V1.06)** +- 双主题 `dld960/{sn}/srv` + `dld960/{sn}/dev`,消息类型由 `cmd` 区分 +- 上电 initialize 上线消息(dev_serial/model/hard_ver/soft_ver) +- loop_data 三档调度:空闲按配置间隔 / 活动 300ms / **car_state 翻转沿立即上报** +- event_report 平台必答 + 16 深环形队列,ACK 后出队;不受 report_config.enable 门控 +- 设备时钟同步方案B:平台经 report_config 下发 Unix ts,设备无 RTC 也能上报真实时间 +- 稳定性修复:mqtt_publish 缓冲溢出发垃圾包致 broker RST 风暴(现场 P0)、packet_id=0 断连、PINGREQ 保活、分批发送(MSS=576,Publish≤500B) +- loop_data 陈旧快照修复:0xC0 帧双消费路径统一摄取,事件与缓存同源 +- **脱机事件日志(W25Q32 环形 8064 条,V1.06 新增)**:log_stat / log_query / log_clear 三命令;BOOT 复位原因、MQTT 连接/断开、event ACK 超时、线圈事件、时钟锚点共 10 类;掉电不丢 + +**基础设施** +- BLE 小程序配置 + OTA;Loop MCU ISP 串口透传升级 +- WCHNET TCP/IP(listen=N / data=N+1)、simple_json 解析器 6 项 bug 修复 + +### 文档与工具 +- 四份协议文档 + 硬件资源文档齐套(见 README 协议矩阵) +- DBNetClient(TCP JSON 测试)、DBNMQTTool(MQTT 双主题测试) +- 双 MCU devlog、验收标准、variation 分析报告、现场事故归档 + +### 已知约束 +- 设备无 RTC,时钟同步依赖平台下发(校准前 ts 为上电秒数) +- CH32V208 栈资源紧张:2KB 任务栈内勿连续 PRINT,勿随意扩大全局 BSS + +--- + +## 版本号规则 + +- 整机发布 tag:`vX.Y.Z`(本仓库 git tag + Gitea Release) +- 固件版本:两侧 `cmcng.h` 的 `FIRMWARE_VER`,随整机版本同步 +- 协议文档版本:各文档内修订记录表独立演进,发布时在配套矩阵中锁定 diff --git a/README.md b/README.md index 23365d0..51ccf16 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,94 @@ -# vd_960 — DLD960 四通道车辆检测器(双 MCU 架构) - -> 当前发布:**vd960DBN V1.02.01**(2026-08-17,DBN 单侧更新)· 完整版本见 [CHANGELOG.md](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 链路读写。 - -详见 [docs/DLD960硬件资源.md](docs/DLD960硬件资源.md)。 - -## 子项目 - -| 子项目 | 目录 | MCU | 固件版本 | 功能 | -|--------|------|-----|---------|------| -| vd960Loop | `vd960Loop/` | AT32F421 | 1.0 | 线圈驱动、频率采样、车辆检测算法、0x7F 串口上报 | -| vd960DBN | `vd960DBN/` | CH32V208 | 1.02.01 | 蓝牙管理、TCP/IP(WCHNET)、MQTT、串口桥接、4G 扩展(RFU) | - -> ⚠ 发布约束:自协议 V1.05 起(variation 2B无符号 → 3B有符号),**Loop 固件与 DBN 固件必须同版本配套发布**,禁止混刷。 - -## 产品文档(docs/) - -| 文档 | 版本 | 说明 | -|------|------|------| -| [DLD960_产品手册.md](docs/DLD960_产品手册.md) | V1.01 | 面向安装调试与使用:接口、指示灯、线圈施工、配置、故障排查 | -| [DLD960_技术规格书.md](docs/DLD960_技术规格书.md) | V1.01 | 完整技术参数:检测规格、灵敏度、算法机制、接口、协议矩阵 | - -## 协议文档(docs/) - -| 文档 | 版本 | 适用层 | 说明 | -|------|------|--------|------| -| [DLD960Loop_串口通信协议.md](docs/DLD960Loop_串口通信协议.md) | V1.05 | Loop MCU ↔ DBN MCU | 0x7F 帧、0xC0 传感主动上报、variation 3B 有符号 | -| [DLD960_串口通信协议.md](docs/DLD960_串口通信协议.md) | V1.01 | 整机 TTL 串口 | 设备管理、参数配置、数据上报 | -| [DLD960_TCP_JSON协议.md](docs/DLD960_TCP_JSON协议.md) | V1.03 | 以太网 TCP :5960 | 鉴权 + 命令 + event_report 客户端必答 + 脱机日志(事件/快照流) | -| [DLD960_IoT_MQTT协议.md](docs/DLD960_IoT_MQTT协议.md) | V1.07 | 云平台 MQTT | 双主题 `{sn}/srv`+`{sn}/dev`、initialize、event_report 平台必答、设备时钟同步、脱机日志(事件/快照流) | -| [DLD960_BLE协议.md](docs/DLD960_BLE协议.md) | V1.02 | 蓝牙 BLE | 帧格式 + 分包 + 脱机日志(OFFLOG_STAT/QUERY/CLEAR)+ 传感快照(SNAP_STAT/QUERY/CLEAR,0x28/0x29/0x2A),与 MQTT/TCP 同语义 | -| [DLD960硬件资源.md](docs/DLD960硬件资源.md) | — | 硬件 | 双 MCU IO 分配、继电器、指示灯、拨码 | - -## 开发文档 - -| 文档 | 说明 | -|------|------| -| [vd960Loop/docs/devlog.md](vd960Loop/docs/devlog.md) | 检测算法开发日志(IIR、斜率限幅、基线冻结、时间量单位演进) | -| [vd960DBN/docs/devlog.md](vd960DBN/docs/devlog.md) | 通信固件开发日志(WCHNET、MQTT 稳定性、event_report 可靠上报) | -| [vd960Loop/docs/acceptance-standard.md](vd960Loop/docs/acceptance-standard.md) | 检测算法验收标准 | -| [vd960Loop/docs/variation-analysis.md](vd960Loop/docs/variation-analysis.md) | variation 上报量分析报告(基线 vs 当前值三时钟关系) | -| [vd960DBN/docs/incidents/](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 串口 - -## 版本发布流程 - -1. 确认 `vd960Loop` 与 `vd960DBN` 固件按同一协议版本联调通过; -2. 更新两侧 `cmcng.h` 的 `FIRMWARE_VER`; -3. 更新 `CHANGELOG.md` 与各 devlog 修订记录; -4. 打 tag(`vX.Y.Z`)推送 Gitea,并在 Gitea Releases 挂发布说明与固件产物(hex/bin)。 +# vd_960 — DLD960 四通道车辆检测器(双 MCU 架构) + +> 当前发布:**vd960DBN V1.02.03**(2026-08-19,DBN 单侧更新)· 完整版本见 [CHANGELOG.md](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 链路读写。 + +详见 [docs/DLD960硬件资源.md](docs/DLD960硬件资源.md)。 + +## 子项目 + +| 子项目 | 目录 | MCU | 固件版本 | 功能 | +|--------|------|-----|---------|------| +| vd960Loop | `vd960Loop/` | AT32F421 | 1.0 | 线圈驱动、频率采样、车辆检测算法、0x7F 串口上报 | +| vd960DBN | `vd960DBN/` | CH32V208 | 1.02.03 | 蓝牙管理、TCP/IP(WCHNET)、MQTT、串口桥接、4G 扩展(RFU) | + +> ⚠ 发布约束:自协议 V1.05 起(variation 2B无符号 → 3B有符号),**Loop 固件与 DBN 固件必须同版本配套发布**,禁止混刷。 + +## 产品文档(docs/) + +| 文档 | 版本 | 说明 | +|------|------|------| +| [DLD960_产品手册.md](docs/DLD960_产品手册.md) | V1.01 | 面向安装调试与使用:接口、指示灯、线圈施工、配置、故障排查 | +| [DLD960_技术规格书.md](docs/DLD960_技术规格书.md) | V1.01 | 完整技术参数:检测规格、灵敏度、算法机制、接口、协议矩阵 | + +## 协议文档(docs/) + +| 文档 | 版本 | 适用层 | 说明 | +|------|------|--------|------| +| [DLD960Loop_串口通信协议.md](docs/DLD960Loop_串口通信协议.md) | V1.05 | Loop MCU ↔ DBN MCU | 0x7F 帧、0xC0 传感主动上报、variation 3B 有符号 | +| [DLD960_串口通信协议.md](docs/DLD960_串口通信协议.md) | V1.01 | 整机 TTL 串口 | 设备管理、参数配置、数据上报 | +| [DLD960_TCP_JSON协议.md](docs/DLD960_TCP_JSON协议.md) | V1.03 | 以太网 TCP :5960 | 鉴权 + 命令 + event_report 客户端必答 + 脱机日志(事件/快照流) | +| [DLD960_IoT_MQTT协议.md](docs/DLD960_IoT_MQTT协议.md) | V1.07 | 云平台 MQTT | 双主题 `{sn}/srv`+`{sn}/dev`、initialize、event_report 平台必答、设备时钟同步、脱机日志(事件/快照流) | +| [DLD960_BLE协议.md](docs/DLD960_BLE协议.md) | V1.02 | 蓝牙 BLE | 帧格式 + 分包 + 脱机日志(OFFLOG_STAT/QUERY/CLEAR)+ 传感快照(SNAP_STAT/QUERY/CLEAR,0x28/0x29/0x2A),与 MQTT/TCP 同语义 | +| [DLD960硬件资源.md](docs/DLD960硬件资源.md) | — | 硬件 | 双 MCU IO 分配、继电器、指示灯、拨码 | + +## 开发文档 + +| 文档 | 说明 | +|------|------| +| [vd960Loop/docs/devlog.md](vd960Loop/docs/devlog.md) | 检测算法开发日志(IIR、斜率限幅、基线冻结、时间量单位演进) | +| [vd960DBN/docs/devlog.md](vd960DBN/docs/devlog.md) | 通信固件开发日志(WCHNET、MQTT 稳定性、event_report 可靠上报) | +| [vd960Loop/docs/acceptance-standard.md](vd960Loop/docs/acceptance-standard.md) | 检测算法验收标准 | +| [vd960Loop/docs/variation-analysis.md](vd960Loop/docs/variation-analysis.md) | variation 上报量分析报告(基线 vs 当前值三时钟关系) | +| [vd960DBN/docs/incidents/](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 串口 + +## 版本发布流程 + +1. 确认 `vd960Loop` 与 `vd960DBN` 固件按同一协议版本联调通过; +2. 更新两侧 `cmcng.h` 的 `FIRMWARE_VER`; +3. 更新 `CHANGELOG.md` 与各 devlog 修订记录; +4. 打 tag(`vX.Y.Z`)推送 Gitea,并在 Gitea Releases 挂发布说明与固件产物(hex/bin)。 diff --git a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/include/cmcng.h b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/include/cmcng.h index 8996ee1..d6f37a3 100644 --- a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/include/cmcng.h +++ b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/include/cmcng.h @@ -11,11 +11,11 @@ #include #define PRODUCT_MODEL "DLD960GA" -#define FIRMWARE_VER "1.02.01" +#define FIRMWARE_VER "1.02.03" #define HARDWARE_VER "1.0" #define FIRMWARE_VER_MAIN 1 #define FIRMWARE_VER_SUB 2 -#define FIRMWARE_VER_SUBSUB 1 +#define FIRMWARE_VER_SUBSUB 3 #define HARDWARE_VER_MAIN 1 #define HARDWARE_VER_SUB 1 diff --git a/vd960DBN/docs/devlog.md b/vd960DBN/docs/devlog.md index 0fcebc3..44aadba 100644 --- a/vd960DBN/docs/devlog.md +++ b/vd960DBN/docs/devlog.md @@ -38,10 +38,15 @@ DMA 改造(fed4335)后通过 BLE 给地感(Loop MCU)OTA 升级失效。 - gcc 隔离单测 `tests/test_lup_ota_parser.c`:**8 断言全过**(bootloader 真实帧向量 pre_ok/addr_ok/addr_err/data ACK、错误校验拒绝并复位、0x7F 帧隔离、两帧粘包独立解析) - `gcc -fsyntax-only`:`loop_uart_proto.c`/`usart_biz.c` 无新错误(仅 RISC-V interrupt attribute 假阳性 + 原有 unused warning) +### 版本与板级验证 + +- **固件版本 V1.02.03**(2026-08-19 用户更新 `cmcng.h` 三段式:FIRMWARE_VER="1.02.03" + MAIN=1/SUB=2/SUBSUB=3,字符串与数字宏一致) +- ✅ **板级 BLE OTA 全流程实测通过**(用户 2026-08-19):OTA 修复生效 +- 本修复 + 8-18 快照流/hex 上报/MQTT 命令补齐 一并归入 V1.02.03 发布(README/CHANGELOG 已同步) + ### 遗留 -- **`g_flag_counter_ota.flag` 无退出机制**:升级完成后 DBN 仍卡 OTA 透传态,只能断电重启恢复 0x7F 通信——待定加"OTA 超时/完成帧自动退出" -- 待板级:MRS 编译 + 真机 BLE OTA 全流程回归 +- **`g_flag_counter_ota.flag` 无退出机制**:升级完成后 DBN 仍卡 OTA 透传态,只能断电重启恢复 0x7F 通信——**用户 2026-08-19 拍板维持现状**,作为已知约束记录在 CHANGELOG ---