智能车制作

标题: OV7725帧率设置问题,或者说PCLK设置问题 [打印本页]

作者: 尕玍紿    时间: 2014-7-10 16:15
标题: OV7725帧率设置问题,或者说PCLK设置问题
废话不多说,先上图。
问题如图示,采集的第一张没问题,可是后面的都有问题,整体表现为,图像往上循环滚动。
[attach]61606[/attach]
[attach]61607[/attach]
[attach]61608[/attach]
[attach]61609[/attach]
[attach]61610[/attach]
[attach]61611[/attach]
[attach]61612[/attach]
[attach]61613[/attach]
[attach]61614[/attach]
[attach]61605[/attach]

导致 这样的现象的原因是,我更改了PCLK的频率;
按理说,PCLK影响的只是摄像头输出图像数据的速度,
改慢了,采集图像的时间就变长,改快了,采集图像的时间就缩短;
为什么会影响到图像的时序,导致时序混乱呢???
注 :我就更改了PCLK的频率设置,其余都没动。
哪位 大神 能解析下

作者: Mydream    时间: 2014-7-10 16:23
是用的野火的ov7725么,如果是的话好像场中断和pclk都是要接150的下拉电阻的,这样图像就不会跳变了,不知是不是。
作者: zhou1994    时间: 2014-7-10 16:31
本来该1时刻输出的。成了2时刻。
作者: 尕玍紿    时间: 2014-7-10 16:45
zhou1994 发表于 2014-7-10 16:31
本来该1时刻输出的。成了2时刻。

额...你的意思明白。
就好像两个人约好一个时间碰面,但是其中一个人擅自修改了碰面时间,导致两人碰面失败。
可是我觉得这里不会有这种情况;因为不存在摄像头和MCU约好的条件;
这里的情形应该是:MCU死等摄像头;
摄像头早送数据那么,MCU就早收到,摄像头晚送数据,MCU就晚收到。

我的采集流程是这样的:
摄像头的场同步信号触发MCU  —>  MCU使能行中断
摄像头的行同步信号触发MCU  —>  MCU使能DMA
摄像头的像素时钟PCLK 直接 供给 DMA
即:DMA的采集永远是跟随PCLK的,PCLK我设置快了,DMA采集自然就快了,PCLK我设置慢了,DMA采集自然就慢了。
不存在说 一个在第一时刻输出,一个却在第二时刻才接受的情况;
因为 摄像头的输出 和 DMA的接收 是跟随同一个信号的:PCLK





作者: 尕玍紿    时间: 2014-7-10 16:47
尕玍紿 发表于 2014-7-10 16:45
额...你的意思明白。
就好像两个人约好一个时间碰面,但是其中一个人擅自修改了碰面时间,导致两人碰面失 ...

当然,PCLK的频率,在DMA的接受范围内!
作者: 尕玍紿    时间: 2014-7-10 17:25
问题已解决!我的场中断服务函数中,响应了当次的场中断后,将场中断关闭了:disable_irq(场中断)
然后在 处理完当前采集回来的图像后,方才重新打开场中断:enable_irq(场中断)
现在改用开关变量来达到 enable_irq(场中断)/disable_irq(场中断) 的效果。
即:用开关变量的置一/清零 取代 enable_irq(场中断)/disable_irq(场中断)

这样操作后,我再更改PCLK的配置,改慢/改快都没问题了!!
当然,PCLK的频率必须在DMA的承受范围内。

DMA的频率范围一直是我的一个疑问,不知道,有没有人知道????
目前实践证明:K60的PLL设置为100MHz时,DMA支持的频率在10M以下,即若PCLK的频率超过10M,图像将错乱。
额...不确保以上数据一定正确!!
望知道的人 告知。

作者: 易湘鑫    时间: 2014-7-10 17:44
这个应该是你的数组问题
作者: 尕玍紿    时间: 2014-7-10 18:33
易湘鑫 发表于 2014-7-10 17:44
这个应该是你的数组问题

怎么说??
能具体点吗??
比如:我曾经遇到的数组问题:定义的数组大小与实际采集图像大小的不匹配。

作者: 厚重的心    时间: 2014-7-11 11:32
尕玍紿 发表于 2014-7-10 17:25
问题已解决!我的场中断服务函数中,响应了当次的场中断后,将场中断关闭了:disable_irq(场中断)
然后在  ...

我们偶尔也出现这样的现象,我想问下,每当你响应场中断后就关闭场中断,然后处理完图像再打开场中断为什么会导致图像滚动?
作者: 阿灰    时间: 2014-7-11 12:44
和 楼上有相同的疑惑!
作者: 尕玍紿    时间: 2014-7-11 14:04
厚重的心 发表于 2014-7-11 11:32
我们偶尔也出现这样的现象,我想问下,每当你响应场中断后就关闭场中断,然后处理完图像再打开场中断为什 ...

我是各种试,试出来的。
具体为什么我不确定。
我猜测是这样的,关了中断再打开需要一定的时间,这段时间使得每一场图像的前面几行丢失,没能采集到;
而DMA的采集量是我们事先设置好的;DMA采集当场图像的时候,由于丢了最前面的几行,所以采集到的数据量达不到我们事先设置好的,于是它又继续采集,这时候采集到的图像,就是下一场图像的前面几行了;所以得到的图像就是前一场图像的下半部+下场图像的上半部了。
而采用了开关变量后,响应速度上快了,不会造成丢失,所以就不会了。
归根结底,还是采集的同步问题。

个人猜测,不保证是对的;可以尝试下,我说的方法,能把问题解决就好了!

作者: 尕玍紿    时间: 2014-7-11 14:07
阿灰 发表于 2014-7-11 12:44
和 楼上有相同的疑惑!

已回复你的楼上。
你们用的都是什么摄像头啊??
OV7725吗??
我现在在纠结任意分辨率的设置问题;
OV7725的datasheet有研究过吗?
讨论下咧...
有兴趣加Q:584852734

作者: 尕玍紿    时间: 2014-7-11 14:13
Mydream 发表于 2014-7-10 16:23
是用的野火的ov7725么,如果是的话好像场中断和pclk都是要接150的下拉电阻的,这样图像就不会跳变了,不知是 ...

不是野火的。
野火的要全套买,买不起。
貌似也不怎么适合我的项目用,他是专为你们比赛设计的。
我用的是guanfu_wang的OV7725


作者: 徐晋鸿!    时间: 2014-7-11 15:23
做过摄像头的都会遇到这个问题,不过这时候遇到就比较蛋疼了
作者: 尕玍紿    时间: 2014-7-11 18:30
徐晋鸿! 发表于 2014-7-11 15:23
做过摄像头的都会遇到这个问题,不过这时候遇到就比较蛋疼了

明天遇到更蛋疼...
不过我已经解决了。
再说了,我不是参加比赛的...
话说,你们比赛的差不多了吧?
想当年也是暑假期间参赛的

作者: 徐晋鸿!    时间: 2014-7-11 22:01
尕玍紿 发表于 2014-7-11 18:30
明天遇到更蛋疼...
不过我已经解决了。
再说了,我不是参加比赛的...

我当时时序是对的,只是全局标志位没有用voliate所以会这样

作者: 尕玍紿    时间: 2014-7-12 08:20
徐晋鸿! 发表于 2014-7-11 22:01
我当时时序是对的,只是全局标志位没有用voliate所以会这样

这个我用了;只要是中断涉及到的变量我都用上了。

作者: 厚重的心    时间: 2014-7-12 11:53
尕玍紿 发表于 2014-7-11 14:04
我是各种试,试出来的。
具体为什么我不确定。
我猜测是这样的,关了中断再打开需要一定的时间,这段时 ...

嗯,感谢你的回复,明白些了,你的处理方法就是采完你所需的图像后就是一个标志位置0,然后去处理图像,处理完图像后标志位置1,然后在场中断中是标志位为1时开执行场中断程序,标志位为0时不执行场中断程序是吧。
作者: 尕玍紿    时间: 2014-7-14 09:01
厚重的心 发表于 2014-7-12 11:53
嗯,感谢你的回复,明白些了,你的处理方法就是采完你所需的图像后就是一个标志位置0,然后去处理图像,处 ...

是的,我是这么做的!
我知道原因是什么了,野火给出的解释!
关掉场中断后,场中断所对应的中断标志位还是会被置位的,但是CPU此时不会响应该中断;CPU会在你下一次开中断的时候立刻响应这个中断。所以如果要采取关中断的方式来做图像采集的同步;需要在每次开启场中断时,先对场中断对应的标志位进行清除。

作者: vincent_goodwin    时间: 2014-11-23 03:01
你好,我也在调OV7725,图像很渣,能看下你的OV7725寄存器的值吗   先谢了

作者: 冷暖自知123    时间: 2015-5-18 16:01
PCLK的引脚在哪里设置啊





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