智能车制作

标题: 关于ov7620系列或其它cmos摄像头图像采集花屏的分析 [打印本页]

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


作者: 玻璃中的太阳    时间: 2012-11-8 17:11
kanbudong!!!
作者: BOZHIFU    时间: 2012-11-9 00:04
好分析····
作者: jidanpianbobo    时间: 2013-2-26 12:40
我采集测图像差不多就是花屏的~,不知大虾有没有好一点的采集程序~谢谢,297139524@qq.com
作者: 百川汇流    时间: 2013-3-16 08:48
强大
作者: Hold人民币    时间: 2013-5-22 07:10
看不懂
作者: mingongB    时间: 2013-5-22 10:59
我以为是像素同步的问题。。
作者: HIT120220    时间: 2013-5-29 14:44
1.觉得在中断的底部清中断标志位是有有好处的 不知道为什么还要在中断的顶部清中断标志位?
2.觉得你说的不仅在中断里清标志位  还要在 分析完数据后还要清标志位也是有好处的,那我想请问如果在你清标志位的时候事实上 此时标志位并未置位 这样你的清标志位的指令岂不是是对中断标志位置位?
看完您写的 觉得挺好,思考后的疑惑还请指教。
作者: bbddoop    时间: 2013-6-2 22:04
HIT120220 发表于 2013-5-29 14:44
1.觉得在中断的底部清中断标志位是有有好处的 不知道为什么还要在中断的顶部清中断标志位?
2.觉得你说的不 ...

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

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

作者: 1518591585    时间: 2013-7-12 02:00
请问为什么我的图像采集有时候只显示一场图像,按了复位键重新开始时才在现实另一场。处理函数要加在场中断吗,我这样做了,感觉好慢。怎么办,大神指点一下,万分感谢




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2