搜索
bottom↓
回复: 97

STM32实现USB Video Class开始干活了

  [复制链接]

出0入0汤圆

发表于 2011-12-8 10:55:17 | 显示全部楼层 |阅读模式
终于出来图像,虽然图像混乱,问题还很多,但它干活了!发贴自我庆贺!

(原文件名:Capture.jpg)

真实意义的USB摄像头,OV7670拍摄图像,STM32 JPEG编码。用USB虚拟串口传到PC端显示早就OK,移植到USB Video Class就是不工作!
描述符和流控制耗了N多天,找不到什么问题,UVCView分析通过,Bushound也看到完整的JPEG数据,甚至用自己写的DirectX接口Video Capture程序调试,都能发现有逐帧的数据上来,可是显示就是黑屏一个。
无计加无聊之下去翻看JPEG的编码,对照JPEG文件。JPEG Encoder是自己写的,为了节省Bytes,有些可选段没加上。乱调整一下,把省略了的APP0段加上,突然发现有图像出来了!他NN的熊。
回头一想也好理解,JPEG标准中APP0段是可选的,没有它单独的图像也能显示;视频流模式,USB Video Class设备把数据流丢给DirectX Render,后者要从每帧图像中找APP0段中的JFIF标记,或者,在数据流出错后,新的帧到来,找到JFIF标记就丢给JPEG解码器。没有JFIF标记,初始化(用上次的标记?)错,或者中间数据流出错,DirectX Render就直接罢工!显示黑屏。这个APP0段说是可选,实际是必选才行!

出0入0汤圆

发表于 2011-12-8 11:00:15 | 显示全部楼层
NB

出0入0汤圆

 楼主| 发表于 2011-12-12 15:42:18 | 显示全部楼层
才几天就被踩到水底了,这里好热闹呀!
仍然没有进展。jpeg压缩改成YUV420格式,也不起作用,好在这个工作不算浪费。
这东西找不到可抄抄改改的例子,似乎感兴趣的人不多,或者不愿开放,只能一点点摸索。希望能遇到有经验或感兴趣的人交流。抛砖引玉,上传JPEG编码的源程序:
点击此处下载 ourdev_703933JSK7EE.rar(文件大小:11K) (原文件名:ejpeg.rar)
无删节版,中文字幕。自己写的,以前在DM642上用的,已验证。
越做越觉得这个东西水很深,一己之力做不了多少,决定开源,但不是一次上传结果,每调妥一块就上传一块,逐步完善。

出0入0汤圆

 楼主| 发表于 2011-12-12 15:43:24 | 显示全部楼层
希望能有人指出错误。

出0入0汤圆

发表于 2011-12-12 16:21:46 | 显示全部楼层
马克

出0入0汤圆

发表于 2011-12-12 17:46:38 | 显示全部楼层
支持~~~

出0入0汤圆

发表于 2011-12-15 09:53:24 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-12-15 22:07:16 | 显示全部楼层
感谢支持,能出来稳定图像了,但是还有问题

(原文件名:Capture.jpg)


有时候图像错误严重,但又抓不住错误数据;图像显示正确的时候,Bushound抓到的数据包似乎又有错,信谁?
感觉ISO模式的IN Endian Point很难缠。

出0入0汤圆

发表于 2011-12-16 11:47:46 | 显示全部楼层
给力

出0入0汤圆

发表于 2011-12-16 17:38:08 | 显示全部楼层
顶住

出0入0汤圆

发表于 2011-12-16 20:56:17 | 显示全部楼层
学习了

出0入0汤圆

 楼主| 发表于 2011-12-18 21:22:47 | 显示全部楼层
要出差,暂停几天。不过基本上已经搞清楚了,关键是流控制机制,USB接口这块基本已经没问题了。上代码。
点击此处下载 ourdev_705726JSE1X7.rar(文件大小:18K) (原文件名:usbapp.rar)

这是STM32 USB框架中要按应用改写的程序,usb_desc.c,usb_prop.c, usb_endp.c等。其他的,是copy原始的usblib。
参照speaker那个例子改写的,完整移植。

出0入0汤圆

发表于 2011-12-18 21:33:29 | 显示全部楼层
mark 谢谢lz

出0入0汤圆

发表于 2011-12-20 04:12:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-21 23:48:21 | 显示全部楼层
希望楼主继续!!

出0入0汤圆

发表于 2011-12-22 08:32:41 | 显示全部楼层
mark

出0入4汤圆

发表于 2011-12-22 22:53:08 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2012-1-14 21:58:42 | 显示全部楼层
出差之后,准备过年,一段时间没上来就沉到水底了,哈哈。
杂杂碎碎的时间加起来,这个东西已经成功了!稳定的320x240图像,标准USB Video Camera类。
帧率大约5帧,不过这个数值意义不大(因为隔了一层,不是实时,准实时)
完成承诺,上关键的流控制程序。
点击此处下载 ourdev_713167HXGYEF.rar(文件大小:3K) (原文件名:uvcstream.rar)

usb部分没有修改。

出0入0汤圆

 楼主| 发表于 2012-1-14 22:03:53 | 显示全部楼层
stream控制是核心,没地方抄,只好原创。大框架也推翻重来了好几次,虽然最后的程序不多,可不容易!
主程序调用,只要

void main(void)
{
   ....
   ....

    UVC_streamStart();
        //
    while (1)
    {
        UVC_MovieEncoder();
     ....
    }
}
就可以了。

出0入0汤圆

 楼主| 发表于 2012-1-14 22:09:14 | 显示全部楼层
匆忙贴出,要回去过年了,文字性的经验总结,有时间再做。这里涉及了USB的双缓冲,ISO IN端点,UVC类标准等等(JPEG编码是小事了),有很多是值得总结的。在做这块东西,或者有兴趣的朋友可email交流hcc21cn@163.com,有时实际没时间上ourdev了.

出0入0汤圆

发表于 2012-1-14 23:02:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-15 21:43:37 | 显示全部楼层
厉害,学习

出0入0汤圆

发表于 2012-1-15 21:51:10 | 显示全部楼层
厉害

出0入0汤圆

发表于 2012-1-15 22:10:03 | 显示全部楼层
天哪,发现酷帖!

出0入0汤圆

发表于 2012-1-27 09:50:06 | 显示全部楼层
学习!

出10入12汤圆

发表于 2012-1-27 10:33:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-27 10:39:01 | 显示全部楼层
学习

出0入0汤圆

发表于 2012-1-27 10:44:11 | 显示全部楼层
学习学习
mark

出0入0汤圆

发表于 2012-1-27 11:08:03 | 显示全部楼层
mark学习

出0入0汤圆

发表于 2012-1-27 14:24:50 | 显示全部楼层
谢谢了

出0入0汤圆

发表于 2012-1-27 17:50:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-27 21:02:18 | 显示全部楼层
不得不顶

出0入0汤圆

发表于 2012-1-27 22:17:02 | 显示全部楼层
匆忙贴出,要回去过年了,文字性的经验总结,有时间再做。这里涉及了USB的双缓冲,ISO IN端点,UVC类标准等等(JPEG编码是小事了),有很多是值得总结的。在做这块东西,或者有兴趣的朋友可email交流hcc21cn@163.com,有时实际没时间上ourdev了.
 

出0入0汤圆

发表于 2012-5-6 16:24:08 | 显示全部楼层
楼主啊,强啊

出0入0汤圆

发表于 2012-5-6 16:41:48 | 显示全部楼层
强,制作过程直播啊。现在是重播。

出0入0汤圆

发表于 2012-5-6 17:48:14 | 显示全部楼层
MARK,楼主NB,USB协议,JPEG,DIRECTX都折腾了一遭。。顶。

出0入0汤圆

发表于 2012-5-7 08:12:35 | 显示全部楼层
膜拜一下.

出0入0汤圆

发表于 2012-5-13 22:24:02 | 显示全部楼层
MARK TOO 2

出0入0汤圆

发表于 2012-5-21 22:11:52 | 显示全部楼层
mark
                           

出0入0汤圆

发表于 2012-5-23 09:14:41 | 显示全部楼层
下不了吧。

出0入0汤圆

发表于 2012-5-23 19:38:20 | 显示全部楼层
强烈mark留作后用

出0入0汤圆

发表于 2012-6-6 23:52:18 | 显示全部楼层
chunxx 发表于 2012-1-14 21:58
出差之后,准备过年,一段时间没上来就沉到水底了,哈哈。
杂杂碎碎的时间加起来,这个东西已经成功了!稳 ...

很好,很强大啊,可惜下载不了。。。。。。。。。。。。。。。。。

出0入0汤圆

 楼主| 发表于 2012-6-7 13:20:43 | 显示全部楼层
抱歉,没注意论坛升级后下载不了,有网友email提醒才知道。
现在着手整理一个完整版本(原来的project搞乱了)放到这里,或者放到21ic的blog上。

出0入0汤圆

发表于 2012-6-7 18:25:37 | 显示全部楼层
楼主的效率就是快。我打算根据你的例子用OV7725试试效果如何,听说比OV7670好很多也。

出0入0汤圆

发表于 2012-6-7 22:45:14 | 显示全部楼层
牛,学习一下

出0入0汤圆

发表于 2012-6-8 06:39:59 | 显示全部楼层
这个不错!!!

出0入0汤圆

发表于 2012-6-8 10:59:20 | 显示全部楼层
这个要支持,哈哈

出0入0汤圆

发表于 2012-6-8 11:40:10 | 显示全部楼层
好强大 ,可惜下载不了。等楼主整理后的结果。

出0入0汤圆

 楼主| 发表于 2012-6-8 16:01:44 | 显示全部楼层
整理了一下project的源码,上传


缺一个文件mt9m111.c,还待整理。对ov7670运行没有问题。
另外,抽时间做一些文字性总结,放在21的blog上:
http://blog.21ic.com/user1/3095/archives/2012/92603.html

文字总结是针对整体思路的,不过找不到合适的地方边写边放,暂时还放在21ic。
有些东西希望放在那里能保留长一点,不会被灌水淹没,起码对自己和小圈子如此,不过21ic Blog也不是好地方,N多年没进步了。大家有发现合适的地方请告诉我。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-6-8 16:55:53 | 显示全部楼层
mark               

出0入0汤圆

发表于 2012-6-8 19:03:27 | 显示全部楼层
太感谢了

出0入0汤圆

发表于 2012-6-8 19:26:05 | 显示全部楼层
这级别太高了,仰望一下!

出0入0汤圆

发表于 2012-6-9 08:16:11 | 显示全部楼层
如果发RGB555或RGB565等RGB格式回上位机时,描述符(Class-specific VideoStream Frame Descriptor)如何写?
主要是想直接将OV7670的输出数据发回上位机,这样MCU就不用时间来处理数据了。
因USB速度低要将传送图像大小变小。

出0入0汤圆

发表于 2012-6-9 08:34:54 | 显示全部楼层
膜拜一下

出0入18汤圆

发表于 2012-7-2 10:32:15 | 显示全部楼层
看过 楼主的博客 和资料  很好的资料

出0入0汤圆

发表于 2012-7-2 11:05:59 | 显示全部楼层
mark一下,以后说不定有用....谢谢楼主

出0入0汤圆

发表于 2012-7-2 15:10:36 | 显示全部楼层
很不错,下来学习了!

出0入4汤圆

发表于 2012-8-29 17:45:37 | 显示全部楼层
楼主好厉害啊,以后请多多指教

出0入4汤圆

发表于 2012-9-28 15:06:23 | 显示全部楼层
以后有用

出0入0汤圆

 楼主| 发表于 2012-10-8 12:06:48 | 显示全部楼层
这部分工作合并到一个新的帖子上:
http://www.amobbs.com/thread-5498852-1-7.html
敬请支持。

出0入0汤圆

发表于 2012-10-8 12:30:56 | 显示全部楼层
好资料!
绝对定!

出0入0汤圆

发表于 2012-10-8 13:02:02 | 显示全部楼层
NB,mark!

出0入0汤圆

发表于 2012-10-8 13:41:36 | 显示全部楼层
厉害,学习学习

出0入0汤圆

发表于 2012-10-18 19:29:52 | 显示全部楼层
学习一下~~~~~~~~~~

出0入0汤圆

发表于 2012-10-18 20:05:26 | 显示全部楼层
MARK,有机会玩一下USB。

出0入0汤圆

发表于 2012-10-18 21:11:39 | 显示全部楼层
这个NB透了

出0入0汤圆

发表于 2012-10-19 09:25:59 | 显示全部楼层
主持!超级牛!继续呀

出0入0汤圆

发表于 2012-10-19 09:31:28 | 显示全部楼层
mark!!!!!!

出0入0汤圆

发表于 2013-1-1 15:07:08 | 显示全部楼层
楼主厉害,学习了。

出0入0汤圆

发表于 2013-1-9 21:23:15 | 显示全部楼层
强啊,有时间学习一下啊

出110入8汤圆

发表于 2013-1-9 22:11:09 | 显示全部楼层
24楼的图像很有古典气息!

出0入0汤圆

发表于 2013-2-18 10:34:06 | 显示全部楼层
楼主太厉害了!!!

出0入0汤圆

发表于 2013-2-18 10:50:42 | 显示全部楼层
楼主太强了

出0入0汤圆

发表于 2013-2-18 11:17:34 | 显示全部楼层
楼主厉害,mark一下啊

出0入0汤圆

发表于 2013-4-28 13:54:28 | 显示全部楼层
厉害的,支持顶一下

出0入0汤圆

发表于 2013-4-28 14:10:55 | 显示全部楼层
我想知道 楼主的USB程序,在win7系统上能识别出来不?

出0入0汤圆

发表于 2013-5-9 14:43:36 | 显示全部楼层
一直是黑屏啊。。
流模式那块,我如果发一个固定的JPGE图片。应该如何在 EP1_IN_Callback 处理呢?

出0入0汤圆

发表于 2013-5-9 16:40:33 | 显示全部楼层
我也弄了个。一直为黑屏啊。。。。

出0入0汤圆

发表于 2013-12-13 13:44:02 | 显示全部楼层
厉害,学习了。顶楼主

出0入0汤圆

发表于 2013-12-25 16:52:06 | 显示全部楼层
厉害,学习了。顶楼主

出0入8汤圆

发表于 2013-12-25 17:06:23 | 显示全部楼层
楼主的摄像头是带fifo的还是不带?

出0入0汤圆

发表于 2014-3-18 11:53:10 | 显示全部楼层
mark                     

出0入0汤圆

发表于 2014-3-19 16:03:04 | 显示全部楼层
很强大,不错

出0入0汤圆

发表于 2014-4-15 19:17:55 | 显示全部楼层
下载了,多谢,现在还没有什么贡献的,要加油了

出0入0汤圆

发表于 2014-7-13 14:16:23 | 显示全部楼层
收货很多!!

出0入0汤圆

发表于 2014-10-24 20:12:29 | 显示全部楼层
先mark,有空再回来看

出0入0汤圆

发表于 2014-10-25 09:59:23 | 显示全部楼层
楼主厉害,好好学习。

出0入0汤圆

发表于 2014-10-25 10:01:59 | 显示全部楼层
记录,收藏下

出0入8汤圆

发表于 2014-10-25 10:15:38 | 显示全部楼层
水深不要紧啊,让自己游泳的姿势漂亮一点就行~

出0入4汤圆

发表于 2015-5-8 15:47:44 | 显示全部楼层
STM32+ 摄像头,请问是把图片压缩成视频流了吗 ?还是直接传输帧序列图片

出0入0汤圆

发表于 2015-5-8 20:31:12 来自手机 | 显示全部楼层
usb不太好做

出0入0汤圆

发表于 2015-5-8 22:06:13 | 显示全部楼层
牛,学习一下,谢谢共享这么好的资料。

出0入0汤圆

发表于 2015-5-8 22:29:50 | 显示全部楼层
关注,手上也有一个摄像头,有时间也得学着玩一下

出0入0汤圆

发表于 2016-10-23 16:22:31 | 显示全部楼层
好贴,学习了

出0入0汤圆

发表于 2018-4-24 19:31:53 来自手机 | 显示全部楼层
牛,有空也学习学习
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 05:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表