From 7cb861ee1df6b4339bc9ee34a013b794c7185cd7 Mon Sep 17 00:00:00 2001 From: wangfq Date: Thu, 27 Aug 2026 18:40:23 +0800 Subject: [PATCH] =?UTF-8?q?PD136HA=20=E5=AE=8C=E6=95=B4=E5=88=86=E6=9E=90?= =?UTF-8?q?=E5=BD=92=E6=A1=A3=EF=BC=9A=E7=A1=AE=E8=AE=A4=20PD132L=20?= =?UTF-8?q?=E5=90=8C=E6=BA=90=E7=A7=BB=E6=A4=8D=EF=BC=88HC32=20M0+?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 应用层 main.c(832行) 到位,补全算法级分析 - 血统实锤:工程名 PD132L-HD,文件头明示硬件用 PD132L_V1.02/替换 PD132LA_V1.06 - 周期累积法同框架:LPCNT=32768/Xn、IIR 79/64(实际64)、有车冻结基线、相对阈值>>16 - 独立改动:灵敏度表 {162,81,54,28}/{81,54,32,18}(Δf/f 0.247%~0.043%)、 基线窗口 100→256(5.59s)、进入/离开单次判定(去抖注释)、双继电器输出 - 时序量化:测量节拍 21.8ms、基线 5.59s、IIR τ 87ms(12MHz 假设待验证) - 对比总表升级五型号,同源辨析补 PD132L→PD136HA --- README.md | 2 +- docs/cross-model-comparison.md | 53 ++++---- models/PD136HA/analysis.md | 214 ++++++++++++++++++++++++++------- 3 files changed, 198 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index 7cba762..f69e4da 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ | PD132T | MA801AS / 8051 (Keil) | V3.01 (2021-06) | [models/PD132T/analysis.md](models/PD132T/analysis.md) | `reference/PD132T_V3.01-20210623` | | M1H | STC12C5202 (8051) | V1.00 (2008-12) | [models/M1H/analysis.md](models/M1H/analysis.md) | `reference/M1H code` | | TLD-110 | P87LPC762 (8051, 汇编) | V2.33 (2006-07) | [models/TLD-110/analysis.md](models/TLD-110/analysis.md) | `reference/TLD-110(410) code`(⚠ 已移出对比总表) | -| PD136HA | HC32F005 (M0+) | V3.14 (2021-11) | [models/PD136HA/analysis.md](models/PD136HA/analysis.md) | `reference/PD136HA_V3.14-20211116`(⚠ 仅 SDK 驱动层,无应用算法) | +| PD136HA | HC32F005 (M0+) | V3.14 (2021-11) | [models/PD136HA/analysis.md](models/PD136HA/analysis.md) | `reference/PD136HA_V3.14-20211116`(PD132L 同源移植版) | | DLD154V4B | AT32F421 (M4, FreeRTOS) | V2.8 (2026) | [models/DLD154V4B/analysis.md](models/DLD154V4B/analysis.md) | `vd_detector/DLD154V4B`(自研) | ## 目录结构 diff --git a/docs/cross-model-comparison.md b/docs/cross-model-comparison.md index 86df84a..236c748 100644 --- a/docs/cross-model-comparison.md +++ b/docs/cross-model-comparison.md @@ -10,33 +10,34 @@ | PD132T | MA801AS (8051) | V3.01 | [models/PD132T/analysis.md](../models/PD132T/analysis.md) | | M1H | STC12C5202 (8051) | V1.00 | [models/M1H/analysis.md](../models/M1H/analysis.md) | | DLD154V4B | AT32F421 (M4) | V2.8 | [models/DLD154V4B/analysis.md](../models/DLD154V4B/analysis.md) | -| PD136HA | HC32F005 (M0+) | V3.14 | [models/PD136HA/analysis.md](../models/PD136HA/analysis.md)(⚠ 仅 SDK 驱动层,无应用算法) | +| PD136HA | HC32F005 (M0+) | V3.14 | [models/PD136HA/analysis.md](../models/PD136HA/analysis.md)(PD132L 同源移植版) | > TLD-110 分析见 `models/TLD-110/analysis.md`(2006 门控计数法参考,2026-08-27 起**不再纳入对比总表**)。 -## 四型号核心参数对比(2026-08-27) +## 五型号核心参数对比(2026-08-27) -| 维度 | M1H | PD132L | PD132T | DLD154V4B | -|------|-----|--------|--------|-----------| -| 年代 | 2008 | 2020 | 2021 | 2026 | -| MCU | STC12C5202 | STM8S003F3 | MA801AS | AT32F421 (M4) | -| 语言/系统 | C | C | C | C + FreeRTOS | -| 通道 | 1 | 1 | 1 | 1 | -| 测频方式 | PCA 周期捕获 | TIM1 周期捕获 | PCA 周期捕获 | TIM3 周期捕获 | -| 归一化基数 | 32768 | 32768 | 32768 | **131072 (2^17)** | -| 测量窗 | 32.8ms | 27.3ms | 43.7ms | **2.18ms** | -| IIR 系数 | 79(固定) | 79/64 | 79/64 | 79 + 斜率限幅 | -| 基线 | 100 平均(有车也跟踪) | 100 平均(有车冻结) | 100 平均(有车冻结) | **500 平均 + 冻结超时 10s** | -| 灵敏度表 | {216,108,36,10} | {300,60,32,21} | {300,60,32,21} | {216,108,36,20} | -| 阈值换算 | Origin×表/65536 | Origin×表/65536 | Origin×表/65536 | Origin×表/65536 | -| 档位 Δf/f | 0.33%~0.015% | 0.92%~0.064% | 0.92%~0.064% | 0.33%~0.031% | -| 进入确认 | 无 | 无 | 无 | **3 次** | -| 离开判定 | 简单阈值 | 简单阈值 | 简单阈值 | **平坦性三条件** (CN200910309382) | -| 时序 tick | 50ms | 50ms | 50ms | **检测 10ms + 时序 50ms(混合)** | -| 看门狗 | WDT_CONTR | IWDG+WWDG | WDTCR | **无** | -| **测量节拍**(CAPVD 更新) | **32.8 ms** | **27.3 ms** | **43.7 ms** | **10 ms** | -| **基线更新周期** | **3.28 s**(100 窗) | **2.73 s** | **4.37 s** | **5 s**(500 窗) | -| IIR 时间常数 τ | 106 ms | 88 ms / 109 ms | 142 ms | **32 ms** | +| 维度 | M1H | PD132L | PD132T | PD136HA | DLD154V4B | +|------|-----|--------|--------|---------|-----------| +| 年代 | 2008 | 2020 | 2021 | 2021 | 2026 | +| MCU | STC12C5202 | STM8S003F3 | MA801AS | HC32F005 (M0+) | AT32F421 (M4) | +| 语言/系统 | C | C | C | C | C + FreeRTOS | +| 通道 | 1 | 1 | 1 | 1 | 1 | +| 测频方式 | PCA 周期捕获 | TIM1 周期捕获 | PCA 周期捕获 | ADTIM4 周期捕获 | TIM3 周期捕获 | +| 归一化基数 | 32768 | 32768 | 32768 | 32768 | **131072 (2^17)** | +| 测量窗 | 32.8ms | 27.3ms | 43.7ms | 21.8ms | **2.18ms** | +| IIR 系数 | 79(固定) | 79/64 | 79/64 | 79/64(实际 64) | 79 + 斜率限幅 | +| 基线 | 100 平均(有车也跟踪) | 100 平均(有车冻结) | 100 平均(有车冻结) | **256 平均(有车冻结)** | **500 平均 + 冻结超时 10s** | +| 灵敏度表 | {216,108,36,10} | {300,60,32,21} | {300,60,32,21} | {162,81,54,28} | {216,108,36,20} | +| 离开表 | 同表 | {60,32,21,14} | {60,32,21,14} | {81,54,32,18} | {108,72,18,14} | +| 阈值换算 | Origin×表/65536 | Origin×表/65536 | Origin×表/65536 | Origin×表/65536 | Origin×表/65536 | +| 档位 Δf/f | 0.33%~0.015% | 0.92%~0.064% | 0.92%~0.064% | 0.247%~0.043% | 0.33%~0.031% | +| 进入确认 | 无 | 无 | 无 | 无(单次,去抖已注释) | **3 次** | +| 离开判定 | 简单阈值 | 简单阈值 | 简单阈值 | 简单阈值+脉冲延迟 | **平坦性三条件** (CN200910309382) | +| 时序 tick | 50ms | 50ms | 50ms | 5ms?×10=50ms | **检测 10ms + 时序 50ms(混合)** | +| 看门狗 | WDT_CONTR | IWDG+WWDG | WDTCR | WDT 820ms | **无** | +| **测量节拍**(CAPVD 更新) | **32.8 ms** | **27.3 ms** | **43.7 ms** | **21.8 ms** | **10 ms** | +| **基线更新周期** | **3.28 s**(100 窗) | **2.73 s** | **4.37 s** | **5.59 s**(256 窗) | **5 s**(500 窗) | +| IIR 时间常数 τ | 106 ms | 88 ms / 109 ms | 142 ms | **87 ms** | **32 ms** | > ⚠ 时序数值基于 12MHz 晶振假设推导(测量节拍 = BASE/捕获时钟),**待现场验证**;DLD154V4B 为实测/代码确认(10ms tick τ=32ms)。V4B 归一化基数 131072 是参考型号 32768 的 4 倍 → 测量窗 2.18ms 快 15×、精度高 4 倍。 @@ -44,7 +45,7 @@ ## 测频路线(周期累积法为统一范式) -纳入对比表的型号(M1H / PD132L / PD132T / DLD154V4B)**全部采用周期累积法**: +纳入对比表的型号(M1H / PD132L / PD132T / PD136HA / DLD154V4B)**全部采用周期累积法**: ``` 累加固定数量周期(周期域,LPCNT=BASE/Xn)→ 受周期抖动影响,LPCNT 自适应归一化 @@ -52,7 +53,7 @@ > TLD-110(2006,门控计数法)是唯一例外,已移出对比表,见 `models/TLD-110/analysis.md`。 -DLD 产品线(154V4B/960Loop/110S/154Pro)继承 M1H→V4B 的血统;PD132 独立同路。 +DLD 产品线(154V4B/960Loop/110S/154Pro)继承 M1H→V4B 的血统;PD132 系(L/T/136HA)独立同路,其中 PD136HA 是 PD132L 的 HC32 同源移植。 ### 同源 / 同路 / 不同路(辨析) @@ -60,7 +61,7 @@ DLD 产品线(154V4B/960Loop/110S/154Pro)继承 M1H→V4B 的血统;PD132 | 关系 | 含义 | 例 | |------|------|-----| -| **同源** | 明确继承/移植关系,细节连续 | M1H → DLD154V4B(灵敏度表/映射/IIR 全继承);PD132L → PD132T(文件头明示"实现与 L 一样") | +| **同源** | 明确继承/移植关系,细节连续 | M1H → DLD154V4B(灵敏度表/映射/IIR 全继承);PD132L → PD132T(文件头明示"实现与 L 一样");**PD132L → PD136HA**(工程名 PD132L-HD、文件头明示"硬件用 PD132L_V1.02/替换 PD132LA_V1.06",LPCNT/IIR/基线/滞回全继承,但灵敏度表与基线窗口独立改动) | | **同路不同源** | 独立开发撞出相似算法框架(周期累积+IIR+滑动平均+相对阈值是行业主流范式),但细节各取 | M1H vs PD132:灵敏度表 {216,...} vs {300,...}、基线有车也跟踪 vs 有车冻结、离开始终当前档 vs 可固定最高档 | | **不同路** | 测频原理根本不同 | TLD-110 门控计数 vs 周期累积(已移出对比表) | diff --git a/models/PD136HA/analysis.md b/models/PD136HA/analysis.md index 0fd4076..f957b95 100644 --- a/models/PD136HA/analysis.md +++ b/models/PD136HA/analysis.md @@ -1,61 +1,187 @@ # PD136HA 车检器分析 -> 型号: PD136HA | 固件: V3.14 | 日期: 2021-11-16 | 平台: **HC32F005C6PA**(华大半导体, Cortex-M0+) -> 原始代码: `vd_detector/reference/PD136HA_V3.14-20211116/` -> ⚠ **完整性警示:该工程只有华大官方 SDK 驱动层(driver/ + common/),没有应用层代码(main.c / 检测算法)**——无法做算法级对比,本文档仅分析平台与外设资源。 +> 型号: PD136HA | 固件: V3.14 | 日期: 2021-11-16 | 平台: **HC32F005**(华大半导体, Cortex-M0+) +> 原始代码: `vd_detector/reference/PD136HA_V3.14-20211116/`(工程名 **PD132L-HD**,含 user/main.c 应用层) +> 血统: **PD132L 同源移植版**(文件头明示"硬件使用 PD132L_V1.02,替换软件版本 PD132LA_V1.06") ## 1. 平台与工程 | 项 | 值 | |----|-----| -| MCU | HC32F005C6PA(华大半导体,Cortex-M0+,32KB Flash) | -| 外部晶振 | 32 MHz(board 头 `SYSTEM_XTH = 32*1000*1000u`) | -| 工具链 | Keil MDK(.axf/.sct/hex 产物,JLink 调试) | -| 工程名 | **PD132L**(遗留命名——PD136HA 疑似 PD132 系列的 HC32 移植版) | -| 代码规模 | 驱动层 ~30 文件(driver/src 21 个 .c) | -| 固件产物 | PD132L.hex 32KB(仅驱动库编译结果,无应用逻辑) | +| MCU | HC32F005(注释标 HC32F003C4,工程编译目标 startup_hc32f005c6ua.o,SDK 板头为 C6PA——**三者不完全一致,待硬件确认**) | +| 时钟 | 外部晶振 XTH(8-16MHz 档),CLK_INIT 切 XTH、关内部 RCH;Delay_ms 注释 **12MHz** | +| 工具链 | Keil MDK(uvprojx,JLink) | +| 工程名 | **PD132L-HD**(直接沿用 PD132 工程名,Author=YSHE) | +| 版本史 | V3.11 (2021-03-03) → V3.12 → V3.13 → V3.14 (2021-11-16) | +| V3.14 变更 | ① 去掉线圈环路小 LED 指示 ② 基线累计次数 99→255 ③ 灵敏度调整 ④ 延时档位 0/0.6/1.6/3s | +| 代码规模 | main.c 832 行(CRLF/ASCII)+ 华大 SDK 驱动层 | -## 2. 外设资源(从驱动层推断硬件能力) +## 2. 硬件与 IO -| 驱动 | 外设 | 车检器相关用途 | -|------|------|----------------| -| adt.c | ADT 高级定时器 | **线圈频率捕获候选**(输入捕获/比较) | -| pca.c | PCA 可编程计数器阵列 | **线圈频率捕获候选**(HC32F005 的 PCA 可做周期测量) | -| uart.c | UART | 调试/通信 | -| adc.c | ADC | 环境/电压监测 | -| wdt.c | WDT | 看门狗(区别于 V4B 的无狗) | -| spi.c / i2c.c | SPI / I2C | EEPROM/扩展(board 头有 EVB I2C EEPROM) | -| flash.c | Flash | 参数存储 | -| crc.c | CRC | 校验 | -| gpio.c / sysctrl.c / reset.c / lvd.c / lpm.c / trim.c / ram.c / bgr.c / bt.c / vc.c | 基础外设 | — | - -**board_stkhc32f005.h 是华大 STK 开发板定义**(按键/ LED/ SPI/ I2C EEPROM),**不是车检器板**——说明工程是从华大 SDK 例程模板改的,应用板引脚定义不在本工程内。 - -## 3. 与 PD132 系列的关系(推断,待应用代码确认) - -| 证据 | 推断 | +| 引脚 | 功能 | |------|------| -| 工程名/产物名都是 PD132L | PD136HA 很可能是 PD132L(STM8)向 HC32F005(M0+)的移植 | -| 时间线 | PD132L V1.09 (2020-04) → PD136HA V3.14 (2021-11),间隔 1.5 年,符合换代节奏 | -| 版本号 | V3.14 高于 PD132T V3.01——PD136 是更晚的系列 | -| MCU 升级 | STM8S003 (8 位) → HC32F005 (M0+ 32 位),是 PD132 系列的升级换代 | +| P23 (AF3) | TIM4_CHA 捕获输入(**线圈频率入口**) | +| P33 | RLY2 继电器(**存在输出** VD_FLAG) | +| P34 | RLY1 继电器(**脉冲输出**:PLUS 模式=存在\|离开,非 PLUS=离开脉冲) | +| P15 | LEDA(有车指示/上电自检闪烁) | +| P35/P26/P25/P24 | DIP5-8 拨码(延时 2bit / 脉冲模式 / 存在保持) | +| P03/P32 | DIP9-10 拨码(灵敏度 2bit) | +| P01/P02 | 模拟口(XTH 晶振通道) | -⚠ 但**无法确认算法继承关系**:无应用层代码,无法对比灵敏度表/滤波/基线。若按 PD132 系惯例(PD132T 移植 PD132L),PD136HA 大概率沿用周期累积法 + {300,60,32,21} 系灵敏度表——**待应用代码佐证**。 +**双继电器架构**(存在 + 脉冲分离),比 PD132L 多一路输出。 -## 4. 缺口与建议 +## 3. 频率测量(周期累积法,与 PD132L 同框架) -- [ ] **补齐应用层代码**(main.c + 检测算法文件)才能完成算法分析 -- [ ] 拿到应用层后:确认测频外设(ADT 还是 PCA)、归一化基数、灵敏度表、时序 -- [ ] 对比表暂不纳入 PD136HA(无算法参数可比),README 索引标注"仅 SDK 层" +- 定时器:**ADTIM4**,PCLK0/8 预分频,锯齿波 0xFFFF,CHA **上升沿捕获** +- 中断:`loop1_Xn = CapThis - CapLast`(相邻上升沿计数差 = 振荡周期) +- 学习:`CapCnt > 100` 后 `loop1_LPCNT = 32768 / loop1_Xn`(**归一化基数 32768,与 PD132L/M1H 一致**) +- 测量:累积 `LPCNT` 个周期得 `CAPVD = CapSum`(周期域自适应归一化) -## 5. 参数速查(仅平台级) +```c +// Tim4_IRQHandler 核心 +loop1_Xn = Cap.loop1_CapThis - loop1_CapLast; // 周期 +loop1_CapCnt++; +if (loop1_INI_LOOP) { + if (loop1_LPCNT == 0) { + if (loop1_CapCnt > 100) { + loop1_LPCNT = 32768 / loop1_Xn; // 基数 32768 + if (loop1_LPCNT == 0) loop1_LPCNT = 1; + ... + } + } else { + loop1_CapSum += loop1_Xn; + if (loop1_CapCnt >= loop1_LPCNT) { + loop1_CAPVD = loop1_CapSum; // 一次测量窗 + loop1_Origin = loop1_CAPVD; // 初始基线 + loop1_INI_LOOP = 0; + } + } +} +``` + +- Xn 有效范围检查(`Xn>400 && Xn<2030`)已被注释——**V3.14 去掉环路指示 LED 时一并禁用**,当前无频率范围过滤 +- 时钟假设:PCLK0 = 12MHz(Delay_ms 注释)→ 捕获时钟 = **1.5MHz**(待现场验证) + +## 4. 滤波(IIR) + +```c +// VD1_TASK 中:一次指数滤波 +loop1_Flt = (loop1_Value - loop1_CAPVD); // 方向取绝对值 +loop1_Flt = ((INT32U)loop1_Flt * Flt_Reg) >> 8; +loop1_Flt = loop1_Flt + loop1_CAPVD; +``` + +- 系数 `Flt_Reg`:INIT_VD 置 `ALFA_CAP1=79`,但主循环每次 CAP_OK 强制 `Flt_Reg = ALFA_CAP2 = 64`(SET_FLT 分支已注释) +- **实际生效 α = 64/256 = 0.25**;79/64 双系数与 PD132L 同源 + +## 5. 基线 + +```c +if (!loop1_VD_FLAG) { // 仅无车时更新(有车冻结) + loop1_ORG_SUM += loop1_CAPVD; + if (loop1_ORG_CNT == 255) { // V3.14: 99 -> 255 + loop1_Origin = loop1_ORG_SUM >> 8; // 256 次滑动平均(2^8) + loop1_ORG_CNT = 0; loop1_ORG_SUM = 0; + } else loop1_ORG_CNT++; +} +``` + +- **256 次滑动平均**(V3.14 从 99 改 255,`>>8` 即均值)——比 PD132L 的 100 次窗口更慢更稳 +- 有车冻结基线(与 PD132L 一致) + +### 5.1 时序速查(12MHz 假设,待现场验证) + +| 项 | 值 | 公式 | +|----|-----|------| +| 捕获时钟 | 1.5 MHz | PCLK0/8(ADTIM4 Div8) | +| **测量节拍**(CAPVD 更新) | **21.8 ms** | 32768 / 1.5MHz | +| **基线更新周期** | **5.59 s** | 256 窗 × 21.8ms | +| **IIR τ** | **87.4 ms** | 21.8ms × 256/64 | +| 时序 tick | 5ms(注释,ARR=0xF159 反推需 12.36MHz 计数时钟,**待验证**) | TIM1 PRS=4 | +| 状态机节拍 | 50ms | TM1cnt≥10 | +| 喂狗周期 | 300ms | Delay_300ms_cnt≥60 | + +> ⚠ TIM1 ARR=0xF159(61785) 与"5ms"注释矛盾:12MHz/16=750kHz 时 tick=82.4ms。代码逻辑按 5ms 自洽(60 tick=300ms、10 tick=50ms),绝对时间待现场示波器验证。 + +## 6. 判据与灵敏度 + +```c +// 进入(无车时):CAPVD 下穿 Origin-dlt_ORG +loop1_dlt_ORG = (Origin * SensTable[SensLevel]) >> 16; +if (CAPVD < Origin - dlt_ORG) { VD_FLAG=1; FLAG_IN=1; ... } + +// 离开(有车时):CAPVD 回升越 Origin-dlt_ORG(离开表) +loop1_dlt_ORG = (Origin * SensTable1[SensLevel]) >> 16; +if (Origin - dlt_ORG < CAPVD) { VD_FLAG=0; FLAG_OUT=1; ... } +``` + +- **单次判定,无进入/离开去抖计数**(PD132L 的 IN_DELAY/OUT_DELAY 计数被注释掉)——PD136HA 判定更快但抗扰弱 +- 滞回:进入用 SensTable,离开用 SensTable1(离开表更小 → 需恢复更多 → 滞回) + +### 灵敏度表(× Origin >> 16,相对阈值 = 表值/65536) + +| SensLevel | DIP(SENS) | 进入表 SensTable | Δf/f 进入 | 离开表 SensTable1 | Δf/f 离开 | +|-----------|-----------|-----------------|-----------|-------------------|-----------| +| 0 | 0x00 | 162 | 0.247% | 81 | 0.124% | +| 1 | 0x20 | 81 | 0.124% | 54 | 0.082% | +| 2 | 0x10 | 54 | 0.082% | 32 | 0.049% | +| 3(默认) | 0x30 | 28 | 0.043% | 18 | 0.027% | + +- 注释历史:`{300,162,81,40}` → `{216,108,54,26}` → `{300,162,81,40}/{108,54,32,18}` → 当前 `{162,81,54,28}/{81,54,32,18}` +- 出厂默认 SensLevel=3(最灵敏档,Δf/f 0.043%) +- **与 PD132L {300,60,32,21} 量纲相同但数值全新**(162 系)——V3.14"灵敏度调整"产物 + +## 7. 状态机与输出 + +``` +捕获中断(TIM4) → Xn → 累积 LPCNT 个 → CAPVD/CAP_OK + ↓ 主循环 CAP_OK +VD1_TASK:IIR → 基线(无车) → 进入/离开判据 → VD_FLAG/FLAG_OUT + ↓ 50ms 状态机 (TIM1) +FLAG_OUT 延迟 DELAY_TIME[3-SET_DLY] → FLAG_PLUSE(持续 500ms) +RLY2 = VD_FLAG(存在) +RLY1 = SET_PLUS ? (VD_FLAG|FLAG_OUT) : FLAG_PLUSE(脉冲) +``` + +- 延时档位 `DELAY_TIME[4] = {0,12,32,60}` tick(50ms) → **0 / 0.6s / 1.6s / 3s**(V3.14 实测校准) +- 脉冲宽度 `PLUSE_DELAY = 10` tick = **500ms** +- 拨码 6 位连续 6 次采样一致才生效(swcnt>5 去抖) + +## 8. 异常处理 + +| 场景 | 处理 | +|------|------| +| 无捕获(线圈断/无振荡) | LOOP_OK=0 → FLAG_CUT=1 → 主循环 `Reset_RstPeripheralAll()` 整机复位 + LED 闪烁 | +| 存在保持超时 | SET_HOLD(DIP8)=1 时进入置 VD_HOLD;`HOLD_TIME=6000 tick×50ms=300s` 仍占用 → 整机复位 | +| 环路锁定超时 | SET_DLY≠3 时进入置 LC_HOLD;`LC_HOLD_TIME=4800 tick×50ms=240s` → 重新学习基线(INI_LOOP=1) | +| 灵敏度拨码变化 | SENS 变化 → `Reset_RstPeripheralAll()` 复位 | +| 看门狗 | WDT 820ms,主循环 300ms 喂狗 | +| 上电 | 1s 延时(线圈稳定)→ LED 闪 6 次(继电器自检)→ 开始检测 | + +## 9. 参数速查 | 参数 | 值 | |------|-----| -| MCU | HC32F005C6PA (Cortex-M0+) | -| 晶振 | 32MHz 外部 | -| 捕获外设候选 | ADT / PCA | -| 看门狗 | 有 WDT 驱动 | -| 通信 | UART / SPI / I2C | -| 存储 | Flash 驱动(参数区) | -| 应用算法 | **缺失** | +| 归一化基数 | **32768** | +| 测量节拍 | 21.8ms(12MHz 假设) | +| 基线窗口 | 256(有车冻结) | +| IIR 系数 | 64(实际)/ 79(初始化) | +| 进入/离开表 | {162,81,54,28} / {81,54,32,18} | +| 档位 Δf/f | 0.247%~0.043%(进入)、0.124%~0.027%(离开) | +| 时序 tick | 5ms 注释(待验证)/ 状态机 50ms | +| 看门狗 | 820ms / 300ms 喂 | +| HOLD / LC_HOLD | 300s / 240s(整机复位 / 重学基线) | +| 输出 | RLY2 存在 + RLY1 脉冲(双继电器) | + +## 10. 移植注意 / 血统关系 + +- **同源判定(PD132L → PD136HA)**:工程名 `PD132L-HD`;文件头 V3.11 明示"硬件使用 PD132L_V1.02、替换 PD132LA_V1.06";LPCNT=32768/Xn、IIR 79/64、有车冻结基线、相对阈值 >>16、HOLD=300s 全部继承 +- **差异点(PD136HA 相对 PD132L 的独立改动)**: + 1. 灵敏度表 {162,...} 系 vs {300,...} 系——档位重排且全部重新标定 + 2. 基线窗口 100 → 256(更慢更稳,抗干扰优先) + 3. **进入/离开单次判定**(去掉 PD132L 的 6 次去抖)——响应更快但抗扰弱,配 256 窗基线补偿 + 4. 双继电器输出(存在+脉冲分离)——PD132L 单路 + 5. 延时档位 {0,12,32,60} vs PD132L {0,20,40,60} 注释——0.6s 档重定 + 6. MCU:STM8S003 (8 位) → HC32F005 (M0+)——升级换代,捕获外设 TIM1→ADTIM4 +- **与 M1H / DLD 线**:同路不同源(周期累积法范式相同,细节独立) +- **归一化基数保持 32768 未动**——换 MCU 未重定标(与 DLD 线 131072/524288 重定标路线相反),印证"同源移植可保留基数,重写才需重定标"