zhoujie 82d672a2d3 📝 docs(openspec): 新增 DVP-DMA-IR 检查的文档和规范
- 在 openspec/changes/archive/ 下新增 2026-03-13-check-dvp-dma-ir 归档目录
- 新增设计文档 (design.md),包含背景、目标、决策和风险评估
- 新增提案文档 (proposal.md),说明变更原因、内容和影响
- 新增功能规范 (spec.md),定义 DVP 配置验证、DMA 内存传输正确性和诊断输出要求
- 新增任务清单 (tasks.md),列出代码审查、中断处理和诊断验证的具体步骤
- 更新 openspec/config.yaml,添加上下文注释
- 在 openspec/specs/ 下新增 dvp-dma-ir-capture 功能规范

🐛 fix(dvp): 修复 DVP 任务中的竞态条件并增强调试输出

- 在 DVP_Task() 中访问 Line_Ready_Flag 和 Ready_Line_Ptr 前禁用 DVP 中断,操作后重新启用,防止数据竞争
- 增强第0行的调试打印,每秒计算并输出帧率 (fps)
- 新增打印第0行前8个字节的原始数据,用于验证数据有效性
- 使用外部定义的 sys_tick_ms 进行时间计算,确保时间基准一致
2026-03-13 23:25:48 +08:00

28 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Context
目前项目采用 CH32V30x 微控制器的 DVP (Digital Video Port) 外设,结合 DMA 进行红外图像数据的采集。
为保证后续的图像处理或网络传输顺利进行,必须确认目前的 DVP 和 DMA 的配置是正确的,能够稳定、及时、无损地将红外图像帧搬运到 RAM 区,并正确处理帧中断。
## Goals / Non-Goals
**Goals:**
- 验证 DVP 引脚配置、时序极性和中断设置是否符合所搭配红外传感器输出时序要求。
- 验证 DMA 数据搬运目标地址是否正确分配且对齐,大小是否匹配一帧红外数据。
- 确认 DMA/DVP 中断服务程序ISR中能有效判断帧结束和 DMA 传输完成,不发生漏帧或混乱。
- 添加必要的轻量级日志或断点测试方法来确认取到的数据。
**Non-Goals:**
- 不涉及深度的图像识别或处理算法的开发。
- 不涉及改变传感器本身的输出模式配置(除非影响获取数据的基础正确性)。
## Decisions
- **检查代码而不是立即重写**: 首先静态走查相关的配置(如 `dvp.c`, `dvp.h`),与 CH32 参考手册进行比对。
- **内存块分配策略验证**: 确定 DVP DMA 配置的两块(双缓冲或单缓冲)地址机制,确认没有指针越界风险。
- **测试方法**: 在帧结束中断或主循环中计算短时间内获取的有效帧数,并提取部分像素输出串口打印。
## Risks / Trade-offs
- [Risk] 数据量大可能引起总线或者处理迟滞 → 中断处理要足够短小,不能阻塞下一次 DMA。
- [Risk] 直接修改中断服务可能会影响原有稳定的网络栈通信延时 → 在验证阶段避免添加过多阻塞的 printf 等操作。