docs(design): 运行/自检记录与 ADC 节拍两篇改为现状设计并去掉档名"说明"
两篇规划期文档改成对当前系统的描述,档名统一去掉"设计说明"的"说明"。 运行与自检记录: - 旧档重写为现状版(10 节:概览 / 记录布局 / 写入路径 / 读取与呈现 / 事件分类 / 控制台日志 / 双端差异 / 内存 / 异常恢复 / 自测要点), 删掉需求表、调研摘要、模块清单动作列、实施步骤与开放问题。 - 按代码纠正:七类记录齐备(原文只写了两类)、自检描述串换成实际 落盘的 28 条、待机阈值以 ui_tokens.h 为准、记录页已走 ui_w_records 共享组件、容量满只删该文件而非整卷清空。 - 待机屏移出本篇:它不属于日志,归 UI 侧;内容页架构补"待机屏 (覆盖层)"一节,产品需求 FR-LOG-3 拆成单纯的上电/重启分类, 待机显示归口已有的 FR-UI-3。 ADC 采样节拍: - §4.5 从 45 行压到 24 行,只留规则 / 违反的代价 / 为什么 / 兜底与 档案指针;九路置换实测表、A/B 对照、探针计数等取证归 ADC_Trap_Records.md 的 TRAP-ADC-01(那里已有完整档案)。 - adc1_gap 字段去掉"2026-10-21 起、此前固件为次数"的修订记录式括号。 - app_main.c 的注释改为指向 TRAP-ADC-01 取证、§4.5 设计口径。 引用同步:两个旧档名全仓替换(含代码注释、角色档、归档 id 表), 旧名残留 0;对 ADC 篇的 § 引用逐条复核落在真实章节上。 验证:48 个提交期钩子全通过,check_doc_links --sections-strict 通过。
This commit is contained in:
+1
-1
@@ -34,4 +34,4 @@ FreeRTOS/CMSIS-RTOS API**(见 `AGENTS.md`「平台约束」)。
|
||||
- 架构全景:`docs/架构设计/项目架构总览.md`
|
||||
- 启动顺序:`docs/架构设计/项目启动顺序管理.md`
|
||||
- 配置引擎:`docs/子系统设计/配置文件设计.md`
|
||||
- 日志:`docs/子系统设计/控制台单写者日志设计说明.md`、`docs/子系统设计/运行与自检记录设计说明.md`
|
||||
- 日志:`docs/子系统设计/控制台单写者日志设计说明.md`、`docs/子系统设计/运行与自检记录设计.md`
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
> 本目录的**索引**:文件清单、依赖、逐文件的"改代码必须知道"、构建与测试入口、新增模块动作。
|
||||
> **详细设计——机制、契约、判据、为什么这样设计 → `docs/算法/采集与算法层设计说明.md`**(本文不复制其内容)。
|
||||
> 分层归属与功能项状态 → `docs/算法/继电保护功能复现规划.md` §2.1;
|
||||
> 通道映射唯一权威 → `docs/硬件平台/ADC通道映射说明.md`;采样节拍 → `docs/子系统设计/ADC采样节拍设计说明.md`。
|
||||
> 通道映射唯一权威 → `docs/硬件平台/ADC通道映射说明.md`;采样节拍 → `docs/子系统设计/ADC采样节拍设计.md`。
|
||||
|
||||
## 1. 文件清单(一眼版)
|
||||
|
||||
@@ -262,7 +262,7 @@ adcTask 现取现填后交棒,本层不复制第二个事实源)。两份录
|
||||
- 通道映射权威口径:`docs/硬件平台/ADC通道映射说明.md`
|
||||
- 分层与功能项清单:`docs/算法/继电保护功能复现规划.md`
|
||||
- 傅氏算法与有效值口径:`docs/算法/傅氏算法详解.md`
|
||||
- 采样节拍(TIM3 1 kHz + TRGO 触发 ADC1 / DMA):`docs/子系统设计/ADC采样节拍设计说明.md`
|
||||
- 采样节拍(TIM3 1 kHz + TRGO 触发 ADC1 / DMA):`docs/子系统设计/ADC采样节拍设计.md`
|
||||
- **故障录波**(数据面 / 段格式 / 现场回放契约):docs/子系统设计/故障录波设计说明.md §6.2 是段文件
|
||||
字节布局的属主,同一篇的 docs/子系统设计/故障录波设计说明.md §6.3 是字段口径裁定——两节合起来是板端
|
||||
编码器与 PC 读段脚本两份独立实现的共同依据;板级判据与执行顺序 → docs/子系统设计/故障录波设计说明.md §10
|
||||
|
||||
@@ -111,7 +111,7 @@ static int stm32_take(void) {
|
||||
* 看到"计数没前进"(那个完成已被上一拍消费掉)。这种伪影**只会连续 1 拍**——
|
||||
* DMA 若真停,第 2 拍仍不会前进。故只有连续 >= ADC_INPUT_STALL_RUN_MAX 拍
|
||||
* 无新帧才计入故障计数(实测开机日志突发期约 21~26 次伪影、稳态每 10 s 心跳 1 次,
|
||||
* 全部为单拍;见 docs/子系统设计/ADC采样节拍设计说明.md §8) */
|
||||
* 全部为单拍;见 docs/子系统设计/ADC采样节拍设计.md §8) */
|
||||
if (s_stall_run < 255u) {
|
||||
s_stall_run++;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
* v2.0 2026-10-10 王建锋 STM32 侧改 TIM3 TRGO 硬件触发 + DMA 双缓冲消费:
|
||||
* 消除逐通道轮询的 2 ms 忙等;节拍源 TIM6 -> TIM3
|
||||
* (换源判据:F4 上 ADC1 收不到 TIM6/TIM7 的 TRGO,见
|
||||
* docs/子系统设计/ADC采样节拍设计说明.md §3.2);新增
|
||||
* docs/子系统设计/ADC采样节拍设计.md §3.2);新增
|
||||
* adc_input_stm32_seq() / _hw_errs()
|
||||
* v2.1 2026-10-21 王建锋 adc_input_stm32_gaps() 单位由「次数」改为「帧点数」,
|
||||
* 与判定层 adc_health_tpafe_gaps() 同单位
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* 每周波采样点数(1000 Hz @ 50 Hz,见 docs/子系统设计/ADC采样节拍设计说明.md) */
|
||||
/* 每周波采样点数(1000 Hz @ 50 Hz,见 docs/子系统设计/ADC采样节拍设计.md) */
|
||||
#define PHASOR_N 20U
|
||||
|
||||
/* 相量结果(**有效值口径**)。字段名沿用参考系统 `{fRe, fIm, fAm, fAmSQ}`
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* 每周波采样点数(1000 Hz @ 50 Hz,见 docs/子系统设计/ADC采样节拍设计说明.md) */
|
||||
/* 每周波采样点数(1000 Hz @ 50 Hz,见 docs/子系统设计/ADC采样节拍设计.md) */
|
||||
#define SAMPLE_RING_CYCLE_N 20U
|
||||
/* 环容量(周波数)——与参考系统 CN_BUFSAM_CYCLE 一致 */
|
||||
#define SAMPLE_RING_CYCLES 2U
|
||||
|
||||
+2
-1
@@ -250,7 +250,8 @@ int app_main_init(void) {
|
||||
* 整体错开 2 位。表象是"接地 AIN2、UB 却读到别的通道的值",极易被误判成
|
||||
* 映射表写错或夹子位置不对。
|
||||
* 把使能与挂 DMA 压到同一时刻后旋转消失(台架 4/4 次,同开机对照差值 ≤4 码)。
|
||||
* 证据与复现方法见 docs/子系统设计/ADC采样节拍设计说明.md §4.5。
|
||||
* 证据与复现方法见 docs/问题记录/ADC_Trap_Records.md 的 TRAP-ADC-01
|
||||
* (设计口径见 docs/子系统设计/ADC采样节拍设计.md §4.5)。
|
||||
*
|
||||
* ⚠ 顺序不可调换:本调用必须严格早于下面的 adc_input_init()。
|
||||
* 若 ADC 在本步之后仍处于使能态,旋转会重新出现。 */
|
||||
|
||||
+1
-1
@@ -114,5 +114,5 @@
|
||||
## 相关文档
|
||||
|
||||
- `docs/子系统设计/控制台单写者日志设计说明.md`
|
||||
- `docs/子系统设计/运行与自检记录设计说明.md`
|
||||
- `docs/子系统设计/运行与自检记录设计.md`
|
||||
- FatFs 陷阱:`AGENTS.md`「平台约束」
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
* 作者:王建锋
|
||||
* 创建日期:2026-09-14
|
||||
* 修改记录:
|
||||
* v1.0 2026-09-14 王建锋 创建初始版本(设计见 docs/子系统设计/运行与自检记录设计说明.md §4)
|
||||
* v1.0 2026-09-14 王建锋 创建初始版本(设计见 docs/子系统设计/运行与自检记录设计.md §4)
|
||||
* v1.2 2026-10-26 王建锋 新增「记录删除」API(UI 装置维护「清除记录」的前置,
|
||||
* 道F task-4;判据 docs/UI设计/内容页架构.md §7.1
|
||||
* 「不允许只做一个没有实际效果的按钮」):
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
* 本任务 = 看门狗喂狗点绝不阻塞。
|
||||
* 新增静态 4 B .bss(s_clear_req[2] + s_clear_st[2]),
|
||||
* 零新增缓冲、零堆分配。
|
||||
* v1.0 2026-09-14 王建锋 创建初始版本(设计见 docs/子系统设计/运行与自检记录设计说明.md §4.4)
|
||||
* v1.0 2026-09-14 王建锋 创建初始版本(设计见 docs/子系统设计/运行与自检记录设计.md §4.4)
|
||||
* v1.1 2026-09-21 王建锋 消息队列改为内核启动后由 syslog_drain 惰性创建
|
||||
* (修复 osKernelStart 前创建 FreeRTOS 内核对象导致的启动失败)
|
||||
* v1.2 2026-10-02 王建锋 s_append 落盘序列纳入卷锁 try 语义(vol_lock_wait(0)):
|
||||
@@ -128,7 +128,7 @@ static uint8_t s_batch[SYSLOG_BATCH_MAX * SYSLOG_REC_SIZE];
|
||||
* 一整批 12 条会全部别名到最后一次写入的内容(落盘变成 1~5 + 12 七份);叠加 A 项
|
||||
* 整改后的「卷忙整批回投」,条目最长会滞留到卷空闲 —— 生产者一旦投栈缓冲,函数返回
|
||||
* 后就是悬垂读。故改为条目内嵌定长缓冲,长度按 SYSLOG_DESC_MAX 截断。
|
||||
* RAM 代价(实测见 docs/子系统设计/运行与自检记录设计说明.md §4.4):s_preboot 与
|
||||
* RAM 代价(实测见 docs/子系统设计/运行与自检记录设计.md §4.4):s_preboot 与
|
||||
* s_batch_src 各 8 条由 8 B 变 32 B(.bss 合计 +384 B),消息队列存储由堆多要 192 B
|
||||
* (FreeRTOS 堆已迁 CCM)。 */
|
||||
typedef struct {
|
||||
|
||||
+2
-2
@@ -14,7 +14,7 @@
|
||||
* 轮询改为 **TIM3 ISR 置位 `ADC_WAKE_FLAG` 的事件驱动**——唤醒与生产同源锁定,
|
||||
* 消除 0~1 ms 的 tick 量化相位抖动与"超拍永久落后 → 空转"风险;本任务优先级
|
||||
* 同步由 Normal 提到 **AboveNormal**(唤醒即抢占)。详见
|
||||
* docs/子系统设计/ADC采样节拍设计说明.md §6。
|
||||
* docs/子系统设计/ADC采样节拍设计.md §6。
|
||||
* **语义取数与有效性层**:取数改走 App/algo/adc_input.c——
|
||||
* 本任务每拍调 adc_input_poll()(TPAFE 快照 + STM32 ADC1 9 通道扫描),
|
||||
* 经 adc_input_raw() **按语义**读通道(STM32 ADC1 启动与扫描 / 通道语义映射),不再直接触碰驱动缓冲。
|
||||
@@ -67,7 +67,7 @@
|
||||
* ISR 不得在此之前对内核动手(同 Src/main.c 里 TIM7 的
|
||||
* 2026-10-02 实测坑)。优先级 Normal → AboveNormal(见 freertos.c)
|
||||
* v2.8 2026-10-10 王建锋 节拍源换 TIM3(F4 上 ADC1 收不到 TIM6/TIM7 的
|
||||
* TRGO,换源判据见 docs/子系统设计/ADC采样节拍设计说明.md
|
||||
* TRGO,换源判据见 docs/子系统设计/ADC采样节拍设计.md
|
||||
* §3.2);STM32 侧改 DMA 双缓冲
|
||||
* 消费,adc_input_poll() 不再忙等;心跳日志增
|
||||
* adc1_seq / adc1_hw(adc1_err 语义改为"本拍无新帧")
|
||||
|
||||
Reference in New Issue
Block a user