发新帖我要提问
12
返回列表
打印
[应用相关]

如何高效的使用DMA?

[复制链接]
楼主: ifree64
手机看帖
扫描二维码
随时随地手机跟帖
21
forever3609| | 2013-4-28 23:26 | 只看该作者 回帖奖励 |倒序浏览
好贴,学习了,谢谢。

使用特权

评论回复
22
error_dan| | 2013-4-29 15:22 | 只看该作者
最简单的,AD+DMA外设启动之后,应用程序直接到固定的地址去读数据就行了.

使用特权

评论回复
23
gxgclg| | 2013-4-29 15:58 | 只看该作者
香水城 发表于 2008-9-26 12:27
举个例子:一个系统要求每个一段时间需要把RAM中数据备份到外部EEPROM,你就可以启动DMA传送数据到外部EEPR ...

很形象的例子

使用特权

评论回复
24
yybj| | 2013-4-29 16:10 | 只看该作者
香主的解答还是很给力的

使用特权

评论回复
25
无冕之王| | 2013-4-29 16:18 | 只看该作者
香主提的很多建议都很有用

使用特权

评论回复
26
GeekNFC| | 2013-4-29 18:28 | 只看该作者
就算是单线程运行,DMA还是有可能比软件copy数据更快,因为DMA是全硬件操作的,不需要插入程序运行延时。

使用特权

评论回复
27
拿起书本| | 2013-5-10 19:47 | 只看该作者
DMA只在传大块的数据时有才优势,在一般的小单片机系统里用DMA,几乎没有意义.学习中

使用特权

评论回复
28
hanzhenfei| | 2014-7-5 11:42 | 只看该作者
看到此贴受益匪浅!!!!!

使用特权

评论回复
29
diweo| | 2014-7-5 11:56 | 只看该作者
本帖最后由 diweo 于 2014-7-5 11:58 编辑
拿起书本 发表于 2013-5-10 19:47
DMA只在传大块的数据时有才优势,在一般的小单片机系统里用DMA,几乎没有意义.学习中 ...
我举个例子吧,
用单片机与触摸屏通信,使用Modbus协议,数据长度 从几字节到几十字节不等。
假设波特率为9600,如果用发送完成中断 ,那要中断好多次。而且每次中断大约1ms。如果用查询方式,那么几到几十ms的时间CPU不能做别的事。
使用DMA的话,配置好后,直接发送了。必要时可以开启DMA传输完成中断,中断1次就够了。当然,代价就是要事先配置一个足够大的缓冲区,尽管这个缓冲区大多数时候都不满。

使用特权

评论回复
30
runningwzf| | 2014-7-5 17:18 | 只看该作者
用操作系统吧,你可以充分体会DMA的溢出

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则