diff --git a/docs/任务规划/数据可信.md b/docs/任务规划/数据可信.md index 3fea3f4d..7df195f6 100644 --- a/docs/任务规划/数据可信.md +++ b/docs/任务规划/数据可信.md @@ -213,7 +213,7 @@ typedef struct { | 序 | 任务 | DoD(可验证验收判据) | 硬依赖 | 资源 | 写范围 | 状态 | |---|---|---|---|---|---|---| -| **0** | **已知电压注入验证(首次功能级 ADC 验证)** | 在**可安全接触的最低一级**(ADC 引脚侧或端子侧,二选一并在证据里写明注入点)用板载 3.3 V 轨经电位器注入 **3 个直流点**(≈0.3 / 1.0 / 2.0 V),每点**同时**用万用表读注入点实际电压 + 读 `adc_input_raw()` 码值:① 三点线性拟合 **R² ≥ 0.999**;② 注入点在引脚侧时,斜率须与 §2.1 理论值(TPAFE 6553 码/V、STM32 1241 码/V)偏差 **≤2 %**;在端子侧时把斜率记为**实测变比**;③ 注入 0 V(短接 AGND)零点 \|码\| ≤ 10(TPAFE)/ ≤ 5(STM32),并解释首帧 ~1000 码的来源;④ **逐通道映射确认**:8 路电气量逐个注入,确认"注入哪一路、哪一路语义变化",语义与下标不符即映射错;⑤ TPAFE 侧原"BUSY 有脉冲"判据**改用固件帧计数**(注入前后 `tpafe5160_frame_seq()` 仍严格 1000 Hz 递增)——不需要示波器;⑥ 结论写回 `docs/硬件平台/ADC通道映射说明.md` §8,把"尚未执行"改为实测值 + 日期 | 1 | 🔴 + 万用表(**不需信号源 / 示波器**) | `docs/硬件平台/ADC通道映射说明.md`、`docs/测试说明/boot_log_data/` | ⬜ | +| **0** | **已知电压注入验证(首次功能级 ADC 验证)** | 在**可安全接触的最低一级**(ADC 引脚侧或端子侧,二选一并在证据里写明注入点)用板载 3.3 V 轨经电位器注入 **3 个直流点**(≈0.3 / 1.0 / 2.0 V),每点**同时**用万用表读注入点实际电压 + 读 `adc_input_raw()` 码值:① 三点线性拟合 **R² ≥ 0.999**;② 注入点在引脚侧时,斜率须与 §2.1 理论值(TPAFE 6553 码/V、STM32 1241 码/V)偏差 **≤2 %**;在端子侧时把斜率记为**实测变比**;③ 注入 0 V(短接 AGND)零点 \|码\| ≤ 10(TPAFE)/ ≤ 5(STM32),并解释首帧 ~1000 码的来源;④ **逐通道映射确认**:8 路电气量逐个注入,确认"注入哪一路、哪一路语义变化",语义与下标不符即映射错;⑤ TPAFE 侧原"BUSY 有脉冲"判据**改用固件帧计数**(注入前后 `tpafe5160_frame_seq()` 仍严格 1000 Hz 递增)——不需要示波器;⑥ 结论写回 `docs/硬件平台/ADC通道映射说明.md` §8,把"尚未执行"改为实测值 + 日期 | — | 🔴 + 万用表(**不需信号源 / 示波器**) | `docs/硬件平台/ADC通道映射说明.md`、`docs/测试说明/boot_log_data/` | ⬜ | | **0b** | **端子 / 子板变比确认** | 给出"端子电压 → ADC 引脚电压"的比值(万用表同时量端子与引脚,或查子板原理图后实测核对),写入 `docs/硬件平台/ADC通道映射说明.md`;据此判定 `eng` 能否置 1;数据缺失则本波只交付引脚电压并登记缺口 | 0 | 🟡 子板实物或原理图 | `docs/硬件平台/` | ⬜ | | **12** | **8 通道两点标定与精度验收** | 电压 4 路(UA/UB/UC/UN)+ 电流 4 路(IA/IB/IC/IN)各做两点标定(零点 + 满度,温度不纳入),写入 `[adc_cal]` 并置 `VALID`;误差 ≤ 目标精度(待定:0.5 级 / 1 级);证据归档 | 0、0b | 🟡 标准源 / 继保测试仪 | `docs/算法/`、`docs/测试说明/boot_log_data/` | ⬜ | @@ -226,7 +226,7 @@ typedef struct { ``` 0 注入验证(万用表)→ 0b 变比(子板)→ 12 两点标定(标准源) -0 ─→ 5 闭锁验证(VALID 置位后保护才走判据)→ B10 送检 +0 ─→ 闭锁验证(VALID 置位后保护才走判据)→ B10 送检 ``` - **卡 0 斜率规则**:实测斜率与理论 LSB 偏差 >2 % 时**先查前端(分压/变比/焊接)再改系数**—— @@ -246,8 +246,8 @@ typedef struct { | 1 | **精度目标** | 0.5 级 / 1 级 | 决定卡 12 的判据。**仍未拍板**——保护判据本身只需 3~5 %,0.5 级是计量口径;**卡 12 开跑前必须定**,否则"误差 ≤ 目标精度"这条 DoD 无法判定 | | 2 | **端子 / 子板变比从哪来** | ① 有子板原理图(直接算)② 只有子板实物(万用表同时量端子与引脚)③ 都没有 | 决定 `eng` 能否置 1。②同样可行且够用;③则本波只交付"ADC 引脚电压",二次值登记为缺口。**未拍板**(取决于子板是否到手) | -**已定案(不再讨论)**:未标定即闭锁(卡 5 实现;2026-10-25 用户裁定**保持闭锁到标准源到位**, -不缩短解锁路径)· `CFG_VAL_INT` 补引擎类型(卡 3)· 遥测快照由 `adc_task` 分频发布(卡 8)· +**已定案(不再讨论)**:未标定即闭锁(2026-10-25 用户裁定**保持闭锁到标准源到位**, +不缩短解锁路径)· `CFG_VAL_INT` 补引擎类型 · 遥测快照由 `adc_task` 分频发布 · 温度不纳入线性标定(`adc_cal_flags(TEMP)` 恒 0)· 首次注入在 ADC 引脚侧(卡 0 DoD,≤2 V 直流)。 --- @@ -259,8 +259,8 @@ typedef struct { | **`cfg` 键数顶格** | 后续给 `[adc_cal]` 加键 | 已按 8+1 / 8 拆段;加键前先看 `CFG_FILE_MAX_KEYS`,必要时再拆 | | **标定值把保护"调坏"** | 卡 12 写入错误系数 | `adc_cal_set()` 校验范围(`k` 必须在板级系数 × [0.5, 2.0] 内)+ 写入后回读校验;越界拒绝并留 `[ERR]` | | **削顶通道被当成可测** | 消费者只看 `k` 不看 `flags` | `adc_cal_flags()` 是唯一查询入口,`adc_cal_apply()` 不返回可用性;单测覆盖"CLIPPED 通道 104 恒 IV" | -| **快照双写** | 104 或 UI 侧也加一个 200 ms 计时器 | 卡 8 明确"唯一发布者 = `adc_task`";其余侧只读,评审时看 `meas_tick()` 的调用点数量 = 1 | -| **未验证的系数被当成定论** | 跳过卡 0 直接冻结 ROM 默认系数 | 卡 0 设为卡 4 的硬前置;实测斜率偏差 >2 % 时**先查前端**(分压/变比/焊接),不用系数去凑。⚠ **此风险已部分兑现**:ROM 默认系数已按理论 LSB 冻结,卡 0 仍未跑 | +| **快照双写** | 104 或 UI 侧也加一个 200 ms 计时器 | 设计约定"唯一发布者 = `adc_task`";其余侧只读,评审时看 `meas_tick()` 的调用点数量 = 1 | +| **未验证的系数被当成定论** | 跳过卡 0 直接冻结 ROM 默认系数 | ⚠ **此风险已部分兑现**:ROM 默认系数已按理论 LSB 冻结,卡 0 仍未跑。实测斜率偏差 >2 % 时**先查前端**(分压/变比/焊接),不用系数去凑 | | **加压烧板** | 变比未确认就往端子加额定电压 | 卡 0 只加 ≤2 V 直流;端子级上额定值必须在卡 0b 之后,且先量"端子对地通断"确认无直流通路 | ---