描述
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 1、项目功能介绍</h3>
<hr>
<p>摄像头是笔记本电脑中走线较长(通常要使用 FPC线跨越整个屏幕),通讯速度较高的设备。之前大多采用 MIPI 总线(CSI/DSI)。</p>
<p>但是随着时代的发展,USB 总线以便于调试和成本更低的优点逐渐取代了 MIPI Camera。为了评估USB设计,在研发阶段需要一个稳定的 USB 摄像头发送可预测的图像,这次就基于 WCH 的 CH32V305 设计一个虚拟摄像头,将自身报告为一个 USB RGB 摄像头,稳定的发送彩条视频,这样,在研发阶段可以用来评估FPC线信号质量。</p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*2、项目属性</h3>
<hr>
<p>原创,首次公开。</p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 3、开源协议</h3>
<hr>
<p>OpenAtom Open Hardware License,Version1.0(OpenAtom OHL 1.0)</p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><strong><span style="color:#0093e6;">请在竞赛阶段填写 ↓</span></strong></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*4、硬件部分</h3>
<hr>
<p>整个设计非常小巧,相当于Ch32V305 的最小系统,为了使用 USB High Speed, 这里外挂了一个16Mhz 晶振。</p>
<p><img src="//image.lceda.cn/pullimage/fZQrf5bFkSKo2xAVufRPWsiyEVZkgOHCK9Qqk2eC.png" alt="fZQrf5bFkSKo2xAVufRPWsiyEVZkgOHCK9Qqk2eC.png"></p>
<p>PCB 设计如下:</p>
<p><img src="//image.lceda.cn/pullimage/fmWlo6vAM1HiLyagdqnE5aAhTVKwxl67h92YbmoM.png" alt="fmWlo6vAM1HiLyagdqnE5aAhTVKwxl67h92YbmoM.png"></p>
<p>最终成品是刚好可以装入U盘大小的透明外壳中。</p>
<p><img src="//image.lceda.cn/pullimage/y0XC38SLFXhVzaazzKVBfq1AlIyqzuV5FgVeWaUW.png" alt="y0XC38SLFXhVzaazzKVBfq1AlIyqzuV5FgVeWaUW.png"></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*5、软件部分</h3>
<hr>
<p>编译工具使用MounRiver Studio 2 , 这是WCH 系列官方指定的 IDE, 完全免费;代码没有使用任何架构,直接基于官方的 CH32V307EVT 中的 USB HighSpeed KM 例子修改而来。</p>
<p>为了让USB 摄像头跑起来,第一步要使用正确的描述符,将自身报告为 USB Camera 设备,如果这一步正确,那么插入设备之后设备管理器中会出现 Camera 设备。</p>
<p>第二步是要USB设备响应以下命令:</p>
<p>1.GET_INFO SU_INPUT_SELECT_CONTROL</p>
<p><img src="//image.lceda.cn/pullimage/ozpvhQEfedrDpxSctaoOJH8lF3am8fW4Tj3PvaAa.png" alt="ozpvhQEfedrDpxSctaoOJH8lF3am8fW4Tj3PvaAa.png"></p>
<p>2.GET_INFO PU_BRIGHTNESS_CONTROL</p>
<p><img src="//image.lceda.cn/pullimage/ZIYZEYAEDe7l375MdRJFSpKcH4ROM9wy5htFgLDL.png" alt="ZIYZEYAEDe7l375MdRJFSpKcH4ROM9wy5htFgLDL.png"></p>
<p>3.GET_MIN ProcessingUnit</p>
<p><img src="//image.lceda.cn/pullimage/Rgugc7B5o7oxPgW7zRcH9wXIpzWEY8bsgGS6S04E.png" alt="Rgugc7B5o7oxPgW7zRcH9wXIpzWEY8bsgGS6S04E.png"></p>
<p>4.GET_MAX ProcessingUnit</p>
<p><img src="//image.lceda.cn/pullimage/1DQUtGCQtLjVVgO3qIInFKv93VWcqbKoEn1ztbou.png" alt="1DQUtGCQtLjVVgO3qIInFKv93VWcqbKoEn1ztbou.png"></p>
<p>5.GET_RES processingUnit</p>
<p><img src="//image.lceda.cn/pullimage/l6X8H4aHkWKiJmuCyeoWKLY5BCtkGh7fYGwTYvrY.png" alt="l6X8H4aHkWKiJmuCyeoWKLY5BCtkGh7fYGwTYvrY.png"></p>
<p>6.GET_DEF ProcessingUnit</p>
<p><img src="//image.lceda.cn/pullimage/BioQpzwsrUVUu7uyld0PwtkxSYSPomSwiMT0885N.png" alt="BioQpzwsrUVUu7uyld0PwtkxSYSPomSwiMT0885N.png"></p>
<p>7.GET_CUR ProcessingUnit</p>
<p><img src="//image.lceda.cn/pullimage/S9FRObOGna3AVj0wSF1rKgIVr1m0NQ1eetIq5hXh.png" alt="S9FRObOGna3AVj0wSF1rKgIVr1m0NQ1eetIq5hXh.png"></p>
<p>8.SET_CUR ProcessingUnit (主机对设备发数据)</p>
<p><img src="//image.lceda.cn/pullimage/XU4eocPdqF1fr9VdWZjAuMzsXaxetAVo47Ed2N7V.png" alt="XU4eocPdqF1fr9VdWZjAuMzsXaxetAVo47Ed2N7V.png"></p>
<p>9.GET_CUR Video_Streaming (主机打开摄像头软件之后才有)</p>
<p><img src="//image.lceda.cn/pullimage/xZeYXM7QSBOXjbffbDwOjAMGZ3dumTFrbXz7YYDP.png" alt="xZeYXM7QSBOXjbffbDwOjAMGZ3dumTFrbXz7YYDP.png"></p>
<p>10.GET_MAX VideoStreaming</p>
<p><img src="//image.lceda.cn/pullimage/28BmVHXHzmadESNdqVByXEYEkoJEEiIp6YwXzkJ9.png" alt="28BmVHXHzmadESNdqVByXEYEkoJEEiIp6YwXzkJ9.png"></p>
<p>11.GET_MIN VideoStreaming</p>
<p><img src="//image.lceda.cn/pullimage/H2WBTEehFbN5TCcpFnLtqKX4LUENLBDda4nTmZoq.png" alt="H2WBTEehFbN5TCcpFnLtqKX4LUENLBDda4nTmZoq.png"></p>
<p>12.SET_CUR VideoStreaming</p>
<p><img src="//image.lceda.cn/pullimage/sK3RAclBHplpXYjQCZXF36mwFejvvMVNDZfY85Y3.png" alt="sK3RAclBHplpXYjQCZXF36mwFejvvMVNDZfY85Y3.png"></p>
<p>接下来构建数据进行发送。需要特别注意的是发送格式,这里使用的是2 Bytes 的Package:02 80/81。 02表示当前头长度是 2Bytes;80 和 81 是用于告知主机当前数据已经发送完成一帧。例如:</p>
<p>第一个 package : 02 80 第一帧内容1</p>
<p>第二个 package : 02 80 第一帧内容2</p>
<p>………</p>
<p>第N个 package : 02 80 第一帧内容N (在此,一帧的内容已经发送)</p>
<p>第N+1个 package : 02 81 第二帧内容1</p>
<p>………</p>
<p> </p>
<p>需要特别注意的是:对于 YUV 和 RGB 格式的图片,每一帧的长度是固定的,YUV 是 (长度x宽度)x1.5 字节,RGB 是(长度x宽度)x3字节。如果发送的长度不正确,摄像头是无法显示的(现象是设备管理器中正常,但是打开相机软件后显示报错,或者一直黑屏)。</p>
<p>为了实现一个彩条滚动的效果,我们定义一个足够长的Buffer, 显示的内容是在这个 Buffer 中滚动的一个窗口,每次将要显示的内容填充到发送缓冲区即可无需再次计算。</p>
<p> </p>
<p> </p>
<h3 style="line-height:1.8;">*6、BOM清单</h3>
<hr>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*7、大赛LOGO验证</h3>
<hr>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/gCiViHg9S6KlBEkxj6fH8swhUr2X71vtKNnVhPly.png" alt="gCiViHg9S6KlBEkxj6fH8swhUr2X71vtKNnVhPly.png"></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 8、演示您的项目并录制成视频上传</h3>
<hr>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;</span></p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。</span></p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">视频冲榜:项目制作过程中,可随时录制视频上传至B站、小红书、视频号、抖音号,<a style="text-decoration:underline;" href="https://doc.weixin.qq.com/smartsheet/form/1_wpmhMpBwAAfrKELBBSNdSqJrorjTQE8Q_600d71" target="_blank">冲榜人气奖励 ></a>,优秀项目可获得立创官方全域曝光机会;</span></p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><span style="font-size:14px;"><a style="text-decoration:underline;" href="/posts/b2b65ad17ac34080a318a5ab47a632c2" target="_blank">前往查看更多详情 ></a></span></p>
<p style="line-height:1.8;"> </p>
评论(0)