打印
[STM32F4]

【STM32F469I试用】USB摄像头的采集与显示

[复制链接]
12949|109
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 lin704932121 于 2016-1-16 22:17 编辑

      前片帖子【STM32F469I试用】Linux下USB无线网卡驱动的移植  介绍了如何在STM32F469I下使用USB无线网卡, 软件中不仅移植了USB无线网卡驱动,还有移植了Linux内核中USB主机控制器,因此不仅可以运行USB无线网卡驱动也可以运行其它类型的驱动。 下面介绍通过移植Linux下的uvc驱动(usb video class)使用摄像头过程。
      USB摄像头的数据传输一般使用同步传输,传输数据量大,几乎占用了整个USB带宽。在USB全速下,15Mbits的最高带宽下最多也只能传输5帧的320x240图像。STM32F4xx USB FS接口的硬件FIFO比较小,每帧数据比较大的话,便无法接收一个完整的同步帧,因此 USB FS接口并不适合大容量的同步传输。 而USB HS接口硬件FIFO扩大了几倍,可以容纳一个完整的同步帧,就可以进行摄像头数据的采集。
一、使用USB摄像头
      STM32F469I-Discovery板子上并没有USB HS的端口,只能先焊个洞洞板了。

        1 引脚接板子上5V电源
        2 引脚接CN5扩展口D12
        3 引脚接CN5扩展口D11
        4 引脚接板子上的GND

        连接完成后,就可以烧程序了。
        1、运行EvalBoards\ST\STM32469I-Discovery\uCOS-III\KeilMDK\uCOS-III.uvproj  ,编译并直接烧写程序。
        2、插入USB摄像头,正常的话就会显示出图像了,我自己的两个通用摄像头都可以用。


附件在【STM32F469I试用】Linux下USB无线网卡驱动的移植  帖子里。
评论
lin704932121 2020-9-15 19:54 回复TA
@lihui567 :ucos系统 
沙发
湛只为无双| | 2016-1-16 10:09 | 只看该作者
我去,还真有人做到了,这个难度不是一般的高,比目前我做的那些有技术含量,给赞一个!

使用特权

评论回复
板凳
戈卫东| | 2016-1-16 10:21 | 只看该作者
感觉很强大的样子

使用特权

评论回复
地板
boyie| | 2016-1-16 10:34 | 只看该作者
这个要赞!  

用STM32这小身板做USB摄像头,虽然实用性不大,但确实是突破,估计以前没人做吧~  

顶楼主。

使用特权

评论回复
5
大秦正声| | 2016-1-16 11:52 | 只看该作者
谢谢分享!接口电路用到哪些引脚?

使用特权

评论回复
6
lin704932121|  楼主 | 2016-1-16 17:47 | 只看该作者
大秦正声 发表于 2016-1-16 11:52
谢谢分享!接口电路用到哪些引脚?

D- 接PB.14,板子上的丝印为D12
D+ 接PB.15,板子上的丝印为D11

使用特权

评论回复
7
lin704932121|  楼主 | 2016-1-16 21:04 | 只看该作者
二、使用uC/Probe查看运行性能
       在板子上的USB FS接口插上USB无线网卡。USB无线网卡将会连接配置文件中的SSID,连接成功后,会用DHCP获取IP地址,并将地址输出到LCD和串口上。


      打开uC/Probe,在设置中选择TCP/IP通讯方式,IP地址填入板子获得的IP地址,点击运行。


可以看到USB Camera Task 占用了42%的CPU使用率,这是因为摄像头采集的像素是YUYV格式,而LCD需要RGB格式,格式转换过程消耗了大量CPU。


使用特权

评论回复
评论
lihui567 2020-8-8 17:49 回复TA
换成MJPEJ格式 
8
runningwzf| | 2016-1-16 23:05 | 只看该作者
CPU使用率也太高了吧?

使用特权

评论回复
9
lin704932121|  楼主 | 2016-1-17 10:43 | 只看该作者
runningwzf 发表于 2016-1-16 23:05
CPU使用率也太高了吧?

当做学习吧,这东西实用性也不是很大。

使用特权

评论回复
10
xzezhen| | 2016-1-17 11:12 | 只看该作者
很赞,学习了

使用特权

评论回复
11
mmuuss586| | 2016-1-17 13:31 | 只看该作者

不错;

使用特权

评论回复
12
boyie| | 2016-1-17 19:17 | 只看该作者
STM32这小身板就不是做视频的,楼主的分辨率很低吧? 我用A8 1G的处理器做1024x768的视频 YUV转RGB,然后还有几个识别的小算法 CPU都顶不住, 别说STM32了, 同样的应用程序 直接拷贝到IMX6 4核上帧数却非常高。

性能决定应用。

如果用FPGA  YUV转RGB就是一个转换电路。。 就像流水线上多加了一个设备 ,但是不会影响流水线的整体速度。  所以STM32没人做USB摄像头,因为实际用处实在想不到。

况且STM32F469的成本比几百M跑linux的ARM9还高。

但是楼主非常厉害! 顶你。

使用特权

评论回复
13
lin704932121|  楼主 | 2016-1-17 20:19 | 只看该作者
boyie 发表于 2016-1-17 19:17
STM32这小身板就不是做视频的,楼主的分辨率很低吧? 我用A8 1G的处理器做1024x768的视频 YUV转RGB,然后还 ...

分辨率只有320X240。用STM32做USB摄像头,一方面是想学习下Linux的uvc驱动,另一方面也是想测试一下同步传输的性能。

使用特权

评论回复
14
colin2135| | 2016-1-27 11:36 | 只看该作者
这个USB摄像头移植真的很棒。楼主牛人!

使用特权

评论回复
15
Rooney30| | 2016-1-31 11:29 | 只看该作者
这个USB摄像头技术感觉很难啊,有技术含量

使用特权

评论回复
16
lin704932121|  楼主 | 2016-1-31 19:23 | 只看该作者
Rooney30 发表于 2016-1-31 11:29
这个USB摄像头技术感觉很难啊,有技术含量

其实只要对照着标准将uvc驱动看懂了后,移植uvc驱动并不是特别困难。最难的部分在于编写USB硬件的驱动程序,当然严格的说不能称的上是驱动,因为已经高度整合了。所以只要将底层的接口编写好、测试好,再移植uvc驱动就比较容易了。

使用特权

评论回复
17
ghybbngj| | 2017-3-11 11:48 | 只看该作者


把UVC移到STM32F4-Discovery工程,插入USB摄像头提示这个错误,什么意思?摄像头是山寨的,不知道什么牌子,但在WINDOWS下正常。

使用特权

评论回复
18
hudi008| | 2017-3-11 22:47 | 只看该作者
这个用的什么编写的程序?

使用特权

评论回复
19
hudi008| | 2017-3-11 22:52 | 只看该作者
USB可以直接读取摄像头么

使用特权

评论回复
20
lin704932121|  楼主 | 2017-3-12 11:06 | 只看该作者
本帖最后由 lin704932121 于 2017-3-12 11:08 编辑
ghybbngj 发表于 2017-3-11 11:48
把UVC移到STM32F4-Discovery工程,插入USB摄像头提示这个错误,什么意思?摄像头是山寨的,不知道什么牌 ...

这个摄像头在Linux下可以正常工作吗?从你的调试信息看,你的摄像头不支持GET_DEF和GET_MIN命令,程序最终失败在uvc_v4l2_do_ioctl()-->uvc_v4l2_set_format()-->uvc_probe_video()-->uvc_get_video_ctrl(GET_MIN)这个函数上。
在uvc_probe_video()函数里,注释掉以下代码再试试看。
        /* Get the minimum and maximum values for compression settings. */
        if (1/*!(video->dev->quirks & UVC_QUIRK_PROBE_MINMAX)*/) {
                ret = uvc_get_video_ctrl(video, &probe_min, 1, GET_MIN);
                if (ret < 0)
                        goto done;
                ret = uvc_get_video_ctrl(video, &probe_max, 1, GET_MAX);
                if (ret < 0)
                        goto done;

                probe->wCompQuality = probe_max.wCompQuality;
        }

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

82

帖子

18

粉丝