# 吸尘器 VREFINT 供电测量校准候选 A0

状态：目标端静态链接和主机边界测试通过；未烧录、未执行；风机仍由独立硬件输出锁关闭。

## 本轮工程改动

- 使用 STM32G030 工厂保存的 VREFINT 原始校准字节（`0x1FFF75AA`，3.000 V 校准点）和本次 ADC VREFINT 读数，按 `VDDA = 3000 mV × VREFINT_CAL / VREFINT_DATA` 估算当前模拟电源。异常、零值或超出 2.0–3.6 V MCU 工作范围的计算会被拒绝，目标采样路径随即失败关闭。
- VBUS 和 INA180/分流器电流的原始码换算改用当前估算 VDDA，移除固定 3.300 V 假设。分压器、电流放大器增益、分流器阻值和零点依然是候选 BOM/模型参数，须在板上用仪器校准。
- 修正 ADC 采样时间配置：旧设置把所有通道选到未配置的 SMP2，而 SMP2 留在最短时间；本候选明确用最长 SMP1 采样时间，覆盖外部通道和 VREFINT。
- 未增加器件或 PCB 面积。软件不增加BOM项目，1,000台整机节省金额按 `$0.00 已验证` 记录；这只是没有新增物料，不代表已完成整机成本核价。

## 验证范围

- 主机 C 单元测试覆盖 2.0/3.0/3.3/3.6 V VREFINT 计算、零值、越界、空指针，以及 VDDA 修正进入 VBUS/电流换算。
- STM32G030F6P6 目标镜像静态链接和镜像检查通过，检查 GPIO/风机输出保持安全态。
- 没有 MCU/实板执行或示波器读数；因此 VREFINT 采样稳定时间、ADC噪声与偏差、外部分压精度、电流门限精度仍未实测。参考源不等于整条测量链的校准。
- `measurement_valid`、`fan_profile_valid` 与全部风机运行限值仍保持无效/零值；PA10 风机供电和 PA8 PWM 仍硬关断。任何编译或算术测试均不代表风机已转动，也不证明吸力、风量、噪声或过滤效果达到商品页面描述。

## 复现命令

从本目录执行：

```sh
sh 固件/vacuum_target/build.sh
clang -std=c11 -Wall -Wextra -Werror -pedantic -fsanitize=address,undefined -g \
  固件/vacuum_target/src/vacuum_telemetry.c \
  固件/vacuum_target/test/test_vacuum_telemetry.c \
  -o /tmp/vacuum-vrefint-test
/tmp/vacuum-vrefint-test
```

## 官方依据

- STM32G030x6/x8 DS12991：VREFINT 工厂校准值地址 `0x1FFF75AA`，校准时 VREF+ 为 3.0 V；内参考和启动时间、电气特性见表 6、表 24。
- STM32G0x0 RM0454：按工厂校准值和实时 VREFINT ADC 读数计算实际 VREF+ 的公式。
- STM32CubeG0 LL ADC 驱动：VREFINT 通道编号、VREFEN 开关和 3000 mV 校准参考值定义。

官方资料链接：[DS12991](https://www.st.com/resource/en/datasheet/stm32g030c6.pdf)、[RM0454](https://www.st.com/resource/en/reference_manual/rm0454-stm32g0x0-advanced-armbased-32bit-mcus-stmicroelectronics.pdf)、[ST STM32G0 LL ADC driver](https://github.com/STMicroelectronics/stm32g0xx-hal-driver/blob/master/Inc/stm32g0xx_ll_adc.h)。
