智能车制作

标题: 用dma采集图像遇到的问题 [打印本页]

作者: 泽畔无材    时间: 2012-2-23 10:46
标题: 用dma采集图像遇到的问题
原来是用简单延时来采样,有比较多的噪点,估计是和PCLK不同步造成的,后来用DMA改写了图像采集程序,还是有一些问题,请教一下用dma采集图像的同学。
我用的是ov7620,在行中断里开启DMA,设置CITER为600,PCLK上升沿触发DMA,但是采集出来发现图像分为两半,左右为正常图像(基本相同),中间为全黑。这是什么原因呢?难道DMA速度赶不上?
后来把CITER设为240,只显示左边一半,但是有很多噪点(和用简单延时得到的图像噪点差不多多),一般是偏亮的,盖上摄像头盖子,发现绝大部分噪点的值都是12,怀疑是Y3和Y2出问题了,但检查连线后还是不能解决。求问这是什么原因呢?用dma采集的同学,你们采集出来的图像噪点多吗?

作者: 荔枝糖葫芦    时间: 2012-2-23 12:33
听老师说用DMA速度是可以保证,但是时序上却可能有问题,无法和PCLK时钟对齐,不知道是不是这个原因……
作者: 天涯小极莫    时间: 2012-2-23 14:45
用PCLK触发DMA速度跟得上吗?
作者: jshfhn    时间: 2012-2-23 15:30
那个怎么采集啊
作者: 泽畔无材    时间: 2012-2-23 16:49
天涯小极莫 发表于 2012-2-23 14:45
用PCLK触发DMA速度跟得上吗?

[attach]18441[/attach]
刚查了下手册,果然请求速度跟不上。。
那该怎么用DMA进行图像采集呢?
另外,虽然请求速度跟不上,但触发还是在PCLK上升沿的啊,为什么会有那么多噪点呢?

作者: 泽畔无材    时间: 2012-2-24 00:09
找到原因了,稍微超一点频,110M的时候可以获得完美的图像~
作者: 天涯小极莫    时间: 2012-2-24 10:41
泽畔无材 发表于 2012-2-24 00:09
找到原因了,稍微超一点频,110M的时候可以获得完美的图像~

存放的数组设置,
每次citer执行之后,重新初始化,原数组的内容被覆盖了

作者: 泽畔无材    时间: 2012-2-24 10:48
天涯小极莫 发表于 2012-2-24 10:41
存放的数组设置,
每次citer执行之后,重新初始化,原数组的内容被覆盖了

额,您这句话是回答什么的呢?

作者: 天涯小极莫    时间: 2012-2-24 11:25
LZ,想问,在行中断里,打开了允许DMA硬件中断,PCLK触发DMA,当达到CITER的值时,是不是发生了重装CITER,目的地址从PHOTO[0]开始?
此外,CITRER达到,不需要关闭DMA,然后到中断时再打开DMA吗?
作者: 泽畔无材    时间: 2012-2-24 16:12
天涯小极莫 发表于 2012-2-24 11:25
LZ,想问,在行中断里,打开了允许DMA硬件中断,PCLK触发DMA,当达到CITER的值时,是不是发生了重装CITER, ...

我在采集完每一行后马上进行另一次DMA传送来减采样。在CSR里设置完成后自动关闭DMA。
现在已经成功用三种方法采集到完美的图像了~

作者: 天涯小极莫    时间: 2012-2-24 16:39
泽畔无材 发表于 2012-2-24 16:12
我在采集完每一行后马上进行另一次DMA传送来减采样。在CSR里设置完成后自动关闭DMA。
现在已经成功用三种 ...

呵呵,我还在努力,主循环完了之后,自动关闭DMA,DMA_CSR_DREQ_MASK,我也试过了,然后我在行中断里打开DMA,一场过后上位机一次,125M频率300*200暂时试了,发现很乱啊,嗯,继续工作
作者: 天涯小极莫    时间: 2012-2-24 16:46
泽畔无材 发表于 2012-2-24 16:12
我在采集完每一行后马上进行另一次DMA传送来减采样。在CSR里设置完成后自动关闭DMA。
现在已经成功用三种 ...

有个问题很困惑我,如果一次循环结束,下次循环还是从结束处开始吗,而且如果数组装满,是不是要返回数组的第一个地址了
作者: 泽畔无材    时间: 2012-2-24 20:10
天涯小极莫 发表于 2012-2-24 16:46
有个问题很困惑我,如果一次循环结束,下次循环还是从结束处开始吗,而且如果数组装满,是不是要返回数组 ...

循环有次循环和主循环,都有寄存器来控制循环偏移的,这个偏移会直接作用到TCD的源或目标地址寄存器,关于这个可以仔细看看TCD的相关寄存器说明。
数组装满当然要返回第一个地址了,比如按你的思路,一场发送一次,数组就开60K大小,发完后再从头写啊。不过感觉300x200是不是太大了?

作者: 天涯小极莫    时间: 2012-2-24 21:41
泽畔无材 发表于 2012-2-24 20:10
循环有次循环和主循环,都有寄存器来控制循环偏移的,这个偏移会直接作用到TCD的源或目标地址寄存器,关于 ...

lz,在行中断中打开DMA,你选的是 DMA_ERQ寄存器吗,现在出现条状图

作者: 泽畔无材    时间: 2012-2-24 21:51
天涯小极莫 发表于 2012-2-24 21:41
lz,在行中断中打开DMA,你选的是 DMA_ERQ寄存器吗,现在出现条状图

我开始也是出现条状图,查到的原因是寄存器没设置好,导致一直从GPIO口读数据。

作者: excellentlizhen    时间: 2012-2-24 21:57

作者: zhanghhhh    时间: 2012-2-27 18:45
请问DMA怎么硬件触发呀
作者: panpan_0315    时间: 2012-3-5 12:14
建议将pclk二分频一下
作者: xmut    时间: 2012-3-7 09:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: 泽畔无材    时间: 2012-3-7 15:43
xmut 发表于 2012-3-7 09:55
您好 您难道640都采吗  您有在pclk分频吗

没有分频,在第一次采完后立即进行另一次dma传输来减采样。

作者: 5801209027    时间: 2012-3-30 20:21
好羡慕 泽畔无才
作者: 568581185    时间: 2012-4-25 13:53
泽畔无材 发表于 2012-2-24 21:51
我开始也是出现条状图,查到的原因是寄存器没设置好,导致一直从GPIO口读数据。

楼主,能告知下是哪个寄存器没设置好出现了条纹状么?
我出来的图像有点像条纹的

作者: 泽畔无材    时间: 2012-4-26 15:25
568581185 发表于 2012-4-25 13:53
楼主,能告知下是哪个寄存器没设置好出现了条纹状么?
我出来的图像有点像条纹的

是DMA_CSR_DREQ,不设置的话会一直传送下去。
作者: 568581185    时间: 2012-4-26 19:54
泽畔无材 发表于 2012-4-26 15:25
是DMA_CSR_DREQ,不设置的话会一直传送下去。

谢谢

作者: xiaoheixiong    时间: 2012-5-30 20:39
泽畔无材 发表于 2012-2-24 16:12
我在采集完每一行后马上进行另一次DMA传送来减采样。在CSR里设置完成后自动关闭DMA。
现在已经成功用三种 ...

加延时可以吗?
  可以加QQ问一下吗?


作者: 笨鹅    时间: 2012-6-16 09:12
泽畔无材 发表于 2012-2-24 16:12
我在采集完每一行后马上进行另一次DMA传送来减采样。在CSR里设置完成后自动关闭DMA。
现在已经成功用三种 ...

能传一份dma处理的代码以及初始化程序吗?谢谢。40328134@qq.com

作者: linping9656    时间: 2012-8-21 12:42
泽畔无材 发表于 2012-2-24 16:12
我在采集完每一行后马上进行另一次DMA传送来减采样。在CSR里设置完成后自动关闭DMA。
现在已经成功用三种 ...

楼主  我现在刚开始研究图像采集  需要你的指点啊

作者: Ooo    时间: 2013-2-21 13:39
楼主有很多噪点是为什么




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