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

4.1 KiB
Raw Blame History

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_Flagvolatile 标志)和 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 时响应