ch32v307_camera/doc/Mini212G2预配置指南.md
zhoujie c347c988f2 📝 docs(dvp): 更新传感器预配置文档并修复行数定义
- 新增 Mini212G2 传感器预配置指南文档,详细说明外部工具配置步骤
- 修复 DVP 头文件中的 SENSOR_TOTAL_LINES 定义,移除冗余行数
- 在 README 和模式配置文档中添加预配置指南的引用链接
- 新增 OpenSpec 变更记录,包含设计文档、提案、规格和任务清单

📦 build(openspec): 新增传感器预配置规范文档结构

- 在 openspec/changes/archive/ 下创建 2026-03-15-dvp-raw-data-pipeline 变更记录
- 包含设计文档、提案、规格说明和任务清单
- 在 openspec/specs/ 下创建 sensor-preconfig-guide 规格文档
2026-03-15 18:03:55 +08:00

5.5 KiB
Raw Blame History

Mini212G2 模组预配置指南

适用场景MCU 端 SENSOR_UART_ENABLE=0传感器通过外部工具USB/串口调试软件)预先配置并保存到 Flash。
配置工具:可使用厂家上位机软件或通用串口调试工具,连接传感器 USB 接口或 UART 接口115200 8N1
参考文档Doc/Mini212G2串口通讯协议.mdDoc/Mini212G2系列用户手册.md


必须配置的参数(共 4 项)

以下参数与 MCU DVP 驱动强耦合,任意一项配置错误将导致图像数据完全错误。

1. 数字口类型 → CMOS

属性
设置值 CMOS
串口命令 55 AA 07 02 01 02 00 00 00 02 04 F0
原因 MCU 使用 DVP 8-bit 并行接口接收数据,必须选 CMOS 模式

2. CMOS 接口 → CMOS8(LSB) 关键,必须为 LSB

属性
设置值 CMOS8(LSB)
串口命令 55 AA 07 02 01 04 00 00 00 02 02 F0
禁止设置 CMOS8(MSB) → 55 AA 07 02 01 04 00 00 00 01 01 F0

原因(字节序)

CH32V307 是小端序Little-Endian处理器DVP DMA 按字节顺序依次写入 FrameBuffer,代码通过 (uint16_t*)FrameBuffer 直接读取 16-bit 温度值:

FrameBuffer[row][0] → uint16_t 低字节bits[7:0]
FrameBuffer[row][1] → uint16_t 高字节bits[15:8]
传感器模式 DVP 先收到 uint16_t 读取结果
LSB低字节先发 低字节 正确
MSB高字节先发 高字节 字节反序,温度值完全错误

3. CMOS 内容 → TMP 关键,必须为 TMP不是 Y16

属性
设置值 TMP
串口命令 55 AA 07 02 01 03 00 00 00 08 0F F0
禁止设置 Y16 → 55 AA 07 02 01 03 00 00 00 02 05 F0

Mini212G2 是测温型产品,支持 TMP 模式。 若不确定,使用前请与厂家确认。

为什么必须选 TMP不能选 Y16

模式 数据含义 MCU 是否可直接使用
TMP温度矩阵 传感器内部已完成辐射定标16-bit 值 = 实际温度 × 10单位 0.1°C/LSB 直接使用,与代码假设完全匹配
Y16红外辐射原始数据 原始 ADC 计数值,不是温度,数值越大表示越热但无对应温度 需要读出厂标定参数 + 手写温度解算公式才能转换为温度

MCU 代码(qdx_preprocess.c)将像素值直接当 0.1°C/LSB 的温度使用——这正是 TMP 模式输出的格式(协议文档等温阈值范围 -4005500 对应 -40.0550.0°C 即 0.1°C/LSB。若配置为 Y16所有温度判断将得到错误结果但系统不会报错。

其他禁止选项:

  • TMP+参数行(参数行会打乱行计数,SENSOR_HEIGHT=192 对应到 193 行后中断异常)
  • TMP+YUV422YUV 通道数据会覆盖温度帧)

4. 帧率 → 25Hz 或 30Hz

属性
推荐值 25Hz
串口命令25Hz 55 AA 07 02 01 05 00 00 00 00 01 F0
串口命令30Hz 55 AA 07 02 01 05 00 00 00 00 01 F0 (参见协议文档帧率表)

配置后必须保存

配置完成后发送保存命令,否则断电后配置丢失:

保存设置55 AA 07 01 00 04 00 00 00 01 03 F0

⚠️ 保存后重新上电,配置才从 Flash 生效。


TMP 模式温度值格式确认

Mini212G2 TMP 模式输出格式(协议文档 §2.4.5 等温阈值范围 -4005500 对应 -40.0550.0°C

参数
单位 0.1°C/LSB
编码 有符号 16-bitint16_t
示例 25.0°C → 250-10.0°C → -100100.0°C → 1000

MCU 代码使用方式:

// qdx_preprocess.c 中直接将像素值当温度0.1°C/LSB
// 示例testPattern 阈值
#define TEMP_RAW(deg_c)  ((uint16_t)((deg_c) * 10))
// 35.0°C → 35080.0°C → 80090.0°C → 900

联调验证步骤TMP 模式,首次上电后执行):

  1. 将传感器对准已知温度目标(如室温约 25°C 的平板物体)
  2. 通过串口 log 打印 DVP 帧中心像素原始值
  3. 确认中心像素值约等于 25025.0°C × 10
  4. 如输出值异常(如约 2980 或约 7450说明配置的不是纯 TMP 模式,需重新检查步骤 3 的配置
实测中心值(约) 说明
~250 TMP 0.1°C/LSB与代码一致
~2980 可能是开尔文模式K×10配置错误
~7450 可能是 Y16 原始 ADC 值,应切换为 TMP 模式

配置命令汇总表

步骤 功能 命令HEX
1 数字口 → CMOS 55 AA 07 02 01 02 00 00 00 02 04 F0
2 CMOS 接口 → CMOS8(LSB) 55 AA 07 02 01 04 00 00 00 02 02 F0
3 CMOS 内容 → TMP 55 AA 07 02 01 03 00 00 00 08 0F F0
4 帧率 → 25Hz 55 AA 07 02 01 05 00 00 00 00 01 F0
5 保存设置 55 AA 07 01 00 04 00 00 00 01 03 F0

每条命令发送后等待 ACK55 AA 01 00 01 F0,收到后再发下一条。


不需要配置的项目

参数 说明
外同步 保持默认关闭内同步MCU DVP 作为接收方
VSYNC/HSYNC 极性 MCU 侧已配置 VSYNC active-high,传感器默认输出一致
分辨率 Mini212G2 固定 256×192无需配置
NUC 快门补偿 运行时按需触发(55 AA 07 02 01 08 00 00 00 01 0D F0),不属于启动配置