智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5456|回复: 11
打印 上一主题 下一主题

DMA到底是什么?为什么采集图像要用DMA

  [复制链接]

2

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
708
威望
389
贡献
185
兑换币
104
注册时间
2012-9-1
在线时间
67 小时
毕业学校
河北工程大学
跳转到指定楼层
1#
发表于 2012-9-21 20:43:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DMA到底是什么?为什么采集图像要用DMA

29

主题

558

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3430

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
1902
贡献
552
兑换币
821
注册时间
2012-4-27
在线时间
488 小时
推荐
发表于 2012-9-21 21:15:18 | 只看该作者
这是我在论坛里面找到的有个哥们写的,对我写DMA和了解DMA用处比较大,你看看吧!

K60的内核是Cortex-M4,不得不说这个内核比M3有了很大的长进,特别是核心对dsp内核的支持。玩过STM32的朋友知道32上也有dsp库,但最大的缺点是M3内核模拟的,速度算不上快,但比一般自己写代码快很多。
      下面来讲一下怎么读取摄像头数据,这个是关键只有获得了有效的数据才能处理啊。我用的摄像头是OV7620,买来的时候基本是出厂设置。OV7620视频输出格式通过YCrCb格式,这里我们只用Y通道,里面输出的是灰度。
      摄像头输出通过VS(场同步信号)、HS(行同步信号)、PCLK(像素时钟同步信号),和Y0~Y7组成。用示波器观察PCLK的时间是74ns,也就是13.5M的速度(用杜邦线小心,摄像头架的很高,线很长衰减很厉害)。这里我采用了中断和DMA相结合(有DMA这么好的资源干嘛不用呢),没接触过的人可能不知道那时什么功能,其实很简单只要你给它设置好相应的参数,它就会不通过CPU直接将你的数据从外设和内存之间相互搬运,或者内存到内存的搬运,什么时候搬运你就要告诉他。在程序开始的时候我们设置两个中断(为了保证必要的速度最好设置在两个不同的中断号中),一个是VS中断,一个是HS中断,并且配置DMA(建立外设和内存的搬运过程,搬运次数,触发方式)触发采用PCLK,并且使能VS中断,失能掉HS和DMA中断。
      (1)当一帧图像开始传输时VS触发中断(这里不判断奇偶场),在中断中我们初始化一些行计数之类的变量,并且失能VS开启HS中断。
      (2)当VS之后的第一个HS的到来表示第一行触发HS中断,在此你就要判断这一行的数据你是否需要(如果我们把一幅图像的所有数据都读进来RAM不够吧)。之后没来一个HS触发一次中断判断这一行你是否需要,如果需要就使能DMA传输和中断。当判断行计数大于你要的行数后,失能HS,来一个标志位说明一帧图像已经接收完毕。
      (3)DMA中断中其实很简单,开启一次DMA的传输和中断后,摄像头每来一个PCLK就会搬运一次数据到指定的RAM中,当一次搬运完你所设置的搬运次数后进入DMA中断,在中断中你要及时的将RAM中的数据移走,防止被覆盖,这里需要注意一下为了尽可能的快速移走数据你要好好考虑下你要搬运的次数。
      (4)上面提到的那个标志位就要用在主函数中,当判断标志位被标志后,我们要开始进行处理,滤波、黑线的判断、十字路口、停车是必不可少的。
       滤波和黑线的判断我们可以使用自带的DSP内核来完成,关于cortex-M4中的dsp内核,可以登入arm的官网下载相关资料  http://www.onarm.com/cmsis/download/   里面的库提供很丰富的处理方法。
回复 支持 1 反对 0

使用道具 举报

23

主题

207

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2762
QQ
威望
980
贡献
344
兑换币
29
注册时间
2011-8-27
在线时间
719 小时
3#
发表于 2012-9-22 18:26:11 | 只看该作者
谢谢
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
708
威望
389
贡献
185
兑换币
104
注册时间
2012-9-1
在线时间
67 小时
毕业学校
河北工程大学
4#
 楼主| 发表于 2012-9-22 20:45:26 | 只看该作者
明白一些  谢谢
回复 支持 反对

使用道具 举报

7

主题

52

帖子

0

精华

高级会员

Rank: 4

积分
527
QQ
威望
351
贡献
96
兑换币
62
注册时间
2012-9-9
在线时间
40 小时
5#
发表于 2012-9-23 17:56:59 | 只看该作者
回复 支持 反对

使用道具 举报

3

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
477
威望
283
贡献
118
兑换币
26
注册时间
2012-6-17
在线时间
38 小时
毕业学校
大三
6#
发表于 2012-9-23 21:49:12 | 只看该作者
回复 支持 反对

使用道具 举报

2

主题

84

帖子

0

精华

高级会员

Rank: 4

积分
874

活跃会员奖章

威望
460
贡献
222
兑换币
55
注册时间
2012-7-29
在线时间
96 小时
7#
发表于 2012-9-24 16:29:07 | 只看该作者
回复 支持 反对

使用道具 举报

41

主题

525

帖子

0

精华

常驻嘉宾

镜花水月

Rank: 8Rank: 8

积分
4910

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

QQ
威望
2394
贡献
1464
兑换币
1115
注册时间
2012-10-23
在线时间
526 小时
8#
发表于 2012-11-20 14:48:59 | 只看该作者
谢谢,虽然我是新手不是很明白,但我认为早晚都要用到的
回复 支持 反对

使用道具 举报

25

主题

286

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1273

优秀会员奖章活跃会员奖章

QQ
威望
817
贡献
256
兑换币
297
注册时间
2013-2-24
在线时间
100 小时
9#
发表于 2013-3-15 18:21:38 | 只看该作者
回复 支持 反对

使用道具 举报

27

主题

244

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6556

论坛元老奖章热心会员奖章

QQ
威望
1277
贡献
4939
兑换币
188
注册时间
2011-12-31
在线时间
170 小时
10#
发表于 2013-3-16 13:55:30 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 07:04 , Processed in 0.048280 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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