feat(adc): 心跳新增 adc: 行输出 9 路原始码值,并补卡 0 台架注入验证流程
背景:ADC 采集的软件链路已全部打通(节拍、语义取数、折算、相量、 200 ms 快照、104/UI 消费),但"读数对不对"从未验证过——卡 0 的 已知电压注入一直挂账。挂账的直接原因之一是读数出口不够用: 固件只有 cal: 行(UA/UN/IA 三路,mV)与 first: 行(9 路码值,仅 开机一次),验 8 个通道 × 3 个注入点要复位二十余次。 改动一(App/task/adc_task.c,v3.3) - 心跳新增 adc: 行,每 10 s 输出 9 路原始码值,与 first: 行同序 同格式,台架"改电压 → 读一行"即可对表,全程免复位。 - 不并入 cal: 行:9 个码值会把该行推到 168 字符,撞 DBG_CON_LINE_MAX(192) 的静默截断边界(截断不报错,只会少打几路, 是最难发现的台架假数据来源)。 - 无新增跨任务状态、无新增外设访问;栈 +36 B(局部码值数组), adcTask 静态最坏 1400 B / 余量 1160 B(底线 1024 B),stack_report PASS;静态 RAM 不变,Flash +188 B。 改动二(新增 docs/测试说明/ADC前端注入验证流程.md) - 卡 0 的执行侧:注入点清单、期望码值表、零点/线性/映射/极性/节奏 五步、现场记录表、安全红线、已知坑。 - 固化 2026-10-27 的网表结论:逐通道追 V0.1.tel 确认 ADCn 节点上 只有"串阻 2 脚 + 滤波电容 + 转换器引脚",没有对地分流电阻;所谓 "1k 到地"是 TPAFE 负输入脚 AIN_nGND 经 1k 拴到 AGND 的差分滤波。 故本板不存在 2:1 分压,端子侧斜率 = 引脚侧斜率 = 6553.6 / 1241.2 码/V。数据可信.md §2.1 的 305.18 / 1611.3 µV/码 确认不成立。 - 不验交流:台架无信号源,且五路单极性削顶。 改动三(索引与指针) - docs/README.md 测试说明索引、测试文档模板规范.md 的 ADC 缩写行 (原"待立")同步。 - 数据可信.md 卡 0 增加指向该流程的指针(本表只写判据,不写怎么 接表笔)。 门禁:Keil 构建 0 错误 0 警告;check_ids --strict 通过; check_doc_links --all --sections-strict 通过(193 文档 / 2871 处引用); pre-commit 全过(含 cppcheck、编码规范、体积档、标定层与量纲回归 单测);两处内存台账已按 --write / --update 刷新。
This commit is contained in:
@@ -99,6 +99,13 @@
|
||||
* meas_tick()(全仓调用点 = 1,评审判据);品质注入源 =
|
||||
* adc_cal_flags() 削顶位图,频率 = 同拍 freq 读数;心跳新增
|
||||
* meas: 行(seq/v/ua·un·ia_mv/f/fv),读数比对类判据待台架实测
|
||||
* v3.3 2026-10-27 DTU 项目组 卡 0 台架读出口:心跳新增 adc: 行——连续输出 9 路
|
||||
* **原始码值**(与 first: 行同序同格式)。动因 = 注入验证
|
||||
* 原本只能靠"改电压 + 复位 + 抓一次 first:",8 个通道 × 3 个
|
||||
* 注入点要复位二十余次;改为每 10 s 一行后可全程免复位。
|
||||
* 不并进 cal: 行是因为 9 个码值会把该行推到 168 字符、
|
||||
* 撞 DBG_CON_LINE_MAX(192) 的静默截断边界(见该行注释)。
|
||||
* 无新增跨任务状态、无新增外设访问,栈 +36 B(局部码值数组)
|
||||
*/
|
||||
|
||||
#include "adc_task.h"
|
||||
@@ -520,6 +527,31 @@ void adc_task_func(void *arg) {
|
||||
|
||||
log_phasors("hb");
|
||||
|
||||
/* 全 9 路**原始码值**(「数据可信」卡 0 注入验证的唯一连续读出口):
|
||||
* 与 first: 行同序同格式(UA/UB/UC/UN/IA/IB/IC/IN/T),台架
|
||||
* "改电压 → 读一行"即可对表,不必为每个注入点反复复位去抓只在开机
|
||||
* 出现一次的 first: 行。两处的通道顺序是同一份约定,改一处必须同步另一处。
|
||||
* ⚠ 为何单独一行、不并进下面的 cal: 行:cal: 已 75 字符,9 个码值最坏
|
||||
* 再加 93 字符,逼近 DBG_CON_LINE_MAX(192) 的截断边界——截断**不报错**,
|
||||
* 只会静默少打几路,是最难发现的台架假数据来源;分行后各自留足余量。
|
||||
* ⚠ 取数失败(-2 该来源无有效数据)时该槽保持 0,故"9 路全 0"读作
|
||||
* "没数据",不读作"九路都是 0 V"——判据是 frames 心跳是否仍在涨。 */
|
||||
{
|
||||
int32_t rc[ADC_SEM_COUNT];
|
||||
uint8_t j;
|
||||
|
||||
for (j = 0u; j < (uint8_t)ADC_SEM_COUNT; j++) {
|
||||
rc[j] = 0;
|
||||
(void)adc_input_raw((adc_semantic_t)j, &rc[j]);
|
||||
}
|
||||
DBG_INFO("adc: UA=%ld UB=%ld UC=%ld UN=%ld IA=%ld IB=%ld IC=%ld IN=%ld T=%ld",
|
||||
(long)rc[ADC_SEM_UA], (long)rc[ADC_SEM_UB],
|
||||
(long)rc[ADC_SEM_UC], (long)rc[ADC_SEM_UN],
|
||||
(long)rc[ADC_SEM_IA], (long)rc[ADC_SEM_IB],
|
||||
(long)rc[ADC_SEM_IC], (long)rc[ADC_SEM_IN],
|
||||
(long)rc[ADC_SEM_TEMP]);
|
||||
}
|
||||
|
||||
/* L1.5/采样通道自检 台架观测面(×1000 mV 定点,MicroLIB 无 %f):
|
||||
* ua/un/ia_mv = 三路 TPAFE 引脚电压毫伏(未标定域,**不是**
|
||||
* 二次值;卡 12 注入验证的读数落点,偏差判据 ≤2 %)
|
||||
|
||||
@@ -122,6 +122,7 @@ docs/
|
||||
| [`链路延迟测试说明.md`](测试说明/链路延迟测试说明.md) | 网络链路时延分段定义、判定基线、执行流程 |
|
||||
| [`模拟器差距清单.md`](测试说明/模拟器差距清单.md) | **PC 模拟器 vs 真机差距登记册**(L3 门禁可信度依据;改动涉及网络/日志/硬件层前必查 §3 决策规则) |
|
||||
| [`实机测试实施指南.md`](测试说明/实机测试实施指南.md) | **上板(真机)测试执行流程**(按顺序:环境预检 → `@test`+自检判定 → IWDG 注入/长跑 → 堆告警 → GD5F 错误通道 → 网络基线 → 工程卫生;每步含判据/命令/状态);已完成事项证据去向见 §10 |
|
||||
| [`ADC前端注入验证流程.md`](测试说明/ADC前端注入验证流程.md) | **ADC 前端与两片转换器的台架注入验证**(`docs/任务规划/数据可信.md` 卡 0 的执行侧):注入点清单 / 期望码值表 / 零点·线性·映射·极性·节奏五步 / 现场记录表;**不需示波器与信号源**,一块万用表即可 |
|
||||
|
||||
**主机侧单元测试(L0.5)**
|
||||
|
||||
|
||||
@@ -211,6 +211,8 @@ typedef struct {
|
||||
> 序栏 0 / 0b 只为阅读顺序(补的是 §2.6 这一前置验证),1~12 的编号与外部引用保持不变。
|
||||
> **顺序:0 → 0b → 12**。**卡 0 是唯一"只需一块万用表"的卡**,没有外部依赖,是今天就能做的
|
||||
> 第一步;它同时是 M4 ①、卡 12 与 B10 送检的前置。
|
||||
> **卡 0 的台架执行步骤**(注入点清单、期望码值、五步流程与现场记录表)见
|
||||
> `docs/测试说明/ADC前端注入验证流程.md`——本表只写判据,不写怎么接表笔。
|
||||
|
||||
| 序 | 任务 | DoD(可验证验收判据) | 硬依赖 | 资源 | 写范围 | 状态 |
|
||||
|---|---|---|---|---|---|---|
|
||||
|
||||
@@ -47,10 +47,10 @@ dhara 失败类 +84;RO 另 +208,全是该失败类名表)→ `ER_IROM1`
|
||||
<!-- MEM_SNAPSHOT:BEGIN generated by scripts/check_mem_numbers.py -->
|
||||
| 区域 | 用量 | 容量 | 占比 |
|
||||
|---|---|---|---|
|
||||
| ER_IROM1 | 261,576 B (255.45 KB) | 1,048,576 B (1024 KB) | 24.9% |
|
||||
| ER_IROM1 | 261,764 B (255.63 KB) | 1,048,576 B (1024 KB) | 25.0% |
|
||||
| RW_IRAM1 | 81,072 B (79.17 KB) | 131,072 B (128 KB) | 61.9% |
|
||||
| RW_CCM | 57,376 B (56.03 KB) | 65,280 B (64 KB) | 87.9% |
|
||||
| **Flash (ROM 合计)** | **263,148 B (257.0 KB)** | 1,048,576 B (1024 KB) | **25.1%** |
|
||||
| **Flash (ROM 合计)** | **263,336 B (257.2 KB)** | 1,048,576 B (1024 KB) | **25.1%** |
|
||||
<!-- MEM_SNAPSHOT:END -->
|
||||
|
||||
各区的容量与常量来源:
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<!-- MEM_BUDGET:BEGIN generated by scripts/ram_baseline.py -->
|
||||
| 区域 | 用量 | 容量 | 占比 | 门禁(≤92%) |
|
||||
|---|---|---|---|---|
|
||||
| ER_IROM1 (Flash) | 261,576 B | 1,048,576 B | 24.9% | 参考 |
|
||||
| ER_IROM1 (Flash) | 261,764 B | 1,048,576 B | 25.0% | 参考 |
|
||||
| RW_CCM | 57,376 B | 65,280 B | 87.9% | PASS |
|
||||
| UNINIT_CCM | 48 B | 256 B | 18.8% | 参考 |
|
||||
| RW_IRAM1 | 81,072 B | 131,072 B | 61.9% | PASS |
|
||||
|
||||
@@ -0,0 +1,248 @@
|
||||
# ADC 前端注入验证流程(台架)
|
||||
|
||||
> **这篇是什么**:把「ADC 采到的数到底对不对」从"没人验过"推进到"有实测斜率与零点"的固定动作。
|
||||
> 它是 `docs/任务规划/数据可信.md` 卡 0 的**执行侧**——那边写判据,这边写怎么接表笔、读哪一行日志、
|
||||
> 填哪张表、结果往哪回写。补的是 `docs/硬件平台/ADC通道映射说明.md` §8「逐通道验证方法」
|
||||
> 长期挂账的"尚未执行"(挂账自 2026-10-09)。
|
||||
>
|
||||
> **只验直流**:零点 / 线性 / 通道映射 / 极性。不验交流有效值——台架无信号源,且 V0.1 有五路
|
||||
> 单极性削顶(`UB/UC/IB/IC/IN`),交流精度要等标准源到位后的两点标定(`docs/任务规划/数据可信.md` 卡 12)。
|
||||
>
|
||||
> **不需要**示波器、信号源、标准源。**只需要**一块万用表 + 一个电位器 + 串口日志。
|
||||
|
||||
---
|
||||
|
||||
## 1. 为什么非做不可
|
||||
|
||||
现有台架判据只证明过"通路是活的":9 通道全部转换成功、零超时、互异非饱和、跨次开机读数不同。
|
||||
这些**一条都不证明读数正确**——连符号位对不对都没验过。而下游已经全部按"工程量"消费了:
|
||||
保护判据、104 遥测、UI 交流量页读的都是 `adc_cal_apply()` 的输出。系数错一倍,三处一起错,且
|
||||
没有任何一处会报错。
|
||||
|
||||
所以这一步的性质是**给整条链路的量纲盖章**,不是"补充测试"。
|
||||
|
||||
## 2. 前置事实:这个前端不是分压器
|
||||
|
||||
2026-10-27 按 `docs/硬件平台/V0.1.tel` 逐通道追线,以 UA 为例:
|
||||
|
||||
```text
|
||||
U5.A3 (AIN1,端子侧) ──[R31 1k]── ADC7 ──┬── U3.61 (AIN_7P,正输入)
|
||||
└──[C44]── ADC7_GND ──[R32 1k]── AGND
|
||||
└── U3.62 (AIN_7GND,负输入)
|
||||
```
|
||||
|
||||
`ADC7` 这个节点上**只有** R31、C44、U3.61 三样东西,**没有对地电阻**。所谓"1k 到地"是 R32,
|
||||
它接在 TPAFE 的**负输入脚 AIN_7GND**(芯片手册 pin62)上,是把差分负端经 1k 拴到 AGND,
|
||||
属于差分滤波,不是信号分压。STM32 侧更直接:`AIN2 —[R52 1k]— ADC17 —[C111]— AGND`,同样没有分流电阻。
|
||||
|
||||
**由此得到两条可直接用的结论**:
|
||||
|
||||
1. **不存在 2:1 分压**。`docs/任务规划/数据可信.md` §2.1 那组"板级系数 305.18 / 1611.3 µV/码"
|
||||
(按 2:1 折算到 `AINn` 侧的条件值)在本板上不成立,且该文档已禁止它进代码——本次实测只需**确认**它不成立。
|
||||
2. **端子侧斜率 = 引脚侧斜率**。所以在**端子侧**注入既安全(有 1k 串阻护着芯片)又能直接验 LSB,
|
||||
不必去碰 LQFP 引脚。
|
||||
|
||||
期望斜率(由转换器满量程事实推出,与前端无关):
|
||||
|
||||
| 转换器 | 满量程 | LSB | **期望斜率** |
|
||||
|---|---|---|---|
|
||||
| TPAFE5160 | ±5 V(10 V 跨度 / 65536 码) | 152.587890625 µV | **6553.6 码/V** |
|
||||
| STM32 ADC1 | 0~3.3 V(3.3 V / 4096 码) | 805.6640625 µV | **1241.2 码/V** |
|
||||
|
||||
## 3. 注入点清单
|
||||
|
||||
串联电阻的两只焊盘就是两个注入层级:**1 脚 = 端子侧(靠 U5)**,**2 脚 = 引脚侧(靠转换器)**。
|
||||
|
||||
| 语义 | 串阻 | 端子侧节点 | 引脚侧节点 | 转换器脚 | 期望斜率 |
|
||||
|---|---|---|---|---|---|
|
||||
| UA | R31 | `AIN1`(U5.A3) | `ADC7` | U3.61 | 6553.6 |
|
||||
| UN | R28 | `AIN4`(U5.A4) | `ADC6` | U3.59 | 6553.6 |
|
||||
| IA | R19 | `AIN8`(U5.B5) | `ADC3` | U3.53 | 6553.6 |
|
||||
| UB | R52 | `AIN2`(U5.B7) | `ADC17` | U17.44(PC4) | 1241.2 |
|
||||
| UC | R20 | `AIN3`(U5.C14) | `ADC12` | U17.37(PA3) | 1241.2 |
|
||||
| IB | R49 | `AIN9`(U5.A8) | `ADC15` | U17.42(PA6) | 1241.2 |
|
||||
| IC | R46 | `AIN10`(U5.C9) | `ADC10` | U17.35(PA1) | 1241.2 |
|
||||
| IN | R48 | `AIN11`(U5.C10) | `ADC11` | U17.36(PA2) | 1241.2 |
|
||||
| 温度 | R47 | `V_ZL2`(U5.C11) | `ADC14` | U17.41(PA5) | 不验(非线性,不参与标定) |
|
||||
|
||||
> 引脚侧没有串阻保护,注入前**必须外串 10 k 限流**。除非端子侧结果对不上、需要分离
|
||||
> "转换器的错"和"前端的错",否则不要用引脚侧。
|
||||
|
||||
## 4. 读数出口(固件只给这四行,没有命令控制台)
|
||||
|
||||
| 日志行 | 频率 | 内容 | 用途 |
|
||||
|---|---|---|---|
|
||||
| `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 的节奏判据 |
|
||||
|
||||
`adc:` 行是 2026-10-27 新增的(`App/task/adc_task.c` 心跳块),此前只有 `cal:` 的三路,
|
||||
验 8 个通道要复位二十余次。现在**全程不必复位**。
|
||||
|
||||
⚠ `adc:` 行某路取数失败时该槽打 0,所以"9 路全 0"要读作"没数据",判据是同一份心跳里
|
||||
`frames` 是否还在涨。
|
||||
|
||||
## 5. 步骤
|
||||
|
||||
### 5.1 步骤 0:断电核阻(5 分钟)
|
||||
|
||||
断电,万用表电阻档逐路量 **注入点对 AGND**:
|
||||
|
||||
- 端子侧应量到 **1 kΩ 量级**(串阻 + 转换器输入阻抗并联,不会精确 1 k);
|
||||
- 引脚侧应量到 **高阻**(只有滤波电容和转换器输入)。
|
||||
|
||||
任一路量到 **0 Ω 或几十 Ω** → 停,先查焊接/短路,不要通电。
|
||||
|
||||
### 5.2 步骤 1:零点(这一步是整套测试的分水岭)
|
||||
|
||||
把注入点**短接到 AGND**(短接点先用 0 Ω 档确认与 AGND 直通),读 `adc:` 行。
|
||||
|
||||
| 通道 | 判据 | 当前空载实测(浮空) |
|
||||
|---|---|---|
|
||||
| UA / UN / IA | \|码\| ≤ 10 | **≈ 11430** |
|
||||
| UB / UC / IB / IC / IN | \|码\| ≤ 5 | **≈ 1000** |
|
||||
|
||||
**为什么这一步最关键**:空载(输入浮空)读数比判据高两个数量级,最可能的解释是输入悬空后
|
||||
漏电流在滤波电容上建立的平衡点——短接 AGND 后应塌回 0。但如果**短接后仍读 11430**,那就是
|
||||
真实偏置,且超过零点补偿上限 `ADC_CAL_B_MAX`(8192 码)——`adc_cal_set()` 会直接拒掉、
|
||||
回退 ROM 系数、永远置不了 `VALID`,保护也就永远解不了锁。**那种情况必须回前端查**
|
||||
(R32 那侧接地是否断、TPAFE 是否失调),不能靠软件补偿。
|
||||
|
||||
### 5.3 步骤 2:三点线性(用 UA 做,免复位)
|
||||
|
||||
3.3 V 轨经 10 k 电位器分压作源,逐点注入。**每点同时记两个数**:万用表读注入点实际电压、
|
||||
`adc:` 行读对应码值。
|
||||
|
||||
| 注入(实测电压) | TPAFE 期望码 | STM32 期望码 |
|
||||
|---|---|---|
|
||||
| ≈ 0.3 V | 1966 | 372 |
|
||||
| ≈ 1.0 V | 6554 | 1241 |
|
||||
| ≈ 2.0 V | 13107 | 2482 |
|
||||
|
||||
判据:三点线性拟合 **R² ≥ 0.999**,斜率与期望值偏差 **≤ 2 %**。
|
||||
|
||||
偏差 > 2 % 时**先查前端**(焊点、串阻实际值、电位器负载效应),不要用系数去凑——
|
||||
把硬件的错固化成"标定值"是最坏的结果。
|
||||
|
||||
### 5.4 步骤 3:逐通道映射(8 路各一次)
|
||||
|
||||
对每一路单独注入 1.0 V,其余路保持短接 AGND,读 `adc:` 行:
|
||||
|
||||
- **只有对应的那一路上升**,幅值落在期望码附近;
|
||||
- 其余七路仍在零点附近。
|
||||
|
||||
任何"注入 A 路、B 路动"都是映射错。这一条比斜率更重要——映射错时斜率可能完全正常。
|
||||
|
||||
> 记录时把"注入路 → 实际变动路"写进附录表;`ADC通道映射说明.md` §3 的映射表如有不符,
|
||||
> 以实测为准并当场记下来。
|
||||
|
||||
### 5.5 步骤 4:极性(只 TPAFE 三路)
|
||||
|
||||
TPAFE 是双极性、二进制补码,可以注负压;STM32 是单极性,负半周测不了。给 UA/UN/IA 各加一个
|
||||
**−1.0 V** 点:
|
||||
|
||||
| 注入 | 期望码 |
|
||||
|---|---|
|
||||
| −1.0 V | **−6554** |
|
||||
|
||||
码值为负、幅值与 +1.0 V 点对称(差值 ≤ 2 %)→ 符号位与补码解释正确。
|
||||
这一步专门补"连极性都没证过"这个缺口。
|
||||
|
||||
### 5.6 步骤 5:节奏(注入期间顺带看)
|
||||
|
||||
注入期间 `frames=` 应仍**严格 1000 Hz 递增**(10 s 间隔 +10000 左右),`idle=0`,
|
||||
`adc1_err=0`。这一条替代了原方案里"用示波器看 U3.14 BUSY 有脉冲"的判据——不需要示波器。
|
||||
|
||||
### 5.7 步骤 6:回写
|
||||
|
||||
1. 把实测斜率、零点、映射结果写进 `docs/硬件平台/ADC通道映射说明.md` §8,把"尚未执行"改成
|
||||
实测值 + 日期;
|
||||
2. 若实测确认无分压,同步在 `docs/硬件平台/ADC通道映射说明.md` §7.1 的链路分段表把第 ③ 段
|
||||
(`AINn` ↔ 转换器引脚)从"待台架实测"改为实测结论;
|
||||
3. `docs/任务规划/数据可信.md` 卡 0 销项(按该文件夹"完成即删"的约定,删行不留记录)。
|
||||
|
||||
## 6. 判据汇总
|
||||
|
||||
| 项 | 判据 | 不通过意味着 |
|
||||
|---|---|---|
|
||||
| 零点 | TPAFE \|码\| ≤ 10;STM32 \|码\| ≤ 5 | 有真实偏置,需查前端;可能超出补偿上限 |
|
||||
| 线性 | R² ≥ 0.999 | 前端非线性或注入源带载失真 |
|
||||
| 斜率 | 偏差 ≤ 2 % | 前端有未识别元件,或转换器档位/参考错 |
|
||||
| 映射 | 注入哪路只动哪路 | 语义表与物理通道不符(`k_adc_map[]` 错) |
|
||||
| 极性 | −1.0 V → −6554 码 | 补码符号处理错 |
|
||||
| 节奏 | 注入期间仍 1000 Hz | 注入改变了输入共模,触发转换异常 |
|
||||
|
||||
## 7. 安全红线
|
||||
|
||||
1. **STM32 侧严禁超过 3.3 V**(VDDA + 0.3 V 即击穿),电位器上限就接 3.3 V 轨,不要接 5 V。
|
||||
2. **TPAFE 侧按判据只到 ±2 V**,虽芯片容 ±5 V,但判据不需要更大。
|
||||
3. **端子侧不许直接上额定电压**(220 V / 100 V 二次值)。本次是直流低压注入,
|
||||
与"加压试保护"是两件事,后者要等变比确认(`docs/任务规划/数据可信.md` 卡 0b)之后单独排。
|
||||
4. **引脚侧注入必须外串 10 k**,且先接线后上电、先断电后拆线。
|
||||
5. 注入源与板子**共地**;电位器一端接 3.3 V、一端接 AGND、中间抽头串 10 k 到注入点。
|
||||
|
||||
## 8. 已知坑
|
||||
|
||||
| 现象 | 原因 | 处置 |
|
||||
|---|---|---|
|
||||
| 空载读数 11430 / 1000 码,跨开机稳定 | 输入浮空后的漏电平衡点(推测,待步骤 1 证实) | 短接 AGND 后应塌回 0;不塌则按 §5.2 处理 |
|
||||
| `cl=0xe6` 恒不变 | `UB/UC/IB/IC/IN` 五路单极性削顶,是 V0.1 硬件缺陷 | 正常;这五路只验直流,不验交流 |
|
||||
| `vl=0x00` 恒不变 | 从未做过两点标定,`VALID` 未置位 | 正常;标定后才会变 |
|
||||
| `meas: ua_mv=0` | 基波有效值,直流注入下本就为 0 | 正常;验交流要等信号源 |
|
||||
| `adc:` 行某路恒 0 而 `frames` 在涨 | 该路取数失败 | 查该路是否真的接线/短路 |
|
||||
| 斜率恰好差一倍 | 误用了 2:1 分压口径(305.18 / 1611.3) | 本板无分压,见 §2;按 152.59 / 805.66 重算 |
|
||||
|
||||
## 9. 记录表(台架现场填)
|
||||
|
||||
### 9.1 零点
|
||||
|
||||
| 通道 | 短接后码值 | 判据 | 结论 |
|
||||
|---|---|---|---|
|
||||
| UA | | ≤ 10 | |
|
||||
| UN | | ≤ 10 | |
|
||||
| IA | | ≤ 10 | |
|
||||
| UB | | ≤ 5 | |
|
||||
| UC | | ≤ 5 | |
|
||||
| IB | | ≤ 5 | |
|
||||
| IC | | ≤ 5 | |
|
||||
| IN | | ≤ 5 | |
|
||||
|
||||
### 9.2 三点线性(UA)
|
||||
|
||||
| 注入电压(万用表) | 码值 | 反算 µV/码 |
|
||||
|---|---|---|
|
||||
| | | |
|
||||
| | | |
|
||||
| | | |
|
||||
|
||||
拟合 R² = ______ 斜率 = ______ 码/V 偏差 = ______ %
|
||||
|
||||
### 9.3 逐通道映射
|
||||
|
||||
| 注入路 | 注入 1.0 V 后变动的路 | 码值 | 是否符合预期 |
|
||||
|---|---|---|---|
|
||||
| UA | | | |
|
||||
| UB | | | |
|
||||
| UC | | | |
|
||||
| UN | | | |
|
||||
| IA | | | |
|
||||
| IB | | | |
|
||||
| IC | | | |
|
||||
| IN | | | |
|
||||
|
||||
### 9.4 极性
|
||||
|
||||
| 通道 | +1.0 V 码值 | −1.0 V 码值 | 对称性偏差 |
|
||||
|---|---|---|---|
|
||||
| UA | | | |
|
||||
| UN | | | |
|
||||
| IA | | | |
|
||||
|
||||
---
|
||||
|
||||
## 变更记录
|
||||
|
||||
| 日期 | 内容 |
|
||||
|---|---|
|
||||
| 2026-10-27 | 建档。承接 `docs/任务规划/数据可信.md` 卡 0 的执行侧;固化"前端无分压"的网表结论、端子侧注入点清单、期望码值表与五步流程。同日 `App/task/adc_task.c` 心跳新增 `adc:` 行(9 路原始码值),使全程免复位 |
|
||||
@@ -141,7 +141,7 @@
|
||||
| `GD5F` | GD5F2GQ5UE NAND Flash 驱动 | `GD5F2GQ5UE_Test_Guide.md` |
|
||||
| `STO` | 存储(FTL + FatFS 集成) | `GD5F2GQ5UE_Test_Guide.md`(TC-STO 章节) |
|
||||
| `RTC` | SD2506 RTC | `SD2506_Test_Guide.md` |
|
||||
| `ADC` | TPAFE5160 ADC | (待立) |
|
||||
| `ADC` | TPAFE5160 + STM32 ADC1 采集与折算(台架注入验证) | `ADC前端注入验证流程.md` |
|
||||
| `RS485` | RS-485 通信 | (待立) |
|
||||
|
||||
> 新模块立测试文档时先定缩写(2~4 个大写字母),并同步更新本表与 `测试开发标准流程.md` §2.2 的缩写表。
|
||||
|
||||
@@ -9,4 +9,4 @@ date code ro rw zi er_irom1 er_pct iram1 iram1_pct ccm ccm_pct top_rwzi
|
||||
2026-10-24 213780 18860 1204 131852 232640 22.2 75632 57.7 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6766;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4128;sys_log_mcu.o=3944;default_task.o=2736
|
||||
2026-10-25 224860 24640 1332 135100 249500 23.8 79008 60.3 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6770;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4128;sys_log_mcu.o=3944;default_task.o=2736
|
||||
2026-10-26 231712 25560 1520 136216 257272 24.5 80312 61.3 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6770;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4132;sys_log_mcu.o=4003;default_task.o=2736
|
||||
2026-10-27 235268 26308 1572 136924 261576 24.9 81072 61.9 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6770;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4132;sys_log_mcu.o=4055;default_task.o=2736
|
||||
2026-10-27 235372 26392 1572 136924 261764 25.0 81072 61.9 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6770;ui_port.o=6420;nand_ftl.o=6216;ch395f.o=4162;console_log.o=4132;sys_log_mcu.o=4055;default_task.o=2736
|
||||
|
||||
|
@@ -1,25 +1,25 @@
|
||||
{
|
||||
"built_at": "2026-10-26T23:32:22+08:00",
|
||||
"fingerprint": "06808c35e47b1113c385277d666806349a09249384347b3ecfd6f27ee79948b0",
|
||||
"fingerprint_files": 1430,
|
||||
"built_at": "2026-10-27T15:11:51+08:00",
|
||||
"fingerprint": "a05b8080445881c36969628b3aff1d98ce74c0f35bcc57c1a8a31d31762b30f2",
|
||||
"fingerprint_files": 1440,
|
||||
"fingerprint_source": "git-index",
|
||||
"gated_regions": [
|
||||
"RW_IRAM1",
|
||||
"RW_CCM"
|
||||
],
|
||||
"git_head": "b623a406ad58c2d281d8e54f118999a0016da328",
|
||||
"git_head": "103e26e111505b9c091fe1d47b205d222a7c9cc5",
|
||||
"map": "MDK-ARM/STM32F407-Demo/STM32F407-Demo.map",
|
||||
"map_mtime": 1793026332,
|
||||
"map_mtime": 1793084971,
|
||||
"pct": {
|
||||
"ER_IROM1": 24.54,
|
||||
"ER_IROM1": 24.96,
|
||||
"RW_CCM": 87.89,
|
||||
"RW_IRAM1": 61.27,
|
||||
"RW_IRAM1": 61.85,
|
||||
"UNINIT_CCM": 18.75
|
||||
},
|
||||
"regions": {
|
||||
"ER_IROM1": {
|
||||
"max": 1048576,
|
||||
"size": 257272
|
||||
"size": 261764
|
||||
},
|
||||
"RW_CCM": {
|
||||
"max": 65280,
|
||||
@@ -27,7 +27,7 @@
|
||||
},
|
||||
"RW_IRAM1": {
|
||||
"max": 131072,
|
||||
"size": 80312
|
||||
"size": 81072
|
||||
},
|
||||
"UNINIT_CCM": {
|
||||
"max": 256,
|
||||
@@ -37,10 +37,10 @@
|
||||
"schema": 2,
|
||||
"scope_note": "\u540c\u7801\u51ed\u8bc1\uff1a\u6307\u7eb9\u8986\u76d6\u56fa\u4ef6\u4f53\u79ef\u76f8\u5173\u6e90\u7801\uff0c\u53e3\u5f84\u89c1\u672c\u811a\u672c docstring",
|
||||
"sizes": {
|
||||
"code": 231712,
|
||||
"ro_data": 25560,
|
||||
"rw_data": 1520,
|
||||
"zi_data": 136216
|
||||
"code": 235372,
|
||||
"ro_data": 26392,
|
||||
"rw_data": 1572,
|
||||
"zi_data": 136924
|
||||
},
|
||||
"threshold_pct": 92.0,
|
||||
"worktree_dirt_at_stamp": 0,
|
||||
|
||||
Reference in New Issue
Block a user