智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6152|回复: 9
打印 上一主题 下一主题

关于ov7620系列或其它cmos摄像头图像采集花屏的分析

[复制链接]

4

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
威望
227
贡献
86
兑换币
6
注册时间
2012-4-27
在线时间
35 小时
毕业学校
万里学院
跳转到指定楼层
1#
发表于 2012-6-7 22:43:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发现很多人对摄像头采集到的数据出现花屏问题,本人来分析一下,请大家勿喷,如果有说错或者没有说到位的地方请大家多多包含。
      ov7620摄像头的读取相信大家采用中断的方式来判断VS和HS吧,如果有人用while来检测的话。。。。。。。。。很无奈。
      在我们配置完VS和HS与单片机的相应引脚中断设置之后,还没使能相应IO口的那一刻,当VS或者HS到来的时候相应的中断状态寄存器是会有标志的,当你使能中断的那一刻马上就进入中断,在中断中我们会清除中断标志位。之后当收集到有用的像素数据后,我们开始处理像素判断小车整体运行状态再做出状态控制这一系列的动作,一般的单片机处理速度肯定大于16ms。这里就是时序上最关键的时候,在我们要处理数据的过程中我们肯定会失能的VS和HS中断,为了防止中断的干扰。在你处理的过程中你可否想过当VS或HS到来的时候还是会往你的IO中断状态寄存器中去置位,只是你没有使能IO中断,导致中断服务程序没法执行,当你处理完数据(即大于16ms)之后你再开启IO中断的时候,你在中断中设置断点调试试试,即使HS或者VS没有到来,程序也马上进入中断且马上清中断标志位,此时你收集到的数据根本就跟时序是不一样的,在你收集数据的过程当中下行的数据来了,又将标志位标志上,周而复始你读到的数据始终是花屏的数据。如何清中断在哪里清中断这是最关键的。
       在处理摄像头这种时序的时候中断服务程序中不仅要在中断顶部清标志位而且在中断底部也要清中断标志位。这一点我相信学过stm32函数库的人都会发现stm32的中断函数库中有不同种函数去执行同一种清中断的功能,官方的每个例程也都是如此处理中断这样是有好处的,即使你有一行数据错乱了也能保证下一行数据的正确性。清中断不光要在中断中要清标志位,还要在你分析完数据,要获取下一帧数据使能VS和HS中断的时候也要清掉相应的标志位,保证你的一帧数据是从头开始读取。
      就讲到这里吧,以上言论纯属个人实验过程中发现的问题。

11

主题

238

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5360
威望
1869
贡献
1121
兑换币
1030
注册时间
2012-10-11
在线时间
1185 小时
2#
发表于 2012-11-8 17:11:17 | 只看该作者
kanbudong!!!
回复 支持 反对

使用道具 举报

19

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1458
威望
863
贡献
275
兑换币
150
注册时间
2012-3-24
在线时间
160 小时
3#
发表于 2012-11-9 00:04:35 | 只看该作者
好分析····
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
312
威望
225
贡献
61
兑换币
32
注册时间
2013-1-13
在线时间
13 小时
4#
发表于 2013-2-26 12:40:36 | 只看该作者
我采集测图像差不多就是花屏的~,不知大虾有没有好一点的采集程序~谢谢,297139524@qq.com
回复 支持 反对

使用道具 举报

5

主题

123

帖子

0

精华

高级会员

Rank: 4

积分
881

活跃会员奖章

威望
414
贡献
267
兑换币
269
注册时间
2013-2-17
在线时间
100 小时
5#
发表于 2013-3-16 08:48:51 | 只看该作者
强大
回复 支持 反对

使用道具 举报

5

主题

99

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2165
威望
1088
贡献
677
兑换币
466
注册时间
2013-3-12
在线时间
200 小时
6#
发表于 2013-5-22 07:10:47 | 只看该作者
看不懂
回复 支持 反对

使用道具 举报

4

主题

406

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
10980
威望
5409
贡献
3229
兑换币
2948
注册时间
2011-8-7
在线时间
1171 小时
7#
发表于 2013-5-22 10:59:23 | 只看该作者
我以为是像素同步的问题。。
回复 支持 反对

使用道具 举报

17

主题

99

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1443
QQ
威望
674
贡献
293
兑换币
391
注册时间
2013-1-13
在线时间
238 小时
毕业学校
工业大学
8#
发表于 2013-5-29 14:44:20 | 只看该作者
1.觉得在中断的底部清中断标志位是有有好处的 不知道为什么还要在中断的顶部清中断标志位?
2.觉得你说的不仅在中断里清标志位  还要在 分析完数据后还要清标志位也是有好处的,那我想请问如果在你清标志位的时候事实上 此时标志位并未置位 这样你的清标志位的指令岂不是是对中断标志位置位?
看完您写的 觉得挺好,思考后的疑惑还请指教。
回复 支持 反对

使用道具 举报

23

主题

211

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3220
威望
1562
贡献
724
兑换币
357
注册时间
2011-11-20
在线时间
467 小时
9#
发表于 2013-6-2 22:04:24 | 只看该作者
HIT120220 发表于 2013-5-29 14:44
1.觉得在中断的底部清中断标志位是有有好处的 不知道为什么还要在中断的顶部清中断标志位?
2.觉得你说的不 ...

看了看觉得,LZ的意思是,处理的时间比较长,大于下一次中断到来的时间。因为之前中断是禁止的,才不会进中断,但是标志位已经置位了。所以一旦开启中断就进中断,而这时候,不是实际的中断开始,时序错误。

至于对错,不清楚,你们自行判断,因为我的处理时间肯定比中断时间短,没这情况。
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
QQ
威望
117
贡献
57
兑换币
64
注册时间
2013-3-30
在线时间
34 小时
10#
发表于 2013-7-12 02:00:56 | 只看该作者
请问为什么我的图像采集有时候只显示一场图像,按了复位键重新开始时才在现实另一场。处理函数要加在场中断吗,我这样做了,感觉好慢。怎么办,大神指点一下,万分感谢
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-8 23:37 , Processed in 0.068723 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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