Files
STM32F4-Base/App/algo
wandering1 3762c03bb4 L2 相量层:采样环缓冲 + 全周傅氏 + 主机单测(台架间歇复位待查)
新增(均已通过主机侧单测与构建,**台架存在未定位的间歇性回归,见下**):
- App/algo/sample_ring.c/h:按语义通道的采样环缓冲(2 周波 = 40 点),
  整帧压入 + 帧计数,供 L2 按窗取数。
- App/algo/phasor.c/h:全周傅氏相量层,覆盖规划 §3.2 的 L2-1/2/3/6/7——
  系数表按 docs/算法/傅氏算法详解.md §2.3 预乘 √2/N(fAmSQ 直接即有效值);
  5 个数据驱动实例(IA/UA/UN 基波 + IA 二/五次谐波);暴力滑动窗;
  计算区/使用区双区原子切换。
- test/host/phasor/:主机侧单测(52/52 PASSED,无需桩)——系数表逐项复核、
  幅值/有效值/相位、直流与谐波抑制、任意次谐波提取、频率敏感性(±2Hz≤3%)、
  环缓冲时序与回绕、实例层与双区交换。
- 集成:adc_task 每拍压帧 + 重算(v2.4);app_main 调 phasor_init();
  Keil 工程挂 phasor.c/sample_ring.c(App/algo 已在 IncludePath)。

验证:
- 主机单测 52/52 PASSED。
- @build 0 错误 0 警告;内存快照已刷新(RW_IRAM1 89,320→90,936 B)。
- 台架:L2 链路数据正常(ring=10001、skip=0、回读一致、相量日志可见),
  但 10 次运行中 3 次出现 UI 任务看门狗停喂(mask=0x67 缺 TASK_WD_UI)
  → IWDG 复位;改动前基线 6 次运行 0 次。属**未定位的间歇性回归**。

未完成:定位并修复该间歇性复位;L2 文档状态与登记簿条目尚未按结论更新。
2026-10-10 17:39:37 +08:00
..

App/algo/ — 采集与算法层(L1 / L2)

自研代码,属 docs/算法/继电保护功能复现规划.md §2.1 分层中的 L1(采集与预处理) 与 L2(相量计算,拟)。原则:算法与 I/O 分离——本层不碰寄存器、不碰任务调度, 只做"数"(码值 → 工程量)与"相量"(工程量 → 复相量),从而可成为主机侧单元测试 (L0.5)的天然适格对象(落实登记簿 A-4)。

现有模块

文件 层 职责
adc_input.c/h L1 ADC 输入层:① 语义通道映射(L1-4)——UA/UB/UC/UN/IA/IB/IC/IN/温度 → 物理通道,消费侧按语义取数、不写死下标;② STM32 ADC1 9 通道软件触发顺序扫描(L1-3);③ TPAFE5160 原子快照消费

关键约定

  • 语义映射的唯一权威口径是 docs/硬件平台/ADC通道映射说明.md(V0.1 有 13/17 路被置换, 网名编号 ≠ 通道号)。V0.1 上 8 路电气量分属两片转换器(硬件缺陷 N-18):UA/UN/IA 在 TPAFE5160、UB/UC/IB/IC/IN 在 STM32 ADC1。V0.2 改版只改映射表内容,本层 API 与上层语义不动。
  • 取数一律经 adc_input_raw()(按语义),禁止在消费侧直接索引驱动缓冲或写死下标。
  • 本层不做跨转换器的相位 / 功率 / 功率因数 / 矢量类运算(V0.1 硬件缺陷 N-18 限制)。

相关文档

  • 通道映射权威口径:docs/硬件平台/ADC通道映射说明.md
  • 分层与路线图:docs/算法/继电保护功能复现规划.md(§2.1 分层、§3.1 L1 清单)
  • 采样节拍:docs/子系统设计/ADC采样节拍设计说明.md