diff --git a/doc/Mini212A&Mini212G2系列上下行协议-V1.0-202408008.pdf b/doc/Mini212A&Mini212G2系列上下行协议-V1.0-202408008.pdf new file mode 100644 index 0000000..408d575 Binary files /dev/null and b/doc/Mini212A&Mini212G2系列上下行协议-V1.0-202408008.pdf differ diff --git a/doc/Mini212G2串口通讯协议.md b/doc/Mini212G2串口通讯协议.md new file mode 100644 index 0000000..3b76861 --- /dev/null +++ b/doc/Mini212G2串口通讯协议.md @@ -0,0 +1,1187 @@ +# Page 1 + + + +Mini212A 系列 +上下行协议 + +(观瞄型&测温型) +共 14 页 +二〇二四年八月 + + +# Page 2 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 1 页 / 共 14 页 + + +1. 版本管理 +Revision No. +版本号 +Date +日期 +Revision +变更内容 +Sig. +签名 +V1.0 +202408 +初版发行 + + + + +# Page 3 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 2 页 / 共 14 页 + + +目录 +1 产品概述 ...................................................................................................................................................3 +1.1 协议说明 ...........................................................................................................................................3 +2 通用下行协议 ..........................................................................................................................................3 +2.1 图像 ...................................................................................................................................................4 +2.2 诊断 ...................................................................................................................................................6 +2.3 镜头/校准 .........................................................................................................................................6 +2.4 测温 ...................................................................................................................................................8 +2.5 设置自定义字符 ........................................................................................................................... 10 +3 通用上行协议(查询协议) .............................................................................................................. 10 +3.1 状态页查询 ................................................................................................................................... 10 +3.2 数字视频页查询 ........................................................................................................................... 11 +3.3 设置页查询 ................................................................................................................................... 13 +3.4 调焦页 ............................................................................................................................................ 13 +3.5 查询自定义字符 ........................................................................................................................... 14 + + + +# Page 4 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 3 页 / 共 14 页 + + +1 产品概述 +本协议支持成像型应用产品和测温型应用产品。 +1.1 协议说明 +1) 发送协议成功后,成功返回55 AA 01 00 01 F0; +2) XOR 按位异或校验。从55 AA 之后开始检验,如快门补偿命令:55 AA 07 02 +01 08 00 00 00 01 0D F0。XOR =07 XOR 02 XOR 01 XOR 08 XOR 00 XOR +00 XOR 00 XOR 00 XOR 01= 0D。 +2 通用下行协议 +说明:1、所有设置的相关的参数设置之后,需发送保存设置,该参数才能保存。 +注意:快门补偿和场景补偿默认产品自动执行。另手动场景补偿功能使用方法咨询 +业务或者技术支持。 +通用 +功能 +操作命令 +备注 +补偿 +快门补偿 +55 AA 07 02 01 08 00 00 00 01 0D F0 + +场景补偿 +55 AA 07 02 01 07 00 00 00 01 02 F0 + +图像 +图像定格开 +55 AA 07 01 00 02 00 00 00 01 05 F0 + +图像定格关 +55 AA 07 01 00 02 00 00 00 00 04 F0 + +伪彩 +白热 +55 AA 07 02 00 04 00 00 00 00 01 F0 + +黑热 +55 AA 07 02 00 04 00 00 00 09 08 F0 + +描红 +55 AA 07 02 00 04 00 00 00 08 09 F0 + +熔岩 +55 AA 07 02 00 04 00 00 00 01 00 F0 + +铁红 +55 AA 07 02 00 04 00 00 00 02 03 F0 + +热铁 +55 AA 07 02 00 04 00 00 00 03 02 F0 + +医疗 +55 AA 07 02 00 04 00 00 00 04 05 F0 + +北极 +55 AA 07 02 00 04 00 00 00 05 04 F0 + +彩虹1 +55 AA 07 02 00 04 00 00 00 06 07 F0 + +彩虹2 +55 AA 07 02 00 04 00 00 00 07 06 F0 + + + +# Page 5 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 4 页 / 共 14 页 + + +2.1 图像 +2.1.1 图像模式 +2.1.1.1 图像色调 +图像色调 +功能 +操作命令 +备注 + +暖色 +55 AA 07 02 02 19 00 00 00 00 1E F0 + + +冷色 +55 AA 07 02 02 19 00 00 00 01 1F F0 + + +绿热 +55 AA 07 02 02 19 00 00 00 02 1C F0 + +2.1.1.2 图像模式 +图像模式 +功能 +操作命令 +备注 + +柔和 +55 AA 07 02 02 06 00 00 00 00 01 F0 + + +标准 +55 AA 07 02 02 06 00 00 00 01 00 F0 + + +增强 +55 AA 07 02 02 06 00 00 00 02 03 F0 + + +高亮 +55 AA 07 02 02 06 00 00 00 03 02 F0 + + +用户 +55 AA 07 02 02 06 00 00 00 10 11 F0 + + +空域去噪(1~4) +55 AA 07 02 02 1C 00 00 00 xx XOR F0 +用户模 +式才支 +持 + +时域去噪(1~4) +55 AA 07 02 02 21 00 00 00 xx XOR F0 + +细节增强(1~4) +55 AA 07 02 02 1D 00 00 00 xx XOR F0 + +亮度(1~5) +55 AA 07 02 02 1E 00 00 00 xx XOR F0 + +对比度(1~5) +55 AA 07 02 02 1F 00 00 00 xx XOR F0 +2.1.1.3 图像镜像和放大 +图像镜像 +无 +55 AA 07 02 00 05 00 00 00 00 00 F0 +备注 +Y 方向镜像 +55 AA 07 02 00 05 00 00 00 01 01 F0 + +X 方向镜像 +55 AA 07 02 00 05 00 00 00 02 02 F0 + +XY 方向镜像 +55 AA 07 02 00 05 00 00 00 03 03 F0 + +图像放大 +放大区域中心点坐 +标X(0~ widht-1) +55 AA 07 02 00 07 00 00 xx xx XOR F0 + +放大区域中心点坐 +标Y(0~ height-1) +55 AA 07 02 00 08 00 00 xx xx XOR F0 + +8~64 倍(实际对 +应1~8) +55 AA 07 02 00 06 00 00 00 xx XOR F0 + + + +# Page 6 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 5 页 / 共 14 页 + + +2.1.2 视频模式控制 +2.1.2.1 模拟视频 +模拟视频 +功能 +操作命令 +备注 +模拟视频 +视频关 +55 AA 07 02 00 01 00 00 00 00 04 F0 + +视频开 +55 AA 07 02 00 01 00 00 00 01 05 F0 + +模拟视频制 +式 +PAL 制 +55 AA 07 02 00 02 00 00 00 02 05 F0 + +NTSC 制 +55 AA 07 02 00 02 00 00 00 03 04 F0 + +备注:使用模拟视频功能前,请跟业务或者技术支持咨询该产品是否支持该功能。 +PAL 为分辨率为360×288 或者720×576,NTSC 制分辨率为360×240 或者720×480。 +2.1.2.2 数字视频 +⚫ 帧频 +备注:切换数字视频帧频前,请跟业务或者技术支持咨询该产品是否支持该功能。 +帧频 +功能 +操作命令 +备注 +50HZ +55 AA 07 02 01 05 00 00 00 03 02 F0 + +30HZ +55 AA 07 02 01 05 00 00 00 00 01 F0 + +25HZ +55 AA 07 02 01 05 00 00 00 01 00 F0 + +9HZ +55 AA 07 02 01 05 00 00 00 02 03 F0 + +⚫ 数字口类型 +备注:切换数字口内容前,请跟业务或者技术支持咨询该产品是否支持该功能。 +数字口类 +型 +功能 +操作命令 +备注 +关 +55 AA 07 02 01 02 00 00 00 00 06 F0 + +USB2.0 +55 AA 07 02 01 02 00 00 00 01 07 F0 + +CMOS +55 AA 07 02 01 02 00 00 00 02 04 F0 + +BT656 +55 AA 07 02 01 02 00 00 00 04 02 F0 + +BT1120 +55 AA 07 02 01 02 00 00 00 03 05 F0 +仅1k 分辨率支持 +LVDS +55 AA 07 02 01 02 00 00 00 07 01 F0 + +USB2.0+UART +55 AA 07 02 01 02 00 00 00 05 03 F0 + +LCD +55 AA 07 02 01 02 00 00 00 06 00 F0 + + + +# Page 7 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 6 页 / 共 14 页 + + +LCD+DVP +55 AA 07 02 01 02 00 00 00 08 0E F0 + +UVC + CDC +55 AA 07 02 01 02 00 00 00 09 0F F0 + +⚫ CMOS 接口 +类型 +功能 +操作命令 +备注 +数字口 +CMOS16 +55 AA 07 02 01 04 00 00 00 00 00 F0 + +CMOS8(MSB) +55 AA 07 02 01 04 00 00 00 01 01 F0 + +CMOS8(LSB) +55 AA 07 02 01 04 00 00 00 02 02 F0 + +⚫ CMOS 内容 +类型 +功能 +操作命令 +备注 +模式 +YUV422 +55 AA 07 02 01 03 00 00 00 00 07 F0 + +YUV422+参数行 +55 AA 07 02 01 03 00 00 00 01 06 F0 + +Y16 +55 AA 07 02 01 03 00 00 00 02 05 F0 + +Y16+参数行 +55 AA 07 02 01 03 00 00 00 03 04 F0 + +Y16+YUV422 +55 AA 07 02 01 03 00 00 00 04 03 F0 + +Y16+参数行 ++YUV422 +55 AA 07 02 01 03 00 00 00 05 02 F0 + +TMP +55 AA 07 02 01 03 00 00 00 08 0F F0 +仅测温 +产品才 +支持该 +功能 +TMP+参数行 +55 AA 07 02 01 03 00 00 00 09 0E F0 +TMP+YUV422 +55 AA 07 02 01 03 00 00 00 0A 0D F0 +TMP+参数行 ++YUV422 +55 AA 07 02 01 03 00 00 00 0B 0C F0 +⚫ 外同步 +外同步 +功能 +操作命令 +备注 + +关 +55 AA 07 02 01 01 00 00 00 00 05 F0 + + +从模式 +55 AA 07 02 01 01 00 00 00 01 04 F0 + + +主模式 +55 AA 07 02 01 01 00 00 00 02 07 F0 + +2.2 诊断 +类型 +功能 +操作命令 +备注 +参数 +保存设置 +55 AA 07 01 00 04 00 00 00 01 03 F0 + +参数 +恢复出厂设置 +55 AA 07 01 00 05 00 00 00 01 02 F0 + +2.3 镜头/校准 + + +# Page 8 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 7 页 / 共 14 页 + + +2.3.1 镜头 +⚫ 光学变倍 +备注:只有变倍的镜头才支持该功能。使用变倍+/变倍-之后要使用变倍停指令。 +变倍 +功能 +操作命令 +备注 + +变倍+ +55 AA 07 03 00 07 00 00 00 01 02 F0 + + +变倍- +55 AA 07 03 00 07 00 00 00 02 01 F0 + + +变倍停 +55 AA 07 03 00 07 00 00 00 00 03 F0 + +⚫ 光学调焦 +备注:只有电动调焦的镜头才支持该功能。使用远焦+/远焦-需要使用调焦停指令。 +调焦 +功能 +操作命令 +备注 + +远焦+ +55 AA 07 03 00 06 00 00 00 01 03 F0 + + +远焦- +55 AA 07 03 00 06 00 00 00 02 00 F0 + + +调焦停 +55 AA 07 03 00 06 00 00 00 00 02 F0 + + +手动调焦速度(1~10) +55 AA 07 03 00 02 00 00 00 03 XOR F0 + + +自动对焦 +55 AA 07 03 00 06 00 00 00 03 01 F0 + +2.3.2 非均匀校正 +⚫ 快门 + +功能 +操作命令 +备注 +快门 +关闭 +55 AA 07 A0 02 08 00 00 00 00 AD F0 + +弹开 +55 AA 07 A0 02 08 00 00 00 01 AC F0 + +自适应补 +偿 +开 +55 AA 07 01 00 07 00 00 00 01 00 F0 + +关 +55 AA 07 01 00 07 00 00 00 00 01 F0 + +时间设置(0~100min, +0 表示自此不打快门) +55 AA 07 01 00 01 00 00 00 xx XOR F0 + +备注:自适应补偿开关请不要关闭,否则会影响图像进行自动补偿,影响图像效果。 +⚫ 坏点校正 + +功能 +操作命令 +备注 +坏点 +坏点X 坐标 +(0~width-1) +55 AA 07 03 01 02 00 00 xx xx XOR F0 + + + +# Page 9 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 8 页 / 共 14 页 + + +坏点Y 坐标 +(0~height-1) +55 AA 07 03 01 03 00 00 xx xx XOR F0 + +添加坏点 +55 AA 07 03 01 04 00 00 00 01 00 F0 + +保存坏点 +55 AA 07 03 01 05 00 00 00 01 01 F0 + +2.4 测温 +测温功能使用前,请与业务经理或者技术支持确认产品是否支持测温功能。 +2.4.1 测温档位切换 +档位 +功能 +操作命令 +备注 +高增益 +(-20~150℃) +55 AA 07 04 00 09 00 00 00 00 0A F0 +低温档 +低增益 +(0~550℃) +55 AA 07 04 00 09 00 00 00 01 0B F0 +高温档 +2.4.2 参数设置 +备注:测温参数设置使用之前,请咨询技术支持,以防影响产品的出厂温度。 +功能 +参数 +操作命令 +备注 +距离设置 +(0~300) +(实际0~30) +55 AA 07 04 00 01 00 00 xx xx XOR F0 + +发射率设置 +(0~100)% +55 AA 07 04 00 02 00 00 00 xx XOR F0 + +湿度设置 +(0~100)% +55 AA 07 04 00 08 00 00 00 xx XOR F0 + +反射温度设置 +-100~1000℃ +55 AA 07 04 00 07 00 00 xx xx XOR F0 + +环境温度设置 +-100~1000℃ +55 AA 07 04 00 18 00 00 xx xx XOR F0 + +测温参数恢复出厂 +/ +55 AA 07 04 00 06 00 00 00 04 F0 + +2.4.3 温度校正 +温度校正使用方法详见《温度校正手册》。 +⚫ 单点校正 +单点校正 +功能 +操作命令 +备注 +单点温度设置 +-400 ~8000,对应 +(-40℃~800℃) +55 AA 07 04 01 08 00 00 xx xx XOR F0 + + +采集 +55 AA 07 04 01 04 00 00 00 01 07 F0 + + + +# Page 10 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 9 页 / 共 14 页 + + + +单点校正 +55 AA 07 04 01 05 00 00 00 01 06 F0 + + +保存校温参数 +55 AA 07 01 00 04 00 00 00 01 03 F0 + +⚫ 两点校正 +两点校正 +功能 +操作命令 +备注 +低温黑体设置 +-400 ~8000,对应(- +40℃~800℃) +55 AA 07 04 01 06 00 00 xx xx XOR F0 + + +低温采集 +55 AA 07 04 01 01 00 00 00 01 02 F0 + +高温温度设置 +-400 ~8000,对应(- +40℃~800℃) +55 AA 07 04 01 07 00 00 xx xx XOR F0 + + +高温采集 +55 AA 07 04 01 02 00 00 00 01 01 F0 + + +两点校正 +55 AA 07 04 01 03 00 00 00 01 00 F0 + + +保存校温参数 +55 AA 07 01 00 04 00 00 00 01 03 F0 + +2.4.4 区域分析 +区域分析 +功能 +操作命令 +备注 + +关闭分析 +55 AA 07 03 03 01 00 00 00 00 06 F0 + + +全屏分析 +55 AA 07 03 03 01 00 00 00 01 07 F0 + + +区域1 +55 AA 07 03 03 01 00 00 00 02 04 F0 + + +区域2 +55 AA 07 03 03 01 00 00 00 03 05 F0 + + +区域3 +55 AA 07 03 03 01 00 00 00 04 02 F0 + + +区域分析左上角X 坐标 +(0~width-1) +55 AA 07 03 03 02 00 00 xx xx XOR F0 + + +区域分析左上角Y 坐标 +(0~height-1) +55 AA 07 03 03 03 00 00 xx xx XOR F0 + + +区域宽W(0~width-1) +55 AA 07 03 03 04 00 00 xx xx XOR F0 + + +区域高H(0~height-1) +55 AA 07 03 03 05 00 00 xx xx XOR F0 + +2.4.5 测温分析 +测温分析 +功能 +操作命令 +备注 +等温线开关 +关 +55 AA 07 03 05 06 00 00 00 00 07 F0 + +开 +55 AA 07 03 05 06 00 00 00 01 00 F0 + +等温线模式 +上下 +55 AA 07 03 05 07 00 00 00 00 06 F0 + +中间 +55 AA 07 03 05 07 00 00 00 01 07 F0 + +等温阈值下 +限测温值 +-400~5500(对应- +40.0~550.0) +55 AA 07 03 05 09 00 00 xx xx XOR F0 + + + +# Page 11 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 10 页 / 共 14 页 + + +等温阈值上 +限测温值 +-400~5500(对应- +40.0~550.0) +55 AA 07 03 05 08 00 00 xx xx XOR F0 + +2.5 设置自定义字符 +55 AA 12 B0 01 01 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx XOR F0 +3 通用上行协议(查询协议) +3.1 状态页查询 +3.1.1 发送查询协议 +功能 +操作命令 +备注 +状态页查询 +55 AA 07 00 00 80 00 00 00 00 87 F0 + +3.1.2 返回协议格式 +字节 +命令字 +参数说明 +备注 +Byte0 +0x55 +帧头字节1 + +Byte1 +0xAA +帧头字节2 + +Byte2 +0x13 +长度19 + +Byte3 +0x00 +状态页(功能分类) + +Byte4 +0x00 +第一页(页码) + +Byte5 +xx +产品ID 和产品类型 + +byte6 +xx +TBD + +Byte7 +年 +固件版本号 + +Byte8 +月 + +Byte9 +日 + +Byte10 +xx +焦温高八位 + +Byte11 +xx +焦温低八位 + +Byte12~byte13 +xx +TBD + +Byte14 +xx +机器识别码[31:24] + +Byte15 +xx +机器识别码[23:16] + +Byte16 +xx +机器识别码[15:8] + +Byte17 +xx +机器识别码[7:0] + + + +# Page 12 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 11 页 / 共 14 页 + + +字节 +命令字 +参数说明 +备注 +Byte18~ +Byte21 +xx +TBD + +Byte22 +xx +校验和 + +Byte23 +0XF0 +帧尾 + +Eg:55 aa 13 00 00 2e 00 17 0a 11 0e 30 02 01 8f 3c da 97 01 04 03 00 f4 f0 +焦温:0e 30 代表3632/100 = 36.32℃ +固件版本号:17 0a 11 代表231017 +机器识别吗:8f 3c da 97 代表2403130007 +3.2 数字视频页查询 +3.2.1 发送查询协议 +功能 +操作命令 +备注 +数字页查询 +55 AA 07 02 01 80 00 00 00 00 84 F0 + +3.2.2 返回协议格式 +字节 +命令字 +参数说明 +备注 +Byte0 +0x55 +帧头字节1 + +Byte1 +0xAA +帧头字节2 + +Byte2 +0x13 +长度19 + +Byte3 +0x02 +状态页(功能分类) + +Byte4 +0x01 +数字视频页 + +Byte5 +0x00 +外同步关闭 + +0x01 +外同步从模式 + +0x02 +外同步主模式 + +Byte6 +0x00 +数字口并口关 + +0x01 +USB2.0 + +0x02 +CMOS + +0x03 +BT1120 + +0x04 +BT656 + + +0x05 +USB2.0+UART + + + +# Page 13 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 12 页 / 共 14 页 + + +字节 +命令字 +参数说明 +备注 + +0x06 +LCD + + +0x07 +LVDS + + +0x08 +LCD + DVP + + +0x09 +UVC + CDC + +Byte7 +0x00 +YUV422 + +0x01 +YUV422+参数行 + +0x02 +Y16 + +0x03 +Y16+参数行 + +0x04 +Y16+YUV422 + +0x05 +Y16+参数行+YUV422 + +0x08 +TMP + +0x09 +TMP+参数行 + +0x0A +TMP+YUV422 + +0x0B +TMP+参数行+YUV422 + +Byte8 +0x00 +CMOS16 + +0x01 +CMOS8(MSB) + +0x02 +CMOS8(LSB) + +Byte9 +0x00 +30HZ + +0x01 +25HZ + +0x02 +9HZ + +0x03 +50HZ + +Byte10 +xx +TBD + +Byte11 +0x00 +上升沿对齐 + + +0x01 +下降沿对齐 + +Byte12- Byte21 +xx +TBD + +Byte22 +xx +校验和 + +Byte23 +0XF0 +帧尾 + +Eg: 55 aa 13 02 01 00 01 05 01 00 00 01 00 00 00 00 00 00 00 00 00 00 14 +f0 +外同步模式:00 代表关 +数字口类型:01 代表USB2.0 +CMOS 内容:05 代表Y16+参数行+YUV422 + + +# Page 14 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 13 页 / 共 14 页 + + +CMOS 接口:01 代表CMOS8(MSB) +帧频:00 代表30Hz +时钟相位:01 代表下降沿 +3.3 设置页查询 +3.3.1 发送查询协议 +功能 +操作命令 +备注 +设置页查询 +55 AA 07 01 00 80 00 00 00 00 86 F0 + +3.3.2 返回协议格式 +字节 +命令字 +参数说明 +备注 +Byte0 +0x55 +帧头字节1 + +Byte1 +0xAA +帧头字节2 + +Byte2 +0x13 +长度19 + +Byte3 +0x01 +设置页(功能分类) + +Byte4 +0x00 +第一页(页码) + +Byte5 +xx +自动补偿时间 + +Byte6~byte7 +xx +TBD + +Byte8 +0x00 +温升补偿开关关 + +0x01 +温升补偿开关开 + +Byte9~Byte21 +xx +TBD + +Byte22 +xx +校验和 + +Byte23 +0XF0 +帧尾 + +3.4 调焦页 +3.4.1 发送查询协议 +功能 +操作命令 +备注 +设置页查询 + 55 AA 07 03 00 80 00 00 00 00 84 f0 + +3.4.2 返回协议格式 + + +# Page 15 + + +Mini212A 系列上下行协议 +版本/修订:V1.0 +第 14 页 / 共 14 页 + + +字节 +命令字 +参数说明 +备注 +Byte0 +0x55 +帧头字节1 + +Byte1 +0xAA +帧头字节2 + +Byte2 +0x13 +长度19 + +Byte3 +0x03 +状态页(功能分类) + +Byte4 +0x00 +调焦页 + +Byte5 +0xxx +镜头类型 + +Byte5~ Byte21 +xx +TBD + +Byte22 +xx +校验和 + +Byte23 +0XF0 +帧尾 + +3.5 查询自定义字符 +55 AA 07 B0 01 80 00 00 00 00 36 F0 +字节 +参数说明 +参数类型 +备注 +0x55 +xx +帧头 + +0xAA +xx +帧头 + +0x13 +xx +命令长度 + +0xB0 +xx +功能分类 + +0x01 +xx +页码 + +xx +按接收到的顺序依次放置15 个字节的自定义数据 +选项 + +xx +预留 +选项 + +xx +预留 +选项 + +0xXX +校验和 +校验位 + +0xF0 +帧尾 +帧尾 + + + diff --git a/doc/Mini212G2系列用户手册.md b/doc/Mini212G2系列用户手册.md new file mode 100644 index 0000000..ecbc911 --- /dev/null +++ b/doc/Mini212G2系列用户手册.md @@ -0,0 +1,1865 @@ +# Page 1 + + + +Mini212G2 机芯用户手册 + + +共 26 页 +武汉高芯科技有限公司 +二〇二四年十二月 + + +# Page 2 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 1 页 / 共 26 页 + + +1. 版本管理 +Revision No. +版本号 +Date +日期 +Revision +变更内容 +Sig. +签名 +V1.0 +202412 +初版发行 + +文档所有权及最终解释权归武汉高芯科技有限公司所有,因产品迭代升级导致的部 +分参数更新恕不另行通知。 +2. 适用范围 +Mini212G2 系列机芯为武汉高芯科技有限公司标准型红外热成像机芯,此文档专 +为机芯集成与二次开发应用提供相关信息与技术支持。 +3. 用户须知 + 安全使用注意事项 +此内容的目的是确保用户正确使用本产品,以避免危险或财产损失。在使用此产品 +之前,请认真阅读此说明手册并妥善保存,以备日后参考。 +如下所示,预防措施分为“警告”和“注意”两部分。 +警告:无视警告事项,可能会导致死亡或严重伤害。 +注意:无视注意事项,可能会导致伤害或财产损失。 + + +警告:事项提醒用户防范潜在的死 +亡或严重伤害危险。 +注意:事项提醒用户防范潜在的伤 +害或财产损失危险。 + 警告 +⚫ 在本产品使用中,必须严格遵守国家和使用地区的各项电气安全规程。 +⚫ 请使用正规厂家提供的电源适配器,演示工装USB 供电电源要求为DC 5V/1A。 + + +# Page 3 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 2 页 / 共 26 页 + + +⚫ 请不要将多个机芯连接至同一电源适配器(超过适配器负载量,可能会产生过多 +热量或导致火灾)。 +⚫ 在接线、拆装等操作时请将机芯电源断开,切勿带电操作。 +⚫ 如机芯在使用过程中出现冒烟现象,产生恶臭或发出杂音,请立即断电,并联 +系经销商或服务中心处理相关事宜。 +⚫ 如果设备工作不正常,请联系购买设备的商店或最近的服务中心,不要以任何 +方式拆卸或修改设备。(对未经认可的修改或维修所导致的问题,本公司不承担 +责任)。 + 注意 +⚫ 请不要将机芯瞄准强能量源,如太阳,熔岩,激光束等,标准款机芯目标观测 +温度需小于600℃,超温目标观测应用会造成机芯不可恢复的灼伤损坏。600℃ +以上目标源观测需求请选购定制款机芯产品。 +⚫ 请不要使物体摔落到设备上或大力振动设备,并使设备远离存在磁场干扰的地 +点。避免将设备安装到表面振动或容易受到冲击的地方。(忽视此项可能会损坏 +设备) +⚫ 安装机芯时,TIMO 模组部分建议采用粘胶的方式固定,PCBA 板的固定方式 +可采用M1.4 ㎜P0.3 的螺钉,使用3cN·m 的扭力锁紧。 +⚫ 请不要在高温(超过60℃)或低温(低于-20℃)或高湿度(高于95%)场 +景下使用设备。 +⚫ 请不要将设备放在阳光直射地点、通风不良的地点或加热器,暖气等热源附近 +(忽视此项可能会导致火灾危险)。 + + +# Page 4 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 3 页 / 共 26 页 + + +⚫ 请勿频繁通断机器电源,关机后重启时间间隔不小于30 秒,否则会影响机芯 +寿命。 +⚫ 请勿带电热插拔40PIN 接口,会造成机芯损坏。 +⚫ 请不要用手直接接触机芯镜头的表面镀层,或者用硬物刮伤镜头,如此可能导 +致机芯成像模糊,影响图像质量。 +⚫ 清洁机芯时,须使用足够柔软的干布或其它替代品擦拭镜头表面,切勿使用碱 +性清洁剂洗涤。 +4. 安装注意事项 +MEMS 红外芯片对外部机械应力非常敏感,因此在安装过程中不要直接有外力接 +触或固定红外模组底部基板位置,防止出现芯片失效现象;建议采用粘接形式固定模组。 +所以遵从以下几点要求: +⚫ 模组固定切勿使用外力挤压模组的镜头和PCB 部分,采用点胶固定避免受压。 +⚫ 模组与主板间的连接器请注意防松设计,避免外部振动冲击使后接插件松脱, +造成信号传输异常。 +⚫ 外置快门固定采用点胶固定,且快门的四个角不能点胶,否则会渗透到内部, +导致快门失效。 +⚫ 模组散热采用导热垫片,不建议使用导热硅脂,模组外壳无法防尘防水,导热 +硅脂一旦挤进模组内部可能会导致快门无法正常动作,出现测温异常、图像残 +影等现象。 + + +# Page 5 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 4 页 / 共 26 页 + + + + +5. 免责声明 +请用户在使用本产品之前确保已详细阅读并充分了解本产品之使用说明及本声明, +并应严格按照本产品说明书安装、使用本产品。如用户未能严格按照说明书安装、使用 +本产品,有可能会带来极大的使用不便,甚至可能会引起财产损失和人身伤害。对用户 +不当安装、不当使用本产品而造成的财产损失和人身伤害,本公司不承担任何法律责任。 +6. 服务原则 +本系列产品一个月内包换、一年内保修。具体服务原则依据随机保修卡规定或官网 +质保政策实行保修服务; +停产、淘汰、特价、处理机等以公司通知执行时间标准。 + + +# Page 6 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 5 页 / 共 26 页 + + +目录 +1 +产品概述 ...........................................................................................................................................6 +2 +产品配置 ...........................................................................................................................................7 +2.1 +关键技术参数 .............................................................................................................................7 +2.2 +光学配置 .....................................................................................................................................8 +2.3 +PC 软件 .......................................................................................................................................9 +2.4 +拆箱..............................................................................................................................................9 +3 +接口说明 ...........................................................................................................................................9 +3.1 +电气接口 .....................................................................................................................................9 +3.2 +视频接口 .................................................................................................................................. 11 +3.3 +机械接口 .................................................................................................................................. 22 +4 +串口通讯协议 ............................................................................................................................... 23 +5 +FAQ ................................................................................................................................................ 23 +5.1 +USB 驱动如何确定安装成功? ............................................................................................ 23 +5.2 +数字口如何切换 ...................................................................................................................... 23 +5.3 +上位机软件提示连接设备失败 ............................................................................................. 23 +6 +机械图纸 ........................................................................................................................................ 24 +7 +包装说明 ........................................................................................................................................ 24 +8 +附录 ................................................................................................................................................ 24 +8.1 +红外保护窗口材质介绍 ......................................................................................................... 24 +8.2 +常见材料的比辐射率 ............................................................................................................. 25 +8.3 +热设计注意事项 ...................................................................................................................... 25 +8.4 +导热硅脂/垫片使用注意事项 ............................................................................................... 26 + + + + +# Page 7 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 6 页 / 共 26 页 + + +1 产品概述 +Mini212G2 红外模组机芯,是基于高德自研的非制冷远红外热成像模组,光谱响 +应波段8~14μm,探测器采用先进的晶圆级封装。还具备以下特色。 + +⚫ 小尺寸,PCB 尺寸不大于17mm×17mm×4.7mm +⚫ 模组+PCB 重量轻至3.8g +⚫ 成像速度快,启动时间低于5s +⚫ 功耗低至0.33W +⚫ 支持非均匀性校正(NUC) +⚫ 3D 图像降噪(3DNR) +⚫ 2D 降噪(DNS) +⚫ 宽动态范围压缩(DRC) +⚫ EE 增强 +⚫ SFFC 校正 +⚫ 支持标准的USB,即插即用,便于集成 +适用于电力监测、工业自动化、安防监控、无人机载荷、可穿戴设备、热瞄具等多 +个领域,同时加速热成像技术在新兴领域的普及应用。 + + +# Page 8 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 7 页 / 共 26 页 + + +Mini212G2 系列机芯基本框架如下图所示: +快门组件 +探测器组件 +信号处理 +图像处理 +机芯基本模组 +镜头 + +图 1 Mini212G2 机芯基本框架图 +Mini212G2 机芯基本模组即为机芯的基础单元,主要完成红外热成像仪的基本成 +像功能,包括镜头、快门组件、探测器组件、信号处理组件,图像处理组件四部分。其 +中: +镜头、快门组件、探测器组件、信号处理部分组成了TIMO212 模组,具有功耗低, +尺寸小,集成度高等特点; +图像处理组件实现图像算法处理、视频送显及输出等功能。 +2 产品配置 +2.1 关键技术参数 +表-1 关键技术参数表 +产品型号 +Mini212G2 系列 +分辨率 +256×192 +像元尺寸 +12μm +响应波段 +8~14μm +NETD +≤50mK@ F1.0,300K +帧频 +9Hz / 25Hz / 30Hz (默认)/ 50Hz +调焦方式 +免调焦 +镜头(视场角/焦距) +2.1mm/F1.0-FF +3.2mm/F1.0-FF +7mm/F1.0-FF +10mm/F1.0-FF +重量(单位:克) +8.8 +3.8 +6.9 +8.5 + + +# Page 9 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 8 页 / 共 26 页 + + +产品型号 +Mini212G2 系列 +PCB 尺寸 +≤17mm*17mm*4.7mm(长*宽*高) +数字视频接口 +USB2.0 / DVP / BT.656 / LVDS +模拟视频 +支持(PAL / NTSC) +开机时间 +<5s +图像算法 +NUC/3DNR/DNS/DRC/EE/SFFC +伪彩 +11 种-支持客户自定义色带 +工作电压 +3.3V±0.1V +典型功耗 +330mW/3.3V @23±3℃ +测温范围 +-20℃~+550℃(-20℃~+150℃ | +100℃~550℃两档) +测温精度 +±2℃ / ±2% (取大值) 需整机校温 +测温分析 +支持点/区域测温,含最大值/最小值/平均值 +SDK +Android/Linux/Windows 版本 +温度矩阵 +支持 +等温线 +支持 +工作温度 +-40℃~+70℃ +湿度 +5%~95%(非凝结) +贮存温度 +-40℃~+85℃ +认证 +RoHS 2.0 / Reach +2.2 光学配置 +表-2 光学配置表 +序号 +镜头类型 +焦距 +F 数 +视场角(H×V,±5°) +防护 +重量(克) +1 +免调焦 +10mm +1.0 +17.5°×13.2° +D:22° +头片镜IP67 +6.6±0.5 +2 +免调焦 +7mm +1.0 +24.7°×18.9° +D:31.2° +头片镜IP67 +5.9±0.5 +3 +免调焦 +3.2mm +1.0 +56.2°×42.2° +D:72° +头片镜IP67 +3.5±0.3 +4 +免调焦 +2.1mm +1.0 +90°×65.3° +D:118.3° +头片镜IP67 +6.3±0.5 + + +# Page 10 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 9 页 / 共 26 页 + + +2.3 PC 软件 +UncooledInfraredCameraApplication.exe 可实现对Mini212G2 系列机芯 +的在线控制。 +操作系统:支持Windows 7/8/10/11 等。 +语言环境:支持中文/英文等。 +推荐硬件配置:i5 处理器及以上。 +2.4 拆箱 +标准配置包含Mini212G2 机芯,产品合格证。 +由于机芯内含静电敏感的电子元器件,请在良好静电防护的环境中拆箱取用,以避 +免因静电原因导致机芯损坏。 +产品包装箱中已充满防静电泡沫材料,防止机芯在运输过程中损坏。 +3 接口说明 +3.1 电气接口 +Mini212G2A 机芯主板部分对外接口为40PIN,机芯对外接口型号为:WP7B- +S040VA1-R8000。推荐对接接口型号为:WP7B-P040VA1-R8000。,具体PIN 脚定义 +如下表-3 所示: +表-3 PIN 脚定义 +PIN 序 +信号定义 +信号方向 +电平 +说明 +1 +LVDS_DATA0_P +O +1.2V +LVDS +2 +LVDS_DATA0_N +O +1.2V +LVDS +3 +VIDEO +O +1.8/3.3V +模拟视频 +4 +VIDEO GND +O +1.8/3.3V +模拟视频地 +5 +LVDS_DATA1_P +O +1.2V +LVDS + + +# Page 11 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 10 页 / 共 26 页 + + +PIN 序 +信号定义 +信号方向 +电平 +说明 +6 +LVDS_DATA1_N +O +1.2V +LVDS +7 +SPI_0_MISO +I +1.8/3.3V +SPI(预留,目前未实现) +8 +SPI_0_CLK +O +36 脚I/O 输入电压 +SPI(预留,目前未实现) +9 +DATA_OUT0 +O +36 脚I/O 输入电压 +DVP 数据位0 2 4 6 +10 +DATA_OUT2 +O +36 脚I/O 输入电压 +11 +DATA_OUT4 +O +36 脚I/O 输入电压 +12 +DATA_OUT6 +O +36 脚I/O 输入电压 +13 +EXT_SYNC +I/O +36 脚I/O 输入电压 +外同步信号 +14 +DGND +DGND +DGND +DGND +15 +USB_DM +I/O +USB +USB +16 +USB_DP +I/O +17 +DGND +DGND +DGND +DGND +18 +DIGITAL_HSY +O +36 脚I/O 输入电压 +DVP 行信号 +19 +LVDS_CLK_P +O +1.2V +LVDS +20 +LVDS_CLK_N +O +1.2V +LVDS +21 +DIGITAL_VSY +O +36 脚I/O 输入电压 +DVP 场信号 +22 +EXT_RST +I +3.3V +模组复位,低电平复位 +23 +TX_TTL0 +O +3.3V +芯片调试串口 +24 +RX_TTL0 +I +3.3V +25 +VDD33 +POWER_IN +3.3V +数字供电外部需要提供3.3V +26 +VDD33 +POWER_IN +3.3V +数字供电外部需要提供3.3V +27 +DGND +DGND +DGND +DGND +28 +DGND +DGND +DGND +DGND +29 +DATA_OUT7 +O +36 脚I/O 输入电压 +DVP 数据位1 3 5 7 +30 +DATA_OUT5 +O +36 脚I/O 输入电压 +31 +DATA_OUT3 +O +36 脚I/O 输入电压 +32 +DATA_OUT1 +O +36 脚I/O 输入电压 +33 +DGND +DGND +DGND +DGND +34 +DATA_OUT_CLK +O +36 脚I/O 输入电压 +DVP 时钟信号 +35 +DGND +DGND +DGND +DGND +36 +I/O 1.8V/3.3V +POWER_IN +I/O 电压可配 +1.8V/3.3V +IO 电平电压 +37 +UART_2_TXD +O +1.8/3.3V +用户通信串口 +38 +UART_2_RXD +I +1.8/3.3V +39 +DGND +DGND +DGND +DGND + + +# Page 12 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 11 页 / 共 26 页 + + +PIN 序 +信号定义 +信号方向 +电平 +说明 +40 +DGND +DGND +DGND +DGND +注: +1. 信号方向O 代表输出,I 代表输入,信号定义NC 表示管脚悬空,TBD 表示预 +留待定义。 +2. EXT_SYNC 仅在有外同步需求场景下应用,非数字口必须信号,支持外同步输 +入模式,在不使用外同步接口时,务必关闭外同步功能。 +3.2 视频接口 +3.2.1 USB2.0 +采用USB2.0 输出,支持视频输出和通信控制,推荐客户采用LibUSB 进行开发设 +计,USB 设备具体配置如下: +1) VID 为0x04B4; +2)PID 为0xF7F7; +3)端点1 配置为图像输出; +4)端点2 配置为指令接收; +5)端点3 配置为指令发送。 +USB 视频输出支持以下表格组合: +表-4 视频输出组合 + +RAW +YUV① +TEMP +RAW +◯ +✓ +× +YUV +✓ +◯ +✓ +TEMP +× +✓ +◯ + +①YUV 为YUV422 格式,数据是 UYVY 排列。 + + +# Page 13 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 12 页 / 共 26 页 + + +注: +1.“◯”表示单传输;“✓”表示可组合输出;“×”表示不可组合输出; +2. 以上输出可选择搭配参数行或不搭配参数行 +以RAW+YUV+参数行为例,具体视频格式如下: + + +256*2byte +256*2byte +193 行 +192 行 +RAW +YUV +1 行 +参数行 +3.2.2 DVP +3.2.2.1 不带参数行CMOS8 +DVP 8bit 数字视频时序参数(不带参数行)见表-5、表-6、表-7 所示: +表-5 数字口8bit 时序参数(不带参数行)(25HZ) +视频制式 +(数据源) +25Hz +(RAW16/YUV422) +25Hz +(RAW16+YUV422) +名称 +典型值 +Unit +备注 +典型值 +Unit +备注 +分辨率 +256×192 +512×192 +NW +256 + + +512 + + +NH +192 + + +192 + + +DIGITAL_CLK +12 +MHz + +24 +MHz + +TLine +64 +us +768 CLK +64 +us +1536 CLK +TLine_Valid +42.67 +us +512 CLK +42.67 +us +1024 CLK +TLine_Blank +21.33 +us +256 CLK +21.33 +us +512 CLK +TPixel +0.083 +us +1 CLK +0.042 +us +1 CLK + + +# Page 14 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 13 页 / 共 26 页 + + +TStart +/ +us +/ +/ +us +/ +TFrame +40 +ms +625 Line +40 +ms +625 Line +TField_Valid +12.29 +ms +192 Line +12.29 +ms +192 Line +TField_Blank +27.71 +ms +433Line +27.71 +ms +433Line +表-6 数字口8bit 时序参数(不带参数行)(30HZ) +视频制式 +(数据源) +30Hz +(RAW16/YUV422) +30Hz +(RAW16+YUV422) +名称 +典型值 +Unit +备注 +典型值 +Unit +备注 +分辨率 +256×192 +512×192 +NW +256 + + +512 + + +NH +192 + + +192 + + +DIGITAL_CLK +12 +MHz + +24 +MHz + +TLine +64 +us +768 CLK +64 +us +1536 CLK +TLine_Valid +42.67 +us +512 CLK +42.67 +us +1024 CLK +TLine_Blank +21.33 +us +256 CLK +21.33 +us +512 CLK +TPixel +0.083 +us +1 CLK +0.042 +us +1 CLK +TStart +/ +us +/ +/ +us +/ +TFrame +33.33 +ms +520 Line +33.33 +ms +520 Line +TField_Valid +12.30 +ms +192 Line +12.30 +ms +192 Line +TField_Blank +21.03 +ms +328 Line +21.03 +ms +328 Line +表-7 数字口8bit 时序参数(不带参数行)(50HZ) +视频制式 +(数据源) +50Hz +(RAW16/YUV422) +50Hz +(RAW16+YUV422) +名称 +典型值 +Unit +备注 +典型值 +Unit +备注 +分辨率 +256×192 +512×192 +NW +256 + + +512 + + +NH +192 + + +192 + + +DIGITAL_CLK +12 +MHz + +24 +MHz + +TLine +64 +us +768 CLK +64 +us +1536 CLK +TLine_Valid +42.67 +us +512 CLK +42.67 +us +1024 CLK +TLine_Blank +21.33 +us +256 CLK +21.33 +us +512 CLK +TPixel +0.083 +us +1 CLK +0.042 +us +1 CLK +TStart +/ +us +/ +/ +us +/ +TFrame +20 +ms +312 Line +20 +ms +312 Line +TField_Valid +12.30 +ms +192 Line +12.30 +ms +192 Line + + +# Page 15 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 14 页 / 共 26 页 + + +TField_Blank +7.69 +ms +120 Line +7.69 +ms +120 Line +数据源为Y16 或YUV422 不带参数行的行场关系时序图如图 2 所示: + +图 2 RAW16/YUV422 不带参数行格式行场关系时序图 +数据源为RAW16 的行与数据时序关系图如图 3、图 4 所示: + +图 3 RAW16(MSB)行与数据时序图 + +图 4 RAW16(LSB)行与数据时序图 +数据源为YUV422 的行与数据时序关系图时序如图 5、图 6 所示: + + +# Page 16 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 15 页 / 共 26 页 + + + +图 5 YUV422(MSB)行与数据时序图 + +图 6 YUV422(LSB)行与数据时序图 +数据源为YUV422+RAW16 的行与数据时序关系图时序如图 7、图 8 所示: +TLine +TLine_Valid +TLine_Blank +DIGITAL_LINE_VALID +DIGITAL_CLOCK +H +Y16_0 +L +H +L +Y16_1 +H +L +Y16_N-1 +Y +YUV0 +U +Y +V +YUV1 +Y +V +YUVN-1 +H +Y16_0 +L +Y16_DATA +YUV_DATA +DIGITAL_DATA +Next TLine + +图 7 YUV422+RAW16(MSB)行与数据时序图 +TLine +TLine_Valid +TLine_Blank +DIGITAL_LINE_VALID +DIGITAL_CLOCK +L +Y16_0 +H +L +H +Y16_1 +L +H +Y16_N-1 +U +YUV0 +Y +V +Y +YUV1 +V +Y +YUVN-1 +L +Y16_0 +H +Y16_DATA +YUV_DATA +DIGITAL_DATA +Next TLine + +图 8 YUV422+RAW16(LSB)行与数据时序图 + + +# Page 17 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 16 页 / 共 26 页 + + +3.2.2.2 带参数行CMOS8 +并行8bit 数字视频时序参数(带参数行)见表-8、表-9、表-10 所示: +表-8 数字口8bit 时序参数(带参数行)(25HZ) +视频制式 +(数据源) +25Hz +(RAW16/YUV422) +25Hz +(RAW16+YUV422) +名称 +典型值 +Unit +备注 +典型值 +Unit +备注 +分辨率 +256×193 +512×193 +NW +256 + + +512 + + +NH +193 + + +193 + + +DIGITAL_CLK +12 +MHz + +24 +MHz + +TLine +64 +us +768 CLK +64 +us +1536 CLK +TLine_Valid +42.67 +us +512 CLK +42.67 +us +1024 CLK +TLine_Blank +21.33 +us +256 CLK +21.33 +us +512 CLK +TPixel +0.083 +us +1 CLK +0.042 +us +1 CLK +TStart +/ +us +/ +/ +us +/ +TFrame +40 +ms +625 Line +40 +ms +625 Line +TField_Valid +12.35 +ms +193 Line +12.35 +ms +193 Line +TField_Blank +27.65 +ms +432Line +27.65 +ms +432Line +表-9 数字口8bit 时序参数(带参数行) (30HZ) +视频制式 +(数据源) +30Hz +(RAW16/YUV422) +30Hz +(RAW16+YUV422) +名称 +典型值 +Unit +备注 +典型值 +Unit +备注 +分辨率 +256×193 +512×193 +NW +256 + + +512 + + +NH +193 + + +193 + + +DIGITAL_CLK +12 +MHz + +24 +MHz + +TLine +64 +us +768 CLK +64 +us +1536 CLK +TLine_Valid +42.67 +us +512 CLK +42.67 +us +1024 CLK +TLine_Blank +21.33 +us +256 CLK +21.33 +us +512 CLK +TPixel +0.083 +us +1 CLK +0.042 +us +1 CLK + + +# Page 18 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 17 页 / 共 26 页 + + +TStart +/ +us +/ +/ +us +/ +TFrame +33.33 +ms +520 Line +33.33 +ms +520 Line +TField_Valid +12.37 +ms +193 Line +12.37 +ms +193 Line +TField_Blank +20.96 +ms +327Line +20.96 +ms +327Line +表-10 数字口8bit 时序参数(带参数行) (50HZ) +视频制式 +(数据源) +50Hz +(RAW16/YUV422) +50Hz +(RAW16+YUV422) +名称 +典型值 +Unit +备注 +典型值 +Unit +备注 +分辨率 +256×193 +512×193 +NW +256 + + +512 + + +NH +193 + + +193 + + +DIGITAL_CLK +12 +MHz + +24 +MHz + +TLine +64 +us +768 CLK +64 +us +1536 CLK +TLine_Valid +42.67 +us +512 CLK +42.67 +us +1024 CLK +TLine_Blank +21.33 +us +256 CLK +21.33 +us +512 CLK +TPixel +0.083 +us +1 CLK +0.042 +us +1 CLK +TStart +/ +us +/ +/ +us +/ +TFrame +20 +ms +312 Line +20 +ms +312 Line +TField_Valid +12.37 +ms +193 Line +12.37 +ms +193 Line +TField_Blank +7.63 +ms +119 Line +7.63 +ms +119 Line +数据源为RAW16 或YUV422 带参数行的行场关系时序图如图 9 所示: +TField0 +Tfield_Valid +Tfield_Blank +DIGITAL_FIELD_VALID +DIGITAL_LINE_VALID +TLine_Blank +L0 +L1 +L2 +LH +P0 +PN +TStart +DIGITAL_DATA +TLine_Valid +Image +First Line +Image + Last Line +Parameter +First Line +Parameter +Last Line + +图 9 RAW16/YUV422+参数行行场关系时序图 + + +# Page 19 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 18 页 / 共 26 页 + + +数据源为RAW16+参数行的行与数据时序关系图如图 10、图 11 所示: + +图 10 RAW16+参数行(MSB)行与数据时序图 + +图 11 RAW16+参数行(LSB)行与数据时序图 +数据源为YUV422+参数行的行与数据时序关系图时序如图 12、图 13 所示: + +图 12 YUV422+参数行(MSB)行与数据时序图 + +图 13 YUV422+参数行(LSB)行与数据时序图 + + +# Page 20 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 19 页 / 共 26 页 + + +数据源为RAW16+参数行+YUV422 的时序关系图时序如图 14、图 15、图 16 所 +示: +TField0 +Tfield_Valid +Tfield_Blank +DIGITAL_FIELD_VALID +DIGITAL_LINE_VALID +TLine_Blank +L0 +L1 +L2 +LH +P0 +PN +TStart +DIGITAL_DATA +TLine_Valid +Image +First Line +Image + Last Line +Parameter +First Line +Parameter +Last Line + +图 14 YUV422+RAW16+参数行时序图 +TLine +TLine_Valid +TLine_Blank +DIGITAL_LINE_VALID +DIGITAL_CLOCK +H +Y16_0 +L +H +L +Y16_1 +H +L +Y16_N-1 +Y +YUV0 +U +Y +V +YUV1 +Y +V +YUVN-1 +H +Pdata_0 +L +Y16_DATA +YUV_DATA +DIGITAL_DATA +Last line of image +Parameter line +Image End + +图 15 YUV422+RAW16(MSB)+参数行与数据时序图 +TLine +TLine_Valid +TLine_Blank +DIGITAL_LINE_VALID +DIGITAL_CLOCK +L +Y16_0 +H +L +H +Y16_1 +L +H +Y16_N-1 +U +YUV0 +Y +V +Y +YUV1 +V +Y +YUVN-1 +L +Pdata_0 +H +Y16_DATA +YUV_DATA +DIGITAL_DATA +Last line of image +Parameter Line +Image End + +图 16 YUV422+RAW16(LSB)+参数行与数据时序图 +3.2.3 BT.656 + + +# Page 21 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 20 页 / 共 26 页 + + +支持显示开机画面 YUV422 +支持非标逐行模式,不支持标准隔行模式; +BT.656 时钟与DVP 8bit 输出保持一致; +BT.656 输出视频数据与DVP 8bit 保持一致; +BT.656 采用内同步:图 17 是BT.656 内同步格式 + +图 17 BT.656 内同步格式 +3.2.4 LVDS +Mini212G2 支持LVDS 2-Lane 输出模式,1 对LVDS_CLK,2 对LVDS_DATA, +数据双沿采样输出。LVDS 共模电压1.25V,摆幅350mV。 +帧输出格式如图 18 所示。 + + +# Page 22 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 21 页 / 共 26 页 + + +Effective Pixels +V.BLK +V.BLK +SAV +(invalid line) +EAV +(invalid line) +SAV +(invalid line) +EAV +(invalid line) +SAV +(valid line) +EAV +(valid line) +H.BLK +H.BLK +H.BLK +H.BLK +H.BLK +H.BLK + hor_lead_len +hor_tail_len +valid_width + ver_lead_len + ver_tail_len +valid_height + +图 18 帧输出格式 +其中,ver_lead_len 表示有效图像上方的消隐行数,ver_tail_len 表示有效图像下 +方的消隐行数;hor_lead_len 表示一行中行头同步码之前的消隐点数,hor_tail_len 表 +示一行中行末同步码之后消隐点数。 +内同步的同步码4 个像素,共用4 种类型同步码,SAV_VALID:有效数据行开始 +同步码;EAV_VALID:有效数据行结束同步码;SAV_INVALID:无效数据行开始同步 +码;EAV_INVALID:无效数据行结束同步码。LVDS 同步码查找表见 +表-11 LVDS 同步码查找表 +同步码 +1st code +2nd code +3rd code +4th code +SAV_VALID +0xFFFF +0x0000 +0x0000 +0x8000 +EAV_VALID +0xFFFF +0x0000 +0x0000 +0x9D00 +SAV_INVALID +0xFFFF +0x0000 +0x0000 +0xAB00 +EAV_INVALID +0xFFFF +0x0000 +0x0000 +0XB600 +数据在LVDS 各通道传输如图 19 所示。 + + +# Page 23 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 22 页 / 共 26 页 + + +SAV 1ST +SAV 2ST +SAV 3ST +SAV 4ST +P 0 +... +P 2n-2 +EAV 1ST +EAV 2ST +EAV 3ST +EAV 4ST +CH1 +SAV 1ST +SAV 2ST +SAV 3ST +SAV 4ST +P 1 +... +P 2n-1 +EAV 1ST +EAV 2ST +EAV 3ST +EAV 4ST +CH2 +DCLK + +图 19 lane 传输格式 +数据默认16bit,字节内大端输出,数据格式如图 20 所示。 +P[15] +P[14] +... +P[1] +P[0] +P[15] +P[14] +... +Pixel N +Pixel N+1 + +图 20 16bit 像素点传输时序 +3.2.5 模拟视频 +支持标准PAL 制式和标准NTSC 制式切换(可通过演示软件进行制式切换,具体 +见演示软件操作说明),默认打开状态(通过演示软件可以关闭/打开模拟视频,具体见 +演示软件操作说明); +PAL 制式输出有效分辨率为:720×540; +NTSC 制式输出有效分辨率为:640×480; +3.3 机械接口 +板载40PIN 连接器型号为:WP7B-S040VA1-R8000 + + +# Page 24 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 23 页 / 共 26 页 + + +与其对扣的连接器型号为:WP7B-P040VA1-R8000 +详细规格见以上连接器规格书。 +4 串口通讯协议 +详见《串口通讯协议》。 +5 FAQ +5.1 USB 驱动如何确定安装成功? +软件安装成功后,打开计算机的设备管理器,连接机芯后即可看到libusb-win32 +decices;双击 ,显示Mars 即驱动正常。 +5.2 数字口如何切换 +⚫ 选择数字口格式(USB2.0 or CMOS); +⚫ 若选择USB2.0 格式,机芯会自动切换至相应帧频及视频制式匹配的 +USB2.0 格式数据;若选择CMOS 格式,则需额外选择CMOS 内容和CMOS +接口类型,方可正常使用。 +5.3 上位机软件提示连接设备失败 + + +# Page 25 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 24 页 / 共 26 页 + + + +图 21 上位机软件界面 +⚫ 检测USB 驱动是否安装成功,在设备管理器中确定; +⚫ 客户需要检查电脑是否有内置摄像头,有内置摄像头,需要禁用; +⚫ 检测PC 端接口和USB 线是否满足要求; +⚫ 检测设备连接上电前,PC 端上位机软件是否全部关闭 +⚫ 尝试手动连接串口或者断电重启; +6 机械图纸 +详见2D 机械图纸。 +7 包装说明 +详见《包装方案说明》。 +8 附录 +8.1 红外保护窗口材质介绍 +保护窗口选择为可镀 8-12um 波段膜层的红外,如锗、硅等,如Timo 256 模组 +56°镜头匹配窗口典型尺寸为 9×9mm 直径 1mm 的方形锗窗口(根据镜头与窗口的 + + +# Page 26 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 25 页 / 共 26 页 + + +安装位置,满足窗口尺寸完全覆盖光线即可),典型镀 iDLC(类金刚石保护膜)透过率参 +数可供参考: +表-12 镀膜透过率参考 + +Thickness +Transmission/% +Waveband + +8-12um +9-12um +9.5-12um +Silicon +1.0mm +81 +79 +77.6 +1.2mm +79.3 +77 +75 +1.5mm +76.8 +74.5 +72.6 +Germanium +1.0mm +92.8 +92.5 +92.8 +1.2mm +92 +92.2 +92.3 +1.5mm +91.5 +91.3 +91.5 +8.2 常见材料的比辐射率 +表-13 常见材料比辐射率 +序号 +材质 +发射率 +序号 +材质 +发射率 +1 +木 +0.85 +12 +黑纸 +0.86 +2 +水 +0.96 +13 +聚碳酸 +0.8 +3 +砖 +0.75 +14 +混凝土 +0.97 +4 +不锈钢 +0.14 +15 +氧化铜 +0.78 +5 +胶带 +0.96 +16 +铸铁 +0.81 +6 +铝板 +0.09 +17 +锈 +0.8 +7 +铜板 +0.06 +18 +石膏 +0.75 +8 +黑铝 +0.95 +19 +油漆 +0.9 +9 +人体皮肤 +0.98 +20 +橡胶 +0.95 +10 +沥青 +0.96 +21 +土壤 +0.93 +11 +PVC 塑料 +0.93 + +8.3 热设计注意事项 +1)红外模组对外界热辐射非常敏感,使用需要注意散热和隔热,以防造成成像不 +均匀或测温不准确。结构上,要考虑散热和隔热。 + + +# Page 27 + + +Mini212G2 机芯用户手册 +版本/修订:V1.0 +第 26 页 / 共 26 页 + + +2)若几个摄像头共用一个支架,且间距较近,白光摄像头的温升情况,可能 对红 +外模组成像 成影响。建议:红外和可见光分别用不同热沉散热,且两者之间最好有隔热 +结构。 +3)温升控制:根据热仿真分析,红外模组在整机工作环境下, 30min 内温升需控 +制在 8℃ 内,且达到热稳定状态; +4)带有充电电池的设备,注意电池充电发热对设备测温精度的影响,采取隔绝或 +者单独充电的方式避免。 +8.4 导热硅脂/垫片使用注意事项 +尽量采用导热垫片,不建议使用导热硅脂,模组外壳无法防尘防水,导热硅脂一旦 +挤进模组内部可能会导致快门无法正常动作,出现测温异常图像残影等现象。 + +图 22 导热硅脂错误使用示例 + diff --git a/doc/Mini212G2系列用户手册.pdf b/doc/Mini212G2系列用户手册.pdf new file mode 100644 index 0000000..a3d665d Binary files /dev/null and b/doc/Mini212G2系列用户手册.pdf differ diff --git a/prj/TCPClient/Debug/dvp.c b/prj/TCPClient/Debug/dvp.c index 1b7639f..b21c4aa 100644 --- a/prj/TCPClient/Debug/dvp.c +++ b/prj/TCPClient/Debug/dvp.c @@ -31,26 +31,43 @@ void DVP_Init(void) GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_8 | GPIO_Pin_9; GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Step 1: Reset DVP logic */ + DVP->CR1 = RB_DVP_ALL_CLR | RB_DVP_RCV_CLR; + DVP->CR1 = 0x00; /* release reset */ + + /* Step 2: Configure mode - 8-bit data, Video/RGB, continuous capture */ + DVP->CR0 = 0; /* clear everything first */ + DVP_Mode(RB_DVP_D8_MOD, Video_Mode); + /* Mini212G2 polarity: PCLK normal(rising), VSYNC high-active, HSYNC high-active */ + DVP->CR0 &= ~(RB_DVP_P_POLAR | RB_DVP_V_POLAR | RB_DVP_H_POLAR); + DVP->CR0 |= RB_DVP_V_POLAR; /* VSYNC active-high (FIELD_VALID=HIGH) */ + + /* Step 3: Configure DMA buffers */ + DVP->DMA_BUF0 = (uint32_t)DMA_LineBuf0; + DVP->DMA_BUF1 = (uint32_t)DMA_LineBuf1; + + /* Step 4: Configure image dimensions */ + DVP->ROW_NUM = 1; + DVP->COL_NUM = BYTES_PER_LINE; + + /* Step 5: Enable interrupts */ + DVP_INTCfg(ENABLE, RB_DVP_IE_STR_FRM | RB_DVP_IE_ROW_DONE); + NVIC_InitStructure.NVIC_IRQChannel = DVP_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); - DVP_Cfg(DVP_DMA_Disable, DVP_FLAG_FIFO_RESET_Enable, DVP_RX_RESET_Enable); - DVP_Mode(RB_DVP_D8_MOD, Video_Mode); - DVP->CR0 &= ~(RB_DVP_P_POLAR | RB_DVP_V_POLAR | RB_DVP_H_POLAR); - DVP->DMA_BUF0 = (uint32_t)DMA_LineBuf0; - DVP->DMA_BUF1 = (uint32_t)DMA_LineBuf1; - DVP->ROW_NUM = 1; - DVP->COL_NUM = BYTES_PER_LINE; - DVP_INTCfg(ENABLE, RB_DVP_IE_STR_FRM | RB_DVP_IE_ROW_DONE); - DVP_Cfg(DVP_DMA_Enable, DVP_FLAG_FIFO_RESET_Disable, DVP_RX_RESET_Disable); + /* Step 6: Enable DMA, then enable DVP */ + DVP->CR1 = RB_DVP_DMA_EN; /* DMA on, CM=0 continuous, no reset bits */ DVP->CR0 |= RB_DVP_ENABLE; printf("[DVP] Init done CR0=0x%02x CR1=0x%02x ROW=%d COL=%d\r\n", (int)(DVP->CR0 & 0xFF), (int)(DVP->CR1 & 0xFF), (int)DVP->ROW_NUM, (int)DVP->COL_NUM); + printf("[DVP] DMA_BUF0=0x%08x DMA_BUF1=0x%08x\r\n", + (int)DVP->DMA_BUF0, (int)DVP->DMA_BUF1); } #define PROTOCOL_HEADER_RESERVE 64 diff --git a/prj/TCPClient/Debug/mini212g2.c b/prj/TCPClient/Debug/mini212g2.c new file mode 100644 index 0000000..c16000b --- /dev/null +++ b/prj/TCPClient/Debug/mini212g2.c @@ -0,0 +1,263 @@ +#include "mini212g2.h" +#include "debug.h" +#include "string.h" + +#if SENSOR_UART_ENABLE + +/* ============================================================ + * Protocol constants + * ============================================================ */ +#define FRAME_HEAD1 0x55 +#define FRAME_HEAD2 0xAA +#define FRAME_TAIL 0xF0 + +/* ACK response: 55 AA 01 00 01 F0 */ +#define ACK_LEN 6 +static const uint8_t ACK_PATTERN[ACK_LEN] = {0x55, 0xAA, 0x01, 0x00, 0x01, 0xF0}; + +/* ============================================================ + * DVP output configuration commands + * (from Mini212G2 serial protocol document) + * ============================================================ */ + +/* Digital port type → CMOS */ +static const uint8_t CMD_DIGITAL_CMOS[] = + {0x55, 0xAA, 0x07, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0x04, 0xF0}; + +/* CMOS interface → CMOS8(MSB) */ +static const uint8_t CMD_CMOS8_MSB[] = + {0x55, 0xAA, 0x07, 0x02, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x01, 0xF0}; + +/* CMOS content → Y16 */ +static const uint8_t CMD_CONTENT_Y16[] = + {0x55, 0xAA, 0x07, 0x02, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0x05, 0xF0}; + +/* Frame rate → 30Hz */ +static const uint8_t CMD_FPS_30HZ[] = + {0x55, 0xAA, 0x07, 0x02, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0}; + +/* Save settings */ +static const uint8_t CMD_SAVE[] = + {0x55, 0xAA, 0x07, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x03, 0xF0}; + +/* Shutter compensation (NUC) */ +static const uint8_t CMD_SHUTTER[] = + {0x55, 0xAA, 0x07, 0x02, 0x01, 0x08, 0x00, 0x00, 0x00, 0x01, 0x0D, 0xF0}; + +/* Query: digital video page */ +static const uint8_t CMD_QUERY_DIGITAL[] = + {0x55, 0xAA, 0x07, 0x02, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x84, 0xF0}; + +/* ============================================================ + * Low-level UART helpers + * ============================================================ */ + +static void Sensor_UART_Init(void) +{ + GPIO_InitTypeDef gpio = {0}; + USART_InitTypeDef usart = {0}; + + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); + + /* TX: PA2 AF push-pull */ + gpio.GPIO_Pin = GPIO_Pin_2; + gpio.GPIO_Speed = GPIO_Speed_50MHz; + gpio.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &gpio); + + /* RX: PA3 floating input */ + gpio.GPIO_Pin = GPIO_Pin_3; + gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &gpio); + + usart.USART_BaudRate = SENSOR_UART_BAUD; + usart.USART_WordLength = USART_WordLength_8b; + usart.USART_StopBits = USART_StopBits_1; + usart.USART_Parity = USART_Parity_No; + usart.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + usart.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; + + USART_Init(SENSOR_UART, &usart); + USART_Cmd(SENSOR_UART, ENABLE); +} + +static void Sensor_SendBytes(const uint8_t *data, uint8_t len) +{ + for (uint8_t i = 0; i < len; i++) { + while (!USART_GetFlagStatus(SENSOR_UART, USART_FLAG_TXE)); + USART_SendData(SENSOR_UART, data[i]); + } + while (!USART_GetFlagStatus(SENSOR_UART, USART_FLAG_TC)); +} + +/** + * Read response bytes until FRAME_TAIL seen or timeout. + * timeout_ms ≈ approximate milliseconds (uses Delay_Us polling). + * Returns number of bytes actually read. + */ +static int Sensor_ReadResp(uint8_t *buf, uint8_t max_len, uint16_t timeout_ms) +{ + uint8_t idx = 0; + /* Poll with ~0.1 ms granularity */ + for (uint32_t i = 0; i < (uint32_t)timeout_ms * 10; i++) { + if (USART_GetFlagStatus(SENSOR_UART, USART_FLAG_RXNE)) { + buf[idx++] = (uint8_t)USART_ReceiveData(SENSOR_UART); + if (idx >= max_len) return idx; + if (idx >= 2 && buf[idx - 1] == FRAME_TAIL) return idx; + } else { + Delay_Us(100); + } + } + return idx; +} + +static void Sensor_FlushRx(void) +{ + while (USART_GetFlagStatus(SENSOR_UART, USART_FLAG_RXNE)) + (void)USART_ReceiveData(SENSOR_UART); +} + +/* ============================================================ + * Public API + * ============================================================ */ + +int Mini212G2_SendCmd(const uint8_t *cmd, uint8_t len) +{ + uint8_t resp[8]; + Sensor_FlushRx(); + Sensor_SendBytes(cmd, len); + + int n = Sensor_ReadResp(resp, sizeof(resp), 200); + if (n == ACK_LEN && memcmp(resp, ACK_PATTERN, ACK_LEN) == 0) + return 0; + + /* Debug: print what we got */ + printf("[Sensor] resp(%d):", n); + for (int j = 0; j < n; j++) printf(" %02x", resp[j]); + printf("\r\n"); + return -1; +} + +#endif /* SENSOR_UART_ENABLE (UART helpers + SendCmd) */ + +int Mini212G2_Init(void) +{ +#if !SENSOR_UART_ENABLE + printf("[Sensor] UART disabled, assuming pre-configured via USB\r\n"); + printf("[Sensor] Expected: CMOS output, CMOS8(MSB), Y16, 30Hz\r\n"); + return 0; +#else + int ok = 0, fail = 0; + + Sensor_UART_Init(); + printf("[Sensor] UART2 init (PA2=TX PA3=RX, 115200)\r\n"); + + /* Sensor needs several seconds to boot after power-on */ + printf("[Sensor] Waiting 3s for sensor boot...\r\n"); + Delay_Ms(3000); + + printf("[Sensor] Configuring CMOS/DVP output...\r\n"); + + /* 1. Shutter compensation */ + if (Mini212G2_SendCmd(CMD_SHUTTER, sizeof(CMD_SHUTTER)) == 0) + { ok++; printf("[Sensor] Shutter OK\r\n"); } + else + { fail++; printf("[Sensor] Shutter FAIL\r\n"); } + Delay_Ms(200); + + /* 2. Digital port → CMOS */ + if (Mini212G2_SendCmd(CMD_DIGITAL_CMOS, sizeof(CMD_DIGITAL_CMOS)) == 0) + { ok++; printf("[Sensor] Digital->CMOS OK\r\n"); } + else + { fail++; printf("[Sensor] Digital->CMOS FAIL\r\n"); } + Delay_Ms(200); + + /* 3. CMOS interface → 8-bit MSB */ + if (Mini212G2_SendCmd(CMD_CMOS8_MSB, sizeof(CMD_CMOS8_MSB)) == 0) + { ok++; printf("[Sensor] CMOS8(MSB) OK\r\n"); } + else + { fail++; printf("[Sensor] CMOS8(MSB) FAIL\r\n"); } + Delay_Ms(200); + + /* 4. CMOS content → Y16 (raw 16-bit thermal) */ + if (Mini212G2_SendCmd(CMD_CONTENT_Y16, sizeof(CMD_CONTENT_Y16)) == 0) + { ok++; printf("[Sensor] Y16 OK\r\n"); } + else + { fail++; printf("[Sensor] Y16 FAIL\r\n"); } + Delay_Ms(200); + + /* 5. Frame rate → 30Hz */ + if (Mini212G2_SendCmd(CMD_FPS_30HZ, sizeof(CMD_FPS_30HZ)) == 0) + { ok++; printf("[Sensor] 30Hz OK\r\n"); } + else + { fail++; printf("[Sensor] 30Hz FAIL\r\n"); } + Delay_Ms(200); + + /* 6. Save settings to flash */ + if (Mini212G2_SendCmd(CMD_SAVE, sizeof(CMD_SAVE)) == 0) + { ok++; printf("[Sensor] Save OK\r\n"); } + else + { fail++; printf("[Sensor] Save FAIL\r\n"); } + Delay_Ms(500); + + printf("[Sensor] Config result: %d ok, %d fail\r\n", ok, fail); + + /* Print current digital video status for verification */ + Mini212G2_PrintDigitalVideoStatus(); + + return (fail == 0) ? 0 : -1; +#endif /* SENSOR_UART_ENABLE */ +} + +#if SENSOR_UART_ENABLE +void Mini212G2_PrintDigitalVideoStatus(void) +{ + uint8_t resp[32]; + Sensor_FlushRx(); + Sensor_SendBytes(CMD_QUERY_DIGITAL, sizeof(CMD_QUERY_DIGITAL)); + + int n = Sensor_ReadResp(resp, sizeof(resp), 500); + if (n < 24) { + printf("[Sensor] Query failed (got %d bytes)\r\n", n); + return; + } + + /* Parse per protocol spec (Page 11-12): + * Byte5 = ext-sync, Byte6 = digital port type, Byte7 = CMOS content, + * Byte8 = CMOS interface, Byte9 = frame rate, Byte11 = clock phase */ + static const char *port_names[] = { + "OFF", "USB2.0", "CMOS", "BT1120", "BT656", + "USB+UART", "LCD", "LVDS", "LCD+DVP", "UVC+CDC" + }; + static const char *content_names[] = { + "YUV422", "YUV422+Param", "Y16", "Y16+Param", + "Y16+YUV422", "Y16+Param+YUV422" + }; + static const char *iface_names[] = {"CMOS16", "CMOS8(MSB)", "CMOS8(LSB)"}; + static const char *fps_names[] = {"30Hz", "25Hz", "9Hz", "50Hz"}; + + uint8_t port_type = resp[6]; + uint8_t content = resp[7]; + uint8_t iface = resp[8]; + uint8_t fps = resp[9]; + uint8_t clk_phase = resp[11]; + + printf("[Sensor] Digital Video Status:\r\n"); + printf(" Port: %s (%d)\r\n", + (port_type < 10) ? port_names[port_type] : "?", (int)port_type); + printf(" Content: %s (%d)\r\n", + (content < 6) ? content_names[content] : "?", (int)content); + printf(" Interface: %s (%d)\r\n", + (iface < 3) ? iface_names[iface] : "?", (int)iface); + printf(" FPS: %s (%d)\r\n", + (fps < 4) ? fps_names[fps] : "?", (int)fps); + printf(" ClkPhase: %s (%d)\r\n", + (clk_phase == 0) ? "Rising" : "Falling", (int)clk_phase); +} + +int Mini212G2_ShutterCompensation(void) +{ + return Mini212G2_SendCmd(CMD_SHUTTER, sizeof(CMD_SHUTTER)); +} +#endif /* SENSOR_UART_ENABLE */ diff --git a/prj/TCPClient/Debug/mini212g2.h b/prj/TCPClient/Debug/mini212g2.h new file mode 100644 index 0000000..6fb9431 --- /dev/null +++ b/prj/TCPClient/Debug/mini212g2.h @@ -0,0 +1,40 @@ +#ifndef MINI212G2_H_ +#define MINI212G2_H_ + +#include "ch32v30x.h" + +/* Set to 1 to enable UART commands to configure sensor at boot. + * Set to 0 if sensor is pre-configured via USB to auto-output CMOS/DVP. + * NOTE: PA2/PA3 may conflict with Ethernet — keep 0 unless UART is wired. */ +#define SENSOR_UART_ENABLE 0 + +/* Sensor UART: USART2 PA2=TX PA3=RX */ +#define SENSOR_UART USART2 +#define SENSOR_UART_BAUD 115200 + +/** + * Initialize sensor. When SENSOR_UART_ENABLE=1, configures via UART. + * When SENSOR_UART_ENABLE=0, assumes sensor is pre-configured via USB. + * Call BEFORE DVP_Init(). Returns 0 on success. + */ +int Mini212G2_Init(void); + +#if SENSOR_UART_ENABLE +/** + * Send a raw protocol command and wait for ACK. + * Returns 0 on ACK received, -1 on timeout/bad response. + */ +int Mini212G2_SendCmd(const uint8_t *cmd, uint8_t len); + +/** + * Query current digital video settings. Prints result to debug console. + */ +void Mini212G2_PrintDigitalVideoStatus(void); + +/** + * Trigger shutter compensation (NUC). + */ +int Mini212G2_ShutterCompensation(void); +#endif /* SENSOR_UART_ENABLE */ + +#endif diff --git a/prj/TCPClient/User/main.c b/prj/TCPClient/User/main.c index 6e7d6d5..dea78c0 100644 --- a/prj/TCPClient/User/main.c +++ b/prj/TCPClient/User/main.c @@ -2,6 +2,7 @@ #include "string.h" #include "eth_driver.h" #include "dvp.h" +#include "mini212g2.h" #include "qdx_port.h" #include "qdx_preprocess.h" #include "qdx_tcp_logic.h" @@ -347,6 +348,7 @@ int main(void) for (i = 0; i < 6; i++) printf("%x ", MACAddr[i]); printf("\n"); + Mini212G2_Init(); /* Configure sensor for CMOS/DVP Y16 output */ DVP_Init(); TIM2_Init(); NG_GPIO_Init();