feat(adc): UN 标定完成、标定脚本归集到 test/host/cal/
CI / 静态门禁 (pre-commit) (push) Failing after 4m15s
CI / 主机侧单测 (MSVC) (push) Failing after 1m41s

- UN 通道 5 点最小二乘标定完成:r=555.382141, b=-1, 残差 0.038%, R²=0.99999967
- UA/IA/UN 三路 VALID 置位,保护解卡
- ROM 默认值更新为当前标定值(ADC_CAL_R_Q16_VOLT=555.144958)
- UB/UC/UN 通过 104 写入 ROM 默认值,config.ini 同步
- cal_fit.py 新增 ROLD 表自动读取,不再需要手传 --r-old
- 执行卡精简至 126 行,新增 cal_collect.py 采集脚本与 ROLD 填表
- 标定脚本(cal_fit/cal_write/cal_collect)归集到 test/host/cal/
- 全库文档路径引用同步更新(8 文件)
- UN 当前态文档改写:明确零序电压 U0 语义、本台架未接线状态
- 删除已失效的外部知识底座文档链接
This commit is contained in:
2026-11-13 11:26:36 +08:00
parent 7c505b2457
commit 40a2816a99
23 changed files with 327 additions and 331 deletions
+8 -8
View File
@@ -195,8 +195,8 @@ static int s_total = 0, s_passed = 0, s_failed = 0;
* STM32 侧 UB/UC 是电压族、IB/IC/IN 是电流族(V0.1 双转换器分配,见
* docs/硬件平台/ADC通道映射说明.md 与 adc_cal.c 的 ROM 表)。
* 容差只需盖住 float32 中间积舍入(相对 ~1e-7)与打印粒度。 */
#define EXP_R_VOLT (1000.0) /* 电压族变比 V/V */
#define EXP_R_CURR (29.4118) /* 电流族变比 A/V(1927532/65536 的十进制口径) */
#define EXP_R_VOLT (555.144958) /* 电压族变比 V/V */
#define EXP_R_CURR (29.610748) /* 电流族变比 A/V(1927532/65536 的十进制口径) */
static double exp_ratio(adc_semantic_t sem) {
switch (sem) {
@@ -463,14 +463,14 @@ static void tc_024_ratio_defaults(void) {
adc_cal_init();
/* 电压族 1000.0 V/V、电流族 29.4118 A/V——十进制口径在此独立写出,
* Q16 原值由 比值 × 65536 就地算出(1927532 = 29.4118 x 65536 的回落) */
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_UA), EXP_R_VOLT), "UA ratio = 1000.0 V/V");
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_UN), EXP_R_VOLT), "UN ratio = 1000.0 V/V");
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_IA), EXP_R_CURR), "IA ratio = 29.4118 A/V");
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_IN), EXP_R_CURR), "IN ratio = 29.4118 A/V");
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_UA), EXP_R_VOLT), "UA ratio = 555.144958 V/V");
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_UN), EXP_R_VOLT), "UN ratio = 555.144958 V/V");
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_IA), EXP_R_CURR), "IA ratio = 29.610748 A/V");
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_IN), EXP_R_CURR), "IN ratio = 29.610748 A/V");
CHECK(adc_cal_ratio_q16(ADC_SEM_UA) == (int32_t)my_lround(EXP_R_VOLT * 65536.0),
"UA ratio q16 = 65536000 (LSB exact)");
"UA ratio q16 = 36381980 (LSB exact)");
CHECK(adc_cal_ratio_q16(ADC_SEM_IA) == (int32_t)my_lround(EXP_R_CURR * 65536.0),
"IA ratio q16 = 1927532 (LSB exact)");
"IA ratio q16 = 1940570 (LSB exact)");
CHECK(adc_cal_ratio_configured(ADC_SEM_UA) == 1u, "UA ratio configured at boot");
CHECK(adc_cal_ratio_configured(ADC_SEM_IA) == 1u, "IA ratio configured at boot");
/* TEMP 不参与线性标定;越界通道同守卫 */