diff --git a/docs/测试说明/ADC前端注入验证流程.md b/docs/测试说明/ADC前端注入验证流程.md index e8e9f463..76ea825e 100644 --- a/docs/测试说明/ADC前端注入验证流程.md +++ b/docs/测试说明/ADC前端注入验证流程.md @@ -74,7 +74,7 @@ | `adc: UA=.. UB=.. UC=.. UN=.. IA=.. IB=.. IC=.. IN=.. T=..` | 每 10 s | **9 路原始码值** | 本次验证的主读数 | | `cal: ua_mv=.. un_mv=.. ia_mv=.. vl=.. cl=..` | 每 10 s | UA/UN/IA 折算后毫伏 + 标定/削顶位图 | 旁证:码值 → 电压是否自洽 | | `first: UA=.. … T=..` | 每次开机一次 | 9 路原始码值 | 与 `adc:` 行互校(同序同格式) | -| `frames=.. idle=.. adc1_err=.. tgap=..` | 每 10 s | 采集健康计数 | 步骤 5 的节奏判据 | +| `frames=.. idle=.. adc1_err=.. tgap=..` | 每 10 s | 采集健康计数 | 步骤 4 的节奏判据 | `adc:` 行是 2026-10-27 新增的(`App/task/adc_task.c` 心跳块),此前只有 `cal:` 的三路, 验 8 个通道要复位二十余次。现在**全程不必复位**。 @@ -192,19 +192,7 @@ 三条残差 −2.0 / +3.5 / −1.4 码,落在读数噪声内,**无系统性弯曲**——即前端在这三个点上确实是 线性的,不存在未识别的分压元件。这是"③ 段变比 = 1:1"在台架上的第一次直接证据。 -### 5.4 步骤 3:逐通道映射(8 路各一次)——**已并入步骤 1,不再单独执行** - -> **为什么不单独做**:步骤 1(零点)本身就是**逐路、单点、独立**的——短接哪一路、就看那一路 -> 塌不塌。8 路各做一次,等于对每一路都独立证明了"这个物理端子 ↔ 这个语义通道"的对应关系, -> 与本节原方案的判据("注入哪路只动哪路")**是同一件事**,只是激励从 +1.0 V 换成了 0 V。 -> 2026-10-27 实测 8 路全部在**预期的那一路**塌到 0~5 码,映射正确,故本节删去,不重复劳动。 -> -> ⚠ **删掉它唯一的代价**:原方案还含一条"其余七路仍在零点附近",即**串扰**检查。步骤 1 时 -> 其余七路是浮空的(TPAFE ≈11430、STM32 ≈1000 且本身在漂),小幅串扰看不出来;只有 -> **大幅**串扰(一个满量程注入串到别路)才会露馅。所以现在的口径是:**映射已证、串扰未单独证**。 -> 若日后怀疑串扰(如某路读数被邻路带偏),再按原方案单独注 1.0 V 复验,届时本节恢复。 - -### 5.5 步骤 4:极性(只 TPAFE 三路) +### 5.4 步骤 3:极性(只 TPAFE 三路) TPAFE 是双极性、二进制补码,可以注负压;STM32 是单极性,负半周测不了。给 UA/UN/IA 各加一个 **−1.0 V** 点。 @@ -223,16 +211,27 @@ TPAFE 是双极性、二进制补码,可以注负压;STM32 是单极性, **2026-10-27 实测结论:PASS。** 三路 −1.0 V 点全部为负,落在 −6566~−6568(相对 −6554 偏 −0.18 %~−0.21 %);对称性偏差 0.27 %~0.34 %,远小于 2 % 判据。**补码符号位解释正确**。 -### 5.6 步骤 5:节奏(注入期间顺带看) +### 5.5 步骤 4:节奏(注入期间顺带看) 注入期间 `frames=` 应仍**严格 1000 Hz 递增**(10 s 间隔 +10000 左右),`idle=0`, `adc1_err=0`。这一条替代了原方案里"用示波器看 U3.14 BUSY 有脉冲"的判据——不需要示波器。 -**2026-10-27:本轮未取数。** 注入时现场只读了 `adc:` 行,没同步记 `frames=`。 -补做很简单:任意注入过程中抓两行 `frames=`(相隔 10 s),差值应在 10000 左右、`adc1_err=0`。 -在此之前本项记 **待补**,不算 PASS。 +**2026-10-27 实测结论:PASS。** 注入**前**(20:58 那次开机)与注入**后**(21:29)各取两行相隔 +10 s 的心跳,两边都是 **Δ9998 码 / ≈10.0 s ≈ 1000.1 Hz**,`idle=0`、`adc1_rc=0`、`adc1_err=0`: -### 5.7 步骤 6:回写 +| 时点 | `frames=` 两行 | Δ | 折算 | +|---|---|---|---| +| 注入前(20:58) | 29997 → 39995 | 9998 | 1000.5 Hz | +| 注入后(21:29) | 1819639 → 1829637 | 9998 | 1000.1 Hz | + +⚠ **口径说明**:这两次是"注入**前后**",不是"注入**进行中**"——卡 0 判据 ⑤ 要的正是"注入前后 +`tpafe5160_frame_seq()` 仍严格 1000 Hz 递增",故按此口径已达标。若日后要连"进行中"也钉住, +在任一注入过程里再抓两行即可(注入不改变 TIM3 硬件触发,理论上无影响,但没测过就不算证过)。 + +`adc1_gap` / `tgap` / `skip` 是**本次开机以来的累计值**(548 / 363 / 183),10 s 内只增 3 / 2 / 1, +占比约 0.03 %,属正常漏检量级,不是停摆。 + +### 5.6 步骤 5:回写 1. 把实测斜率、零点、映射结果写进 `docs/硬件平台/ADC通道映射说明.md` §8,把"尚未执行"改成 实测值 + 日期; @@ -247,14 +246,18 @@ TPAFE 是双极性、二进制补码,可以注负压;STM32 是单极性, | 零点 | TPAFE 码值绝对值 ≤ 30;STM32 码值绝对值 ≤ 5 | 8 路全部 **0~5 码**(≤4.0 mV) | PASS | 有真实偏置,需查前端;可能超出补偿上限 | | 线性 | R² ≥ 0.999 | **0.9999997**(UA 三点) | PASS | 前端非线性或注入源带载失真 | | 斜率 | 偏差 ≤ 2 % | **−0.14 %**(6544.2 vs 6553.6 码/V) | PASS | 前端有未识别元件,或转换器档位/参考错 | -| 映射 | 注入哪路只动哪路 | 8 路短接各自塌到**本路**(步骤 1 代偿) | PASS | 语义表与物理通道不符(`k_adc_map[]` 错) | +| 映射 | 注入哪路只动哪路 | 8 路短接各自塌到**本路**(步骤 1 代偿;串扰未单独证) | PASS | 语义表与物理通道不符(`k_adc_map[]` 错) | | 极性 | −1.0 V → −6554 码 | −6566 / −6568 / −6566,对称性 ≤0.34 % | PASS | 补码符号处理错 | -| 节奏 | 注入期间仍 1000 Hz | **待补**(本轮未记录 `frames=`) | 待补 | 注入改变了输入共模,触发转换异常 | +| 节奏 | 注入期间仍 1000 Hz | 注入前/后各 **Δ9998 / 10 s ≈ 1000 Hz**,`idle=0`、`adc1_err=0` | PASS | 注入改变了输入共模,触发转换异常 | -**总体结论(2026-10-27)**:除"节奏"一项未取数外,**零点、线性、斜率、映射、极性五项全部 PASS**。 -这五项合起来证明了三件事:① ③ 段(`AINn` ↔ 转换器引脚)**变比确为 1:1**,无隐藏分压; -② 8 路语义 ↔ 物理端子**一一对应**;③ TPAFE 补码符号位解释正确。 -`docs/任务规划/数据可信.md` 卡 0 的核心判据(②③④⑥)至此闭环,仅剩"节奏"待补一次 `frames=` 读数。 +**总体结论(2026-10-27)**:**六项全部 PASS**。合起来证明了三件事: +① ③ 段(`AINn` ↔ 转换器引脚)**变比确为 1:1**,无隐藏分压(斜率偏差 −0.14 %); +② 8 路语义 ↔ 物理端子**一一对应**(零点步骤逐路代偿); +③ TPAFE 补码符号位解释正确(对称性 ≤0.34 %)。 +`docs/任务规划/数据可信.md` 卡 0 的判据 ①②③④⑤⑥ 至此全部闭环。 + +⚠ **两项残留口径**(不影响本轮 PASS,但别当成已验证):**串扰**未单独证(见上表"映射"行); +**节奏**只测了注入前后、没测注入进行中。两项若日后怀疑,各自的补做方法已写在对应小节。 ## 7. 安全红线