智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1375|回复: 4
打印 上一主题 下一主题

K60的DMA能这样用吗?

[复制链接]

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
跳转到指定楼层
1#
发表于 2014-7-2 16:13:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 尕玍紿 于 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能配置成一次循环这么多次吗?
不知道我理解对没有,有人能给点建议吗?
我该怎么提高采集效率???
回复

使用道具 举报

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
2#
 楼主| 发表于 2014-7-2 16:45:34 | 只看该作者
对于DMA一次会读取多少数据,貌似我理解错了:
这是我看的DMA的初始化函数:

DMA一次会读多少,应该由我圈出来的共同决定.
也就是说,我只要把主循环的次数设置成240;
把一次读取的字节数设置成:320*2个字节;
是不是就能实现DMA一次就读取320*240*2个数据了.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
3#
 楼主| 发表于 2014-7-2 17:20:54 | 只看该作者

50号对应的是PORTB这一类的信息,我找不到,谁有这部分的资料可以发我???
我找了这个寄存器,但是描述不够清楚,又找不到更细的描述:

我要配置为PORTD,不知道具体设置什么值.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

31

主题

731

帖子

0

精华

版主

情怀、节操、内涵、下限

Rank: 9Rank: 9Rank: 9

积分
8787
威望
4777
贡献
1128
兑换币
3165
注册时间
2012-5-7
在线时间
1441 小时
毕业学校
长春大学
4#
发表于 2014-7-2 22:32:33 | 只看该作者
我靠,你这代码看的眼都花了 - -  应该可以通过一个定时器来触发DMA采集FIFO  你这个DMA是自己写的库?
回复 支持 反对

使用道具 举报

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
5#
 楼主| 发表于 2014-7-3 09:22:15 | 只看该作者
majorfog 发表于 2014-7-2 22:32
我靠,你这代码看的眼都花了 - -  应该可以通过一个定时器来触发DMA采集FIFO  你这个DMA是自己写的库?

不是自己写的,抄来的...
我摄像头的数据口接到了PORT D口上了,
现在不知道怎么把DMA配置成 采集PD口上的PD0-PD7的数据.
采集PD口的数据配置主要应该就是设置这两个寄存器:

第一个寄存器我不知道该怎么配置,
第二个寄存器应该就把PD口的输入数据寄存器的地址给这个寄存器就行了.
能告诉我第一个寄存器该怎么配置吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-25 00:24 , Processed in 0.060651 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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