OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12584|回复: 29

OV2640摄像头实现UVC及CIF模式

[复制链接]

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2082
金钱
2082
注册时间
2014-12-19
在线时间
711 小时
发表于 2017-4-6 13:55:09 | 显示全部楼层 |阅读模式
本帖最后由 lvehe 于 2017-4-10 12:46 编辑

USB Video Class(UVC)研究终于告一段落。原来xp和Vista只支持UVC1.0标准,所以XP下无法识别采用UVC1.1和1.5版本的USB摄像头。源码改为UVC1.0标准,故在win7和xp下均可显示。
OV2640 UVC.png
参数设置.jpg

OV2640的CIF模式一直未见网络上有成功的案例和代码放出,刚开始和很多人一样,设置为CIF模式后画面几乎全黑。
下面的寄存器配置则解决了这一难题,其实只是窗口和尺寸设置合理了就行。
和官方手册说的400x296不一样,设置为400x300也是可行的。而且帧率也不只是60fps,设置为120fps仍然可以输出。
不过CIF模式下图像颜色和质量跟SVGA和UXGA模式下还是存在一定差异的,但降低帧率会有所改善。是OV2640本身只能达到这种质量还是哪些寄存器存在设置上的问题,也就不得而知了。
OV2640 UVC CIF.png
/* CIF 400x300 60fps */
const uint8_t OV2640_400X300_60D0[][2] =
{
        0xFF, 0x01, // BANK_SEL_SENSOR
        0x11, 0x00, // 影响帧率 (fps = 60 / (CLKRC[5:0] + 1))
        0x12, 0x20, // Bit[6:4]:Resolution Selection 010:CIF
        0x3D, 0x38,
        // 12000000 = 60.0 * (595) * (336)
        0x2A, 0x00,
        0x2B, 0x00,
        0x46, 0x00,
        0x47, 0x00,
        
        // Sensor Window (274, 4, 800, 600)
        0x17, 0x11,
        0x18, 0x43,
        0x32, 0x09,
        
        0x19, 0x00,
        0x1A, 0x4B,
        0x03, 0x0A,
        
        0x37, 0x40,        
        0x4F, 0xBB,
        0x50, 0x9C,
        0x5A, 0x57,
        0x6D, 0x80,
        
        0x39, 0x02,
        0x35, 0x88,
        0x22, 0x0A,
        0x34, 0xA0,
        0x06, 0x02,
        0x0D, 0xB7,
        0x0E, 0x01,
//-----------------------------------------------
        0xFF, 0x00, // BANK_SEL_DSP
        0xE0, 0x04, // RESET (DVPigital Video Port)
        
        // Image Size (800, 600)
        0xC0, 0x64,
        0xC1, 0x4B,
        0x8C, 0x00,
        
        // Image Window (0, 0, 800, 300)
        0x51, 0xC8,
        0x52, 0x4B,
        0x53, 0x00,
        0x54, 0x00,
        0x55, 0x00,
        0x57, 0x00,
        
        // Out Size (400, 300)
        0x5A, 0x64,
        0x5B, 0x4B,
        0x5C, 0x00,
        
        0x86, 0x3D,
        0x50, 0x00,
        0xD3, 0x04,
        
        0xE0, 0x00,
};

STM32F407Video.rar (1.33 MB, 下载次数: 1418)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2016-1-17
在线时间
32 小时
发表于 2017-8-6 09:35:12 | 显示全部楼层
楼主厉害啊。拿了楼主的CIF配置部分,怎么是白屏呀
回复 支持 1 反对 0

使用道具 举报

一休哥 该用户已被删除
发表于 2017-4-7 12:04:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2082
金钱
2082
注册时间
2014-12-19
在线时间
711 小时
 楼主| 发表于 2017-4-7 12:45:44 | 显示全部楼层
一休哥 发表于 2017-4-7 12:04
你还,你这个是通过DCMI读取2640数据,然后通过USB传给PC数据吧。你用的板子RAM多大

没用外置SDRAM或SRAM,完全使用407内部的RAM,所以暂时只支持小分辨率的图像传输给USB。
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2082
金钱
2082
注册时间
2014-12-19
在线时间
711 小时
 楼主| 发表于 2017-4-10 09:36:39 | 显示全部楼层
回复 支持 反对

使用道具 举报

9

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
285
金钱
285
注册时间
2015-4-19
在线时间
75 小时
发表于 2017-4-10 22:15:19 | 显示全部楼层
大牛



学习学习。。
回复 支持 反对

使用道具 举报

fshunj 该用户已被删除
发表于 2017-4-11 12:54:07 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

3

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2016-11-13
在线时间
21 小时
发表于 2017-5-10 13:08:11 | 显示全部楼层
MARK  
回复 支持 反对

使用道具 举报

35

主题

309

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2641
金钱
2641
注册时间
2016-8-10
在线时间
470 小时
发表于 2017-6-23 11:31:40 | 显示全部楼层
lvehe 发表于 2017-4-10 09:36
@wscqzhb @电工屌丝

楼主,请问怎么手动调整曝光
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2082
金钱
2082
注册时间
2014-12-19
在线时间
711 小时
 楼主| 发表于 2017-6-23 14:42:36 | 显示全部楼层
huyang201306 发表于 2017-6-23 11:31
楼主,请问怎么手动调整曝光

自己看代码
回复 支持 反对

使用道具 举报

35

主题

309

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2641
金钱
2641
注册时间
2016-8-10
在线时间
470 小时
发表于 2017-6-23 15:22:29 | 显示全部楼层

可以大概说在什么位置么
回复 支持 反对

使用道具 举报

35

主题

309

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2641
金钱
2641
注册时间
2016-8-10
在线时间
470 小时
发表于 2017-6-23 15:22:33 | 显示全部楼层

可以大概说在什么位置么
回复 支持 反对

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
发表于 2017-8-2 19:10:47 | 显示全部楼层
楼主,我看OV2640 Software Application Notes 1.03这个文档没说可以CIF输出呀,而且最快是30帧,请问你是用的2640吗
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2082
金钱
2082
注册时间
2014-12-19
在线时间
711 小时
 楼主| 发表于 2017-8-2 19:39:57 | 显示全部楼层
心语心愿 发表于 2017-8-2 19:10
楼主,我看OV2640 Software Application Notes 1.03这个文档没说可以CIF输出呀,而且最快是30帧,请问你是 ...

看datasheet吧,里面提到是60帧。
回复 支持 反对

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
发表于 2017-8-2 20:23:19 | 显示全部楼层
lvehe 发表于 2017-8-2 19:39
看datasheet吧,里面提到是60帧。

确实有,楼主,你配置的CIF格式是根据OV2640_DS(1.6)这个文档配置的吗
回复 支持 反对

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
发表于 2017-8-2 20:43:52 | 显示全部楼层
lvehe 发表于 2017-8-2 19:39
看datasheet吧,里面提到是60帧。

但是它OV2640 Software Application Notes 1.03文档里没有CIF配置方法呀
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2016-7-22
在线时间
13 小时
发表于 2017-8-8 22:02:58 | 显示全部楼层
saq8246 发表于 2017-8-6 09:35
楼主厉害啊。拿了楼主的CIF配置部分,怎么是白屏呀

我也是这样,搞不懂
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2082
金钱
2082
注册时间
2014-12-19
在线时间
711 小时
 楼主| 发表于 2017-8-9 08:31:27 | 显示全部楼层
AlarmClock 发表于 2017-8-8 22:02
我也是这样,搞不懂

你们用的初始化代码可能和我的不一样,建议下载我的程序,参考里面的初始化代码再试试。
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2016-7-22
在线时间
13 小时
发表于 2017-8-9 18:31:18 | 显示全部楼层
lvehe 发表于 2017-8-9 08:31
你们用的初始化代码可能和我的不一样,建议下载我的程序,参考里面的初始化代码再试试。

我用了别人的初始化数组,可以了,但是采光很差,只有强光才能显示,其他基本是一片黑
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2018-6-28 01:53:45 | 显示全部楼层
cool
回复 支持 反对

使用道具 举报

21

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2017-11-25
在线时间
80 小时
发表于 2018-6-28 15:47:36 | 显示全部楼层
本帖最后由 往事啊 于 2018-6-28 15:51 编辑

你好,我按照你的cif寄存器设置,虽然能出来图像却是一直向上滑动的,不知你有没有遇到过这种情况,应该怎么解决

由于一直向上滑动,所以手机拍出的图像不是很清晰
IMG_20180628_154623.jpg
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2082
金钱
2082
注册时间
2014-12-19
在线时间
711 小时
 楼主| 发表于 2018-6-28 16:15:32 | 显示全部楼层
往事啊 发表于 2018-6-28 15:47
你好,我按照你的cif寄存器设置,虽然能出来图像却是一直向上滑动的,不知你有没有遇到过这种情况,应该怎 ...

用我的寄存器参数“OV2640_JPEG_INIT”去初始化。里面一些参数可能不一样导致才这种现象。具体原因不好解释,其实我也不是特别懂。
回复 支持 反对

使用道具 举报

21

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2017-11-25
在线时间
80 小时
发表于 2018-6-29 10:05:32 | 显示全部楼层
lvehe 发表于 2018-6-28 16:15
用我的寄存器参数“OV2640_JPEG_INIT”去初始化。里面一些参数可能不一样导致才这种现象。具体原因不好解 ...

我看你程序里2640初始化是将分辨率设为640*480,你试过CIF格式嘛,就是352*288分辨率
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2082
金钱
2082
注册时间
2014-12-19
在线时间
711 小时
 楼主| 发表于 2018-6-29 11:15:42 | 显示全部楼层
往事啊 发表于 2018-6-29 10:05
我看你程序里2640初始化是将分辨率设为640*480,你试过CIF格式嘛,就是352*288分辨率

我试的是JPEG输出,RGB565格式的输出是否有问题不清楚。
回复 支持 反对

使用道具 举报

21

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2017-11-25
在线时间
80 小时
发表于 2018-7-2 21:21:58 | 显示全部楼层
lvehe 发表于 2018-6-29 11:15
我试的是JPEG输出,RGB565格式的输出是否有问题不清楚。

JPEG图像的RGB是什么格式
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2017-12-14
在线时间
13 小时
发表于 2018-8-30 18:44:23 | 显示全部楼层
你好 就是我用你的这个USB配置  传输图像速率很低   分辨率调低最高也只能到六七帧的样子  不知道是不是因为是这个FULLSPEED模式的原因   还是配置的问题  你的能到30帧吗?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-9-5
在线时间
3 小时
发表于 2018-9-12 19:51:17 | 显示全部楼层
usb有数据上传,用amcap还是看不到图像!!!
11.JPG
回复 支持 反对

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-12-14
在线时间
31 小时
发表于 2018-9-28 20:27:29 | 显示全部楼层
楼主,你这个设置图像窗口大小的寄存器,寄存器的值具体怎么配置,OV2640_DS(1.6)文档中虽然有描述,但是没具体说寄存器每位的配置方法,所对应的输出图像的大小,希望楼主教教,谢谢!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2016-5-18
在线时间
2 小时
发表于 2019-10-5 22:49:26 | 显示全部楼层
这就是我想要的
回复 支持 反对

使用道具 举报

37

主题

477

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2285
金钱
2285
注册时间
2017-8-24
在线时间
375 小时
发表于 2019-10-14 18:04:32 | 显示全部楼层
Very 6啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 17:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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