金牌会员
 
- 积分
- 1393
- 威望
- 690
- 贡献
- 439
- 兑换币
- 386
- 注册时间
- 2013-3-6
- 在线时间
- 132 小时
- 毕业学校
- 北京师范大学珠海分校
|
本帖最后由 尕玍紿 于 2014-7-2 16:15 编辑
我的摄像头OV7725自带FIFO,只有VSYNC信号,没有HREF和PCLK信号
摄像头配置:60帧,320*240分辨率,YUV输出
目前用GPIO控制实现从FIFO中获得了图像,经测试发现,读得一帧的图像耗费了19ms的时间,
这个时间我的项目不能接受,想提高图像采集的速度,该怎么弄?
经查阅,知道了DMA,但是不是很懂,问下我下面的想法行不?
我的摄像头自带的FIFO使能后,给一个时钟,它的数据输出口(8bit),就会输出一个数据;
我了解到:使能DMA后,给DMA一个时钟,DMA就会从指定的源地址获取一个数据存放到目的地址中.
于是我想:
我生成一个PWM信号来充当时钟,同时供给我摄像头的FIFO和K60的DMA,这样的话,是不是就能实现把FIFO中的图像转移到目的地址中了???
疑问是:
1.一个时钟能同时给两个对象吗?
2.看DMA的初始化代码中:
DMA_TCD0_CITER_ELINKNO=DMA_CITER_ELINKNO_CITER(L);//当前主循环次数,采集点数
DMA_TCD0_BITER_ELINKNO=DMA_BITER_ELINKNO_BITER(L);//起始主循环次数,采集点数
我对这两个参数的理解是:使能DMA后,DMA需要读取的字节数
由于我的摄像头没有HREF信号,所以不能控制DMA一次只读取一行,即一次循环读取320个;
我只有一个VSYNC信号,只能实现一次读取一帧的图像;也就是说DMA的循环次数一次得循环320*240*2次;
DMA能配置成一次循环这么多次吗?
不知道我理解对没有,有人能给点建议吗?
我该怎么提高采集效率???
|
|