zhoujie b69717b964 📝 docs(design): 新增系统设计文档集
 feat(system-overview): 创建系统总览文档
- 描述项目背景与硬件平台配置
- 提供 FreeRTOS 任务拓扑表(任务优先级、栈大小、职责)
- 详细说明系统启动序列和初始化依赖关系
- 绘制 2D/1D 状态机完整流程图
- 解释 TEMP_REQ 辅助通道工作机制
- 说明任务间同步机制(Frame_Ready_Flag、双缓冲 TX)

 feat(dvp-module-design): 创建 DVP 模块设计文档
- 提供 DVP 硬件连接引脚映射表
- 描述 DVP 时序配置(信号极性、工作模式)
- 解释 DMA ping-pong 行缓冲机制和切换逻辑
- 说明 DVP IRQ 帧组装流程(STR_FRM/ROW_DONE)
- 定义 FrameBuffer 数据格式和像素访问方式
- 说明 TMP 模式温度换算公式和字节序要求

 feat(qdx-protocol-design): 创建 QDX 协议设计文档
- 描述完整 TLV 帧结构(FrameHeader + TLV + CRC)
- 列出所有 Class/Type 映射表和用途说明
- 解释零拷贝 TX 缓冲区架构(HeadOffset 机制)
- 说明分片机制和最大载荷限制
- 定义 Flags 字段各位含义和使用场景

 feat(tcp-module-design): 创建 TCP 通信模块设计文档
- 描述双流连接架构(控制流 5511 / 数据流 5512)
- 说明握手流程和连接建立时序
- 解释心跳机制和 TCP Keepalive 配置
- 描述配置下发与缓存机制
- 说明数据发送队列和背压处理策略
- 解释 WCHNET 网络栈驱动任务工作机制

 feat(integration-guide): 创建对接集成指南
- 提供网络接入参数表(IP、端口、协议)
- 详细说明握手流程和配置下发格式
- 提供 2D/1D 温度帧解析方法和示例代码
- 说明检测结果上报和 NG 响应机制
- 解释 TEMP_REQ 按需截图工作方式
- 列出错误码表和对接故障排查步骤
2026-03-15 19:17:41 +08:00

61 lines
4.1 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.

# system-overview Specification
## Purpose
TBD - created by archiving change software-design-doc. Update Purpose after archive.
## Requirements
### Requirement: FreeRTOS 任务拓扑描述
文档 SHALL 列出所有 RTOS 任务的名称、优先级、栈大小、职责及任务间通信方式。
#### Scenario: 开发者查阅任务优先级
- **WHEN** 开发者需要了解任务调度顺序时
- **THEN** 文档 SHALL 提供任务优先级表包含task_wchnet优先级 6512 字、task_business优先级 5512 字、task_heartbeat优先级 3256 字、task_test_pattern优先级 4256 字,仅 TEST_PATTERN_MODE=1 时存在)
#### Scenario: 开发者理解任务间数据流
- **WHEN** 开发者需要理解 DVP → 业务任务的数据传递时
- **THEN** 文档 SHALL 说明通过 `Frame_Ready_Flag`volatile 标志)和 `FrameBuffer`共享内存传递帧数据IRQ 置位,业务任务轮询消费
### Requirement: 系统启动序列描述
文档 SHALL 描述 `main()` 的初始化顺序,涵盖所有外设和模块的初始化步骤及其依赖关系。
#### Scenario: 开发者定位初始化顺序问题
- **WHEN** 开发者遇到启动相关 bug 时
- **THEN** 文档 SHALL 提供启动序列SystemClock → USART3/debug → Flash/SRAM 配置128K+192K→ DVP_Init → TIM2_Init → ExtTrigger_GPIO → NG_GPIO → ETH_LibInit → qdx_port_init → Preprocess_Init → TcpLogic_Init → 注册回调 → TcpLogic_Start → 创建 RTOS 任务 → vTaskStartScheduler
### Requirement: 2D 状态机完整描述
文档 SHALL 描述 2D 触发状态机的所有状态、转换条件和行为,包含外部触发和内部触发两种模式。
#### Scenario: 开发者理解 2D 外部触发流程
- **WHEN** 开发者排查外部触发抖动问题时
- **THEN** 文档 SHALL 描述IDLE → [PA15 上升沿] → DEBOUNCE等待 DebounceIntervalMs → DELAY等待 TriggerDelayMs → BURST发 BurstCount 帧,间隔 TriggerInternalIntervalMs → IDLE
#### Scenario: 开发者理解 2D 内部触发流程
- **WHEN** 开发者配置温度阈值触发时
- **THEN** 文档 SHALL 描述:每帧调用 `Preprocess_CheckInternalTrigger2D`,在 TriggerRoi 区域内 Max/Avg 超过 TriggerTemperatureThreshold 时触发,跳过 DEBOUNCE 直接进入 DELAY → BURST
#### Scenario: 开发者理解双缓冲 TX 逻辑
- **WHEN** 开发者排查发送顺序问题时
- **THEN** 文档 SHALL 说明 `use_buffer_A` 标志在每次发送时取反g_TxNetBuffer_A / g_TxNetBuffer_B 交替使用,避免前一帧发送未完成时被覆盖
### Requirement: 1D 状态机完整描述
文档 SHALL 描述 1D 采集状态机的所有状态、转换条件、采集逻辑和发送条件。
#### Scenario: 开发者理解 1D 外部触发流程
- **WHEN** 开发者配置 TriggerType=2 时
- **THEN** 文档 SHALL 描述S1D_IDLE → [PA15 上升沿] → S1D_DEBOUNCE等待 HighTimerLimit ms → S1D_COLLECTING采集 temp+time 样本直到停止条件)→ 发送 → S1D_IDLE
#### Scenario: 开发者理解 1D 内部触发流程
- **WHEN** 开发者配置 TriggerType=1 时
- **THEN** 文档 SHALL 描述S1D_IDLE 中维护 3 帧滑动窗口,连续 3 帧帧最大温度 ≥ TriggerTempLimit 时进入 S1D_COLLECTING停止条件样本数达 BufferSize 或触发后连续 NgCountLimit 帧低温
#### Scenario: 开发者理解 1D 数据格式
- **WHEN** 开发者解析 1D 数据时
- **THEN** 文档 SHALL 说明每个样本 4 字节:[time_offset_lo, time_offset_hi, temp_lo, temp_hi]time_offset 为相对采集开始的 ms 偏移temp 为 0.1°C/LSB 的 uint16_t
### Requirement: TEMP_REQ 辅助通道描述
文档 SHALL 描述服务器按需截图TEMP_REQ的触发流程和限制条件。
#### Scenario: 开发者理解 TEMP_REQ 工作方式
- **WHEN** 服务器发送 TEMP_REQ 命令时
- **THEN** 文档 SHALL 说明:`g_temp_req_pending` 置位,业务任务在下次循环读取当前 FrameBuffer 发送is2D=1 走 Preprocess_Execute + 2D 封包is2D=0 走 send_1d_snapshot30 个等间距采样点);仅在对应模式 Enabled 时响应