登记 N-18:8 路电气量分属两片转换器属 V0.1 硬件缺陷,V0.2 改版须全接 TPAFE,撤销旧有意分配口径

This commit is contained in:
2026-10-10 03:24:10 +08:00
parent 61a6061950
commit 66b6cdf425
4 changed files with 27 additions and 8 deletions
@@ -447,7 +447,7 @@ sequenceDiagram
- **现状**:`tpafe5160_init()` 与 `tpafe5160_start_conv_irq()` 在启动序列调用一次;**全仓库无周期性 CONVST 重触发**;`data_ready`/`get_buf` 无消费者(`adc_task.c` 为空桩,且未在 `freertos.c` 创建)。
- **后果**:上电后仅采集 1 个样本,此后数据永久陈旧。
- **待确认(阻塞项 B0)**:① 采集是否持续 ② 采样率/通道 ③ 转发目标 ④ `APP_ADC_ENABLE` 语义。
- **实现约束**(见 §9):周期 CONVST 重触发 + `adc_task` 消费;**先修原子快照 API**(否则接入即撕裂);栈预算核算;V0.1 通道映射已固化 → `docs/硬件平台/ADC通道映射说明.md`(13/17 路置换;语义 UA/UB/UC/UN、IA/IB/IC/IN、V_ZL2=温度,其余备用;网名 ADC17 = PC4 用 `ADC_CHANNEL_14`,**不是** `ADC_CHANNEL_12`)。
- **实现约束**(见 §9):周期 CONVST 重触发 + `adc_task` 消费;**先修原子快照 API**(否则接入即撕裂);栈预算核算;V0.1 通道映射已固化 → `docs/硬件平台/ADC通道映射说明.md`(13/17 路置换;语义 UA/UB/UC/UN、IA/IB/IC/IN、V_ZL2=温度,其余备用;网名 ADC17 = PC4 用 `ADC_CHANNEL_14`,**不是** `ADC_CHANNEL_12`)。⚠ **8 路电气量分属 TPAFE / STM32 两片转换器属 V0.1 硬件缺陷**(跨转换器无同一时刻性、精度与量程不一致,登记簿 N-18,V0.2 改版要求全部走 TPAFE)→ 在 V0.1 上主板侧只做**逐通道独立监视**,功率 / 功率因数 / 相角 / 矢量类量一律取子板计量模块结果,不得由主板混算。
### 5.10 RS-485 采集(FR-RS485)⬜ 待实现
+9 -3
View File
@@ -21,7 +21,7 @@
| 编号 | 含义 | 原出处 | 备注 |
|---|---|---|---|
| `P0-x` / `P1-x` / `P2-x` / `P3-x` | 审计缺陷/改进项 | `项目审计改进清单.md`(2026-09-15/09-21 审计) | P0=功能 bug、P1=疑似 bug/健壮性、P2=改进、P3=卫生 |
| `N-x` | 跨文档观察/登记项 | `待处理内容.md` 登记簿 | 台架/审计发现、暂不在修复范围 |
| `N-x` | 跨文档观察/登记项 | `待处理内容.md` 登记簿 | 台架/审计发现、暂不在修复范围;**含硬件改版项**(需下一版硬件解决,固件侧只记口径,如 N-18) |
| `S-x` | 存储/日志管线待办 | 同上 | 存储侧健壮性 |
| `T-x` | 测试/验证基础设施待办 | 同上 | 工具链、CI |
| `S1~S14` / `A-1~A-7` | 测试充分性与架构改进专项 | `测试与架构改进建议.md`(2026-10-02 复审) | **编号不随条目删除而回收** |
@@ -38,7 +38,7 @@
| 级别 | 数量 | 关键项 |
|---|---|---|
| **P1** | 1 (+1 收尾) | **P1-1 ADC 采样路径产品构建中死亡**;P1-10 测试固件构建实测闭环(主体已闭环,见 §3.1) |
| 登记簿 | 9 | 网络:N-2(49s 日志静默,**低风险观察项**)、N-3(L5 基线重验)、N-4(pending 二期)、N-16(A2/A4 专项负向验证)、N-17(探针窗口心跳缺口);存储/日志:**S-1(defaultTask 栈余量 10%,需尽快处理)**、S-3(USART1 TX-only 根治)、S-4(dhara 重试自旋)、S-5(可选全序列卷锁) |
| 登记簿 | 10 | 网络:N-2(49s 日志静默,**低风险观察项**)、N-3(L5 基线重验)、N-4(pending 二期)、N-16(A2/A4 专项负向验证)、N-17(探针窗口心跳缺口);存储/日志:**S-1(defaultTask 栈余量 10%,需尽快处理)**、S-3(USART1 TX-only 根治)、S-4(dhara 重试自旋)、S-5(可选全序列卷锁);硬件:**N-18(8 路电气量分属两转换器 = V0.1 缺陷,V0.2 改版项)** |
| 测试/基础设施 | 5 | T-7(CI runner 未就绪)+ 测试架构专项 **S12**(断言宏)、**S1-c**(可选单测)、**A-4**(采集链路测试约束)、**A-5 残余**(CI 体积门禁盲区) |
> **网络侧另有 E-xx 未闭环项**(E-12/15/16/23/24/25/26/27/28/30/47/48/49/50/58/59/61,共 17 项)
@@ -69,7 +69,7 @@
| 序 | 任务 | 前置 | 说明 |
|---|---|---|---|
| **B0** | **产品定义确认**(阻塞项) | — | 需甲方明确:① 采集是否持续 ② 采样率(**通道语义已于 2026-10-09 确认并固化 → `docs/硬件平台/ADC通道映射说明.md`**:UA/UB/UC/UN=`AIN1~4`、IA/IB/IC/IN=`AIN8~11`、V_ZL2=温度、其余 8 路备用;主板只做监视/辅助测量,计量在子板) ③ 转发目标(MODBUS RTU?上行 TCP?)④ `APP_ADC_ENABLE`/`APP_RS485_ENABLE` 语义。**B1/B2 的规模完全取决于此** |
| **B0** | **产品定义确认**(阻塞项) | — | 需甲方明确:① 采集是否持续 ② 采样率(**通道语义已于 2026-10-09 确认并固化 → `docs/硬件平台/ADC通道映射说明.md`**:UA/UB/UC/UN=`AIN1~4`、IA/IB/IC/IN=`AIN8~11`、V_ZL2=温度、其余 8 路备用;主板只做监视/辅助测量,计量在子板。**注意:8 路电气量分属 TPAFE/STM32 两片转换器属 V0.1 硬件缺陷 → N-18**,主板侧不得做跨转换器的相位/功率类运算) ③ 转发目标(MODBUS RTU?上行 TCP?)④ `APP_ADC_ENABLE`/`APP_RS485_ENABLE` 语义。**B1/B2 的规模完全取决于此** |
| **B1** | **ADC 采集链路实现**(消化 P1-1、E-58) | B0 + **E-59 门禁** | 周期 CONVST 重触发 + `adc_task` 消费 `get_buf`;**先修 E-58**(原子快照 API,否则接入即撕裂);栈预算核算(两任务未入 `freertos.c` 栈表);**取数必须按 `docs/硬件平台/ADC通道映射说明.md`**(TPAFE `buf[2]=IA`/`buf[5]=UN`/`buf[6]=UA`;STM32 侧 ADC1 **已于 2026-10-09 生成**:`hadc1` + `MX_ADC1_Init()`、9 通道 Rank1~9、144 cycles、ADCCLK=21 MHz、软件触发,网名 ADC17=PC4 用 `ADC_CHANNEL_14`;剩活只剩消费者与 `adc_task` 建任务) |
| **B2** | **RS-485 采集链路实现**(消化 E-50、E-49) | B0 + **E-59 门禁** | 双缓冲 + 序号(防包撕裂)+ DE 收尾(超时路径等 TC)+ 协议状态机(`App/protocol/` 正是为此预留) |
| **B3** | **E-59 门禁固化入 `AGENTS.md`** | — | 把"接消费者前必须先修 E-36/E-44/E-45/E-58 + 栈预算"写成强制门禁,与"改栈前跑 `stack_report.py`"同级。**这是防止 B1/B2 带缺陷上线的关键** |
@@ -147,6 +147,12 @@
| S-4 | **dhara 重试自旋残留**——`try_recover()` 的 `DHARA_MAX_RETRIES`(8) 自旋在坏块密集时仍可能长时间占用 defaultTask(喂狗点) | 2026-10-02 | 低优先:现有 `vol_lock` + 喂狗节奏缓解;若台架再出"存储侧喂狗饥饿"再排期 | `Lib/dhara/map.c` |
| S-5 | **可选全序列卷锁**——现卷锁仅覆盖 `syslog` / `cfg` / `lftpd` 三条路径(`vol_lock_wait(0)` try 语义),其它潜在访问点(如 UI 读日志)未纳入 | 2026-10-02 | 待评估:先确认是否真有第二写者;无则关闭本项 | `App/fs/vol_lock.{c,h}` |
**硬件(V0.1 缺陷 → V0.2 改版项)**
| # | 事项 | 发现 | 证据与现状 | 出处 |
|---|---|---|---|---|
| N-18 | **8 路电气量分属两片转换器(V0.1 硬件缺陷,需下一版硬件修改)**——UA/UN/IA 走 TPAFE5160(16 位、8 通道同步、±5 V 双极性),UB/UC/IB/IC/IN 走 STM32 ADC(12 位、顺序扫描、0~3.3 V 单极性):① 两片转换器无共同采样触发 + STM32 侧顺序扫描(9 通道一轮 ≈ 67 µs)→ 跨转换器通道**无同一时刻性、相位关系不确定**,主板侧功率/功率因数/相角/对称分量类运算不成立;② 同族电气量精度与量程不一致(LSB ≈ 152.6 µV vs ≈ 806 µV,且 STM32 侧前端无中点偏置、负半周削顶);③ 语义与硬件归属交叉,固件映射/UI 通道序/自检注入须逐通道查表绕开 | 2026-10-10 定性更正(**撤销** 2026-10-09 建档时"有意分配、不要修正"的说法) | **V0.2 改版要求**:8 路电气量 UA/UB/UC/UN/IA/IB/IC/IN **全部接 TPAFE5160**,与 TPAFE 上 5 路备用路(AIN5/13/7/15/12)对调串联电阻在转换器一侧的目的地——元件数量与料号不变,属走线级改动。**V0.1 现板软件口径**:主板侧只做逐通道独立监视,禁止跨转换器做相位/功率/功率因数/矢量类运算(此类量取子板计量模块结果)。固件侧尚无消费者(P1-1 / B1 未实现),实现时按语义映射表取数即可 → V0.2 改版只改映射表内容,上层语义与代码不动 | `硬件平台/ADC通道映射说明.md` §1/§7;`硬件平台/V0.1_网表详细分析报告.md` §1.4 V10、§6-3 |
**测试与验证基础设施**
| # | 事项 | 优先级 | 问题与证据 | 处置方向 | 出处 |
+13 -1
View File
@@ -21,7 +21,17 @@
| **温度** | V_ZL2 | 温度 | 温度检测模拟采样 |
| 备用 | AIN5 / AIN6 / AIN7 / AIN12 / AIN13 / AIN14 / AIN15 / V_ZL1 | — | **未使用**(悬空或不用),软件侧一律标 `RESERVED`,不参与采集与上报 |
**设计口径(重要)**:本产品的**电能计量在子板(计量模块)完成**,主板 ADC 只做**监视 / 辅助测量**。因此 8 路电气量被有意分到两片转换器上(UA/UN/IA 走 TPAFE,UB/UC/IB/IC/IN 走 STM32 12 位 ADC)——**这不是缺陷,是有意分配**,不要按"8 路电气量应全部走 TPAFE"去"修正"它。
**设计口径(重要,2026-10-10 更正)**:本产品的**电能计量在子板(计量模块)完成**,主板 ADC 只做**监视 / 辅助测量**。但**"8 路电气量被分到两片转换器上"(UA/UN/IA 走 TPAFE5160,UB/UC/IB/IC/IN 走 STM32 12 位 ADC)是 V0.1 的硬件缺陷**——建档时(2026-10-09)写的"有意分配、不要按'8 路电气量应全部走 TPAFE'去修正"**说法作废**:该分配**就是需要修正的对象**,已列入下一版硬件(V0.2)改版项(登记簿 **N-18**)。
**缺陷实质(为什么必须改)**:
1. **跨转换器通道没有同一时刻性**:TPAFE5160 是 8 通道**同步**采样,STM32 ADC 是**顺序**扫描(9 通道一轮 ≈ 67 µs),且两片转换器**没有共同采样触发**(CONVST 只打 TPAFE,ADC1 为软件触发)。于是 UA↔UB、IA↔IB 这类同族量之间**相位关系不确定**,主板侧任何功率 / 功率因数 / 相角 / 对称分量类运算都不成立。
2. **精度与量程不一致**:TPAFE 16 位 ±5 V **双极性**(LSB ≈ 152.6 µV)vs STM32 12 位 0~3.3 V **单极性**(前端无中点偏置,交流量负半周削顶;LSB ≈ 806 µV)。同为相电压,UA 与 UB/UC 满量程码值差 16 倍、可用象限也不同——同一套算法无法统一处理 8 路电气量。
3. **语义与硬件归属交叉**:UA 在 TPAFE、UB 在 STM32,固件映射表 / UI 通道序 / 自检注入都必须逐通道查表绕开这个交叉(本文件 §4、§5 两张表的存在本身就是代价)。
**下一版硬件(V0.2)改版要求**:**8 路电气量 UA/UB/UC/UN/IA/IB/IC/IN 全部接到 TPAFE5160 的 8 个通道**,备用路与温度(V_ZL2)留给 STM32 ADC。TPAFE 现被 5 条备用路占着(`AIN5`/`AIN13`/`AIN7`/`AIN15`/`AIN12` → ADC1/ADC2/ADC4/ADC5/ADC8),与要迁过来的 5 路(UB/UC/IB/IC/IN)**正好 5 换 5**:只需把这 5 路串联电阻在转换器一侧的目的地对调,**元件数量与料号不变,属走线级改动**。改版后本表 §3 的"转换器 / 代码通道"两列须按 V0.2 网表重出——这也是消费侧**必须按语义取数、不得写死下标**的原因。
**V0.1 现板的软件口径**:主板侧只做**逐通道独立监视**(有效值 / 越限 / 温度),**禁止**做跨转换器的同周期相位、功率、功率因数、矢量类运算;确需此类量,取子板计量模块的结果。
---
@@ -118,6 +128,7 @@ STM32(U17)为 LQFP144 脚号。
| 项 | 现状 | 影响 |
|---|---|---|
| **通道归属(硬件缺陷)** | 8 路电气量分属两片转换器:UA/UN/IA → TPAFE,UB/UC/IB/IC/IN → STM32 ADC | **V0.1 硬件缺陷**(非有意分配,理由见 §1)→ V0.1 上禁止跨转换器做相位/功率/功率因数/矢量类运算;**V0.2 改版要求 8 路电气量全部走 TPAFE**(登记簿 N-18) |
| STM32 ADC 外设 | **已生成(2026-10-09,CubeMX 6.17 + FW_F4)**:`Src/adc.c`/`Inc/adc.h` 已入库并挂进 `MDK-ARM/*.uvprojx`;`Inc/stm32f4xx_hal_conf.h` 的 `HAL_ADC_MODULE_ENABLED` 已生效;HAL `stm32f4xx_hal_adc.c/_ex.c` + `stm32f4xx_ll_adc.h` 已补入仓库(HAL 原本是裁剪子集);`Src/main.c` 里 `MX_ADC1_Init()` 排在 `MX_IWDG_Init()` 之后。生成配置核对无误:9 通道 / Rank 1~9 / 全部 144 cycles / `ScanConvMode=ENABLE` / `ContinuousConvMode=DISABLE` / `ExternalTrigConv=ADC_SOFTWARE_START` + `EDGE_NONE` / `EOCSelection=ADC_EOC_SINGLE_CONV` / `DataAlign=RIGHT` / 12 位;`HAL_ADC_MspInit()` 已把 PA0~PA7+PC4 配成 `GPIO_MODE_ANALOG` | 硬件通路已打通(`hadc1` 可用);**仍无消费者**——见下面两行 |
| ADC 时钟 | CubeMX 的 F4 ADC 面板**有** Clock Prescaler 一项(此前"面板没有该项、固定 DIV2"的判断有误),已选 **PCLK2/4 → ADCCLK = 21 MHz** ✓。面板里 **DIV2 是灰的、选不到**:DB 里 `FadcConstraint Max=36000000`,APB2 = 84 MHz → DIV2 = 42 MHz 超限,该候选值被 `Action="DISABLE"` 禁掉,超规值进不来 | **不设额外防护(2026-10-09 决定)**:约束已由 CubeMX 把关;`.ioc` 虽不保存 `ADC1.ClockPrescaler` 键,重生成也只会回落到约束允许的值。按 144+12 cycles 算 ≈ 7.4 µs/通道、9 通道一轮 ≈ 67 µs |
| `adc_task` | **空桩**:`App/task/adc_task.c` 只 `osDelay(1000)`,且任务未在 `Src/freertos.c` 创建 | 无消费者,数据路径死(登记簿 P1-1) |
@@ -142,3 +153,4 @@ STM32(U17)为 LQFP144 脚号。
|---|---|
| 2026-10-09 | 建档:固化 V0.1 语义分配(UA/UB/UC/UN、IA/IB/IC/IN、V_ZL2=温度、其余备用)与 17 路端到端映射;确立"主板只做监视/辅助测量、计量在子板"口径;勘误 PC4 通道号(IN12→IN14)与 PB0 定性(=IN8) |
| 2026-10-09 | **CubeMX 生成 ADC1(9 通道)落地**:新增 `Src/adc.c`/`Inc/adc.h` + HAL adc 三文件并挂进 uvprojx、`HAL_ADC_MODULE_ENABLED` 生效、`MX_ADC1_Init()` 入 `main.c`;分频 PCLK2/4 = 21 MHz——面板里 DIV2 已被 `FadcConstraint`(36 MHz)约束禁掉,**故不加 `.ioc` 键 / 代码守卫 / 审计项等额外防护**(曾加过,按决定撤除,理由见 §7"ADC 时钟"行);修正 PA0 标签笔误 `AD9_RES`→`ADC9_RES`。⚠ 本次重生成打回了 5 处定制(IWDG 延迟启动锚点、HardFault + 3 个 Fault 手工 Handler、`FreeRTOSConfig.h` 加固区、`freertos.c` 三处栈核算注释),已全部复原;存活审计新增 1 项 `adc1-hal-enabled`(共 19 项),现 19 通过 / 1 警告(timeSyncTask 手工定义)/ 0 失败,`@build` 0 错 0 警 |
| 2026-10-10 | **口径更正**:8 路电气量分属 TPAFE / STM32 两片转换器**定性为 V0.1 硬件缺陷**,撤销 2026-10-09 建档时"有意分配、不要修正"的说法;补记缺陷实质(跨转换器无同一时刻性、16 位双极性 vs 12 位单极性、语义与归属交叉)与 **V0.2 改版要求**(8 路电气量全部接 TPAFE,与 5 路备用路对调串联电阻目的地,BOM 不变);§7 新增"通道归属"行,明确 V0.1 上禁止跨转换器做相位/功率类运算。同步更正 `V0.1_网表详细分析报告.md` §1.4(新增 V10)/ §6-3,登记簿新增 **N-18** |
@@ -50,11 +50,11 @@
| §5.3 R35 1.5k→10k(视 U8 分档) | —(条件项) | 仍 1.5k,分档未核则维持原判 |
| 代码项(B3① GPIO 配置、功能级断言) | 与网表无关 | 见本文 §9 固件同步清单(重排后工作量变大) |
### 1.4 V0.1 新增关注项(建议编号 V1~V9,纳入待核)
### 1.4 V0.1 新增关注项(建议编号 V1~V10,纳入待核)
| # | 事项 | 建议 |
|---|---|---|
| V1 | **AIN↔ADC 通道置换**(§6):13/17 路对应关系变化,网名 AINn 与 ADCn 编号不再一致 | 确认是否为走线优化之有意设计;固件通道映射表、UI 显示、自检上报同步更新并逐通道实测 |
| V1 | **AIN↔ADC 通道置换**(§6):13/17 路对应关系变化,网名 AINn 与 ADCn 编号不再一致 | 已确认(2026-10-09):置换本身按走线安排处理,固件通道映射表、UI 显示、自检上报同步更新并逐通道实测(→ `ADC通道映射说明.md`);**但"8 路电气量分属两片转换器"不是走线优化,是缺陷 → 见 V10** |
| V2 | **C3 封装/值变更**(§7):AVDDL 1.0V 大容 BD6.3 220µF → C0805,网表值 '{Value}' 未记录 | 对照 RTL8305 V10OUT 输出电容要求(V0.0 §4.2,手册"需一只外部二极管+大容")核实 0805 容值(0805 上限约 22~47µF)与耐压/ESR;值补录进 BOM |
| V3 | **LED 网名↔丝印倒序**(§5):net LEDn 现驱动 LED(11−n) | 与结构/丝印确认 LED1 位置定义,固件 LED 序表同步 |
| V4 | **SWCLK 引脚 104→109**(§4.6):数据手册核对确认 104=PA12(无 JTAG 功能,V0.0 设计缺陷 B4——实测 V0.0 实板 SWD 不通,飞线至 PA14 后调通)、109=PA14=JTCK-SWCLK ✓——**V0.0 §3.3-3 的"实物抽查 3 脚"待核项由手册证据关闭**(25=NRST、23/24=PH0/PH1、73=PB12 全部与手册一致),V0.1 SWD 连接正确 | 上板时 CN2 烧录/调试通断验证一次(仅物理连线确认) |
@@ -63,6 +63,7 @@
| V7 | **VCAP1/VCAP2(U17.71/106)旁路电容 C94/C79 值未标注**:数据手册要求 VCAP1/VCAP2 各接 1~4.7µF 低 ESR 陶瓷电容至 VSS(内部 1.2V LDO 稳定裕量) | 实测 C94/C79 容值(若为 100nF 则低于手册建议,168MHz 满负荷下 1.2V 轨纹量/稳定性需留意);值补录 BOM |
| V8 | **V15/J3/F3 子板 LED 3 线落在 PC13/PC14/PC15**(脚 7/8/9):备份域电源开关供电,手册 Note 3 限**灌流 ≤3mA、≤2MHz、不可作电流源** | 核子板 LED 驱动电流需求;超 3mA 则 V0.2 移足驱力脚或子板加三极管扩展 |
| V9 | **V0.1 主板 SDIO 固定引脚组全被占用**:PC6/PC7/PC8/PC9/PA8(TPAFE 控制)+ PA9(USART1)+ PC10/PC11/PC12/PD2(UART4/UART5)= SDIO 全部 10 脚(F407 SDIO 无重映射) | 架构约束备案:V0.1 主板**无 SDIO 能力**;当前设计不受影响(代码未启用 SDIO,FatFs 卷在 SPI NAND 上) |
| **V10** | **8 路电气量分属两片转换器(V0.1 硬件缺陷,V0.2 改版项)**:UA/UN/IA 走 TPAFE5160(16 位、同步、±5 V 双极性),UB/UC/IB/IC/IN 走 STM32 ADC(12 位、顺序扫描、0~3.3 V 单极性)→ 跨转换器通道**无同一时刻性**(相位关系不确定)、精度与量程不一致。详见 §6-3 与 [`ADC通道映射说明.md`](ADC通道映射说明.md) §1(2026-10-10 定性更正,登记簿 **N-18**) | **V0.2 改版**:8 路电气量 UA/UB/UC/UN/IA/IB/IC/IN **全部接 TPAFE5160**,与 TPAFE 上 5 路备用路(AIN5/13/7/15/12)对调串联电阻在转换器一侧的目的地——元件数量与料号不变,属走线级改动。V0.1 现板:主板侧只做逐通道监视,**不做**跨转换器的相位/功率/功率因数/矢量运算 |
## 2. 元件级变化
@@ -213,7 +214,7 @@ V0.0 报告 §2.2/§4.7 的 6 路 MCU 控制 LED(实板位号 LED5~LED10,阴
1. **TPAFE 8 路 ↔ STM32 ADC 9 路的"归属"也变了**:V0.1 中 TPAFE(U3)采 U5 的 B6/A6/B5/A5/B4/A4/A3/B3,STM32 ADC 采 C13/C9/C10/C14/C12/C11/A8/B7——两族通道数(8+9)不变,成员重分。
2. 网名 AINn 与 ADCn 编号**不再一一对应**(如 AIN1→ADC7),任何按"AINn=ADCn"假设的代码/文档/测试都会静默采错通道——这正是 V0.0 §1.6 警示的"静默死亡"型风险,务必以本表建立映射。
3. 置换疑似按 U5 连接器物理位置重排走线(TPAFE 8 路恰为 B6→B3 降序)——**2026-10-09 已与硬件确认:有意设计**(电能计量在子板完成,主板 ADC 只做监视/辅助测量,故 8 路电气量分到 TPAFE 与 STM32 两侧)。语义分配(UA/UB/UC/UN、IA/IB/IC/IN、V_ZL2=温度检测,其余 8 路备用)与 17 路端到端映射已固化为 [`docs/硬件平台/ADC通道映射说明.md`](ADC通道映射说明.md);固件通道映射表、UI 通道显示、自检逐通道注入验证(V0.0 §5.1-6)按该表执行。
3. 置换疑似按 U5 连接器物理位置重排走线(TPAFE 8 路恰为 B6→B3 降序)。**2026-10-10 更正**:置换本身(AINn↔ADCn 编号打乱)可视为走线安排,但**"8 路电气量分到 TPAFE 与 STM32 两侧"属 V0.1 硬件缺陷**——2026-10-09 曾按"计量在子板、主板只做监视"把它确认为"有意设计",该定性**作废**。缺陷实质:TPAFE 8 通道同步采样、STM32 ADC 顺序扫描且两者无共同采样触发 → 跨转换器通道**无同一时刻性 / 相位关系不确定**;16 位 ±5 V 双极性 vs 12 位 0~3.3 V 单极性 → 同族量精度与量程不一致。**下一版硬件(V0.2)需把 8 路电气量 UA/UB/UC/UN/IA/IB/IC/IN 全部改接 TPAFE5160**(与 TPAFE 上 5 路备用路对调串联电阻目的地,BOM 不变),登记簿 **N-18**。语义分配(UA/UB/UC/UN、IA/IB/IC/IN、V_ZL2=温度检测,其余 8 路备用)与 17 路端到端映射已固化为 [`docs/硬件平台/ADC通道映射说明.md`](ADC通道映射说明.md)(缺陷实质与改版要求见其 §1);固件通道映射表、UI 通道显示、自检逐通道注入验证(V0.0 §5.1-6)按该表执行。
## 7. 电源/地网络成员变化(拓扑不变)