头上两只角 发表于 2013-12-15 10:09:53

DMA 具体是什么意思 是把当前引脚的 值保存起来吗(已解决)

本帖最后由 FSL_TICS_ZJJ 于 2014-1-27 16:35 编辑

DMA具体是什么意思是把当前引脚的 值保存起来吗?

祥子 发表于 2013-12-15 10:19:40

不经过CPU   数据直接由外设/内存传往外设/内存

isakura 发表于 2013-12-15 10:39:53

我想不通的是,像uart的dma,那么一般的过程是
io口—uart模块—cpu读取—存储到内存—处理
对吗?
再加上dma就是
io口—uart模块—存储到内存
也就是用dma的时候必须收到一定数据的数据之后才能操作,适用于传输较大数据量(比如文件),而假如需要用作控制功能的时候只能接受完一桢数据之后才可以进行控制,而不能在一开始的时候就进行桢头那些判断处理

是这样的吗

zhouzmt 发表于 2013-12-15 10:45:10

ST的uart没有FIFO,所以只能一个字节一个字节地传输。

fengdingkusong 发表于 2013-12-15 11:03:18

就uart来说的话就是将uart收到的数据,也就是uart寄存器中的数据不经过CPU自动传递到相应的地址单元,或者将响应地址单元的数据传递到UART寄存器,将数据发送出去,不能说将引脚的值保存起来

motodefy 发表于 2013-12-15 15:20:52

不通过cpu处理直接数据传递

头上两只角 发表于 2013-12-17 18:44:42

在看看。。

duqinglin 发表于 2013-12-18 14:32:44

百度都可以告诉你DMA是做什么用的,呵呵!

时光倒退 发表于 2013-12-18 23:26:53

{:titter:}我从百度百科给你抄了一段来

Direct Memory Access(存储器直接访问)是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为“DMA控制器”的控制下进行。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中还可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作,因此使整个计算机系统的效率大大提高。
DMA的概念:DMA是在专门的硬件( DMA)控制下,实现高速外设和主存储器之间自动成批交换数据尽量减少CPU干预的输入/输出操作方式。通常有两种方式: ◎独占总线方式 ◎周期挪用方式
DMA的组成: ◎主存地址寄存器 ◎数据数量计数器 ◎DMA的控制/状态逻辑 ◎DMA请求触发器 ◎数据缓冲寄存器 ◎中断机构
DMA的传送数据的过程:由三个阶段组成 ◎传送前的预处理:由CPU完成以下步骤 向DMA卡送入设备识别信号,启动设备,测试设备运行状态,送入内存地址初值,传送数据个数, DMA的功能控制信号。 ◎数据传送:在DMA卡控制下自动完成◎传送结束处理 DMA 卡上应包括通用接口卡的全部组成部分,并多出如下内容: 主存地址寄存器,传送字数计数器,DMA控制逻辑,DMA请求,DMA响应,DMA工作方式,DMA优先级及排队逻辑等 一次完整的DMA传送过程: DMA 预处理,CPU向DMA送命令,如DMA方式,主存地址,传送的字数等,之后CPU执行原来的程序 DMA 控制在 I/O 设备与主存间交换数据: 准备一个数据, 向CPU发DMA请求,取得总线控制权,进行数据传送,修改卡上主存地址,修改字数计数器内且检查其值是否为零,不为零则继续传送,若已为零,则向 CPU发中断请求.
DMA技术的弊端:因为DMA允许外设直接访问内存,从而形成对总线的独占。这在实时性强的硬实时系统的嵌入式开发中将会造成中断延时过长。这在军事等系统中是不允许的。

qwe2231695 发表于 2013-12-19 01:13:15

这个简单!你领导叫你做个这个:adc读出来8bit,直接发送到串口,要快要连续。你就开个dma通道。ok了

kebaojun305 发表于 2013-12-19 09:39:45

DMA简单点 就是不用MCU去搬运数据 而是靠DMA控制器搬运数据。 这样可以解放MCU出来

sleet1986 发表于 2013-12-19 10:13:35

DMA 就是给你开个专用通道,没人和你抢道,速度就快起来了。{:lol:}

javabean 发表于 2013-12-20 23:53:11

DMA就是不需要编写CPU指令就可以大量发送数据的,简化数据发送过程,提升性能的方法。
如果需要控制,还是需要CPU对读入相应数据进行判断的,但是如果是固定的长度这种简单的情况,用DMA就简单了

yandld11 发表于 2013-12-29 23:50:18

DMA就是搬运工。。 不过话说K的DMA好复杂啊。

头上两只角 发表于 2014-1-1 11:17:17

谢谢 大家过年快乐。

68336016 发表于 2014-1-1 11:32:35

不用理解得那么复杂,DMA相当于一个专门帮你干活的用人。
可以饭来张口,衣来伸手,再不用去去动手了。

比如说读取AD值,没有DMA时候,你得发指令去读,转换,然后得到AD值,这需要时间。
有DMA后,它在后台默默的替你去读取,转换,并存放到变量,你要用的时候直接使用变量就可以了。

jinyi7016 发表于 2015-2-25 15:04:00

http://baike.baidu.com/link?url=ARfRlcdDpXiIuuutzX5YsWvCUAfIqXEac86TvZ8TQkDtfFIRaWxG4IhBIiZRdLxmz45f9JwwjDZpr8GNVfMqlU_KdXn9chlfadg6uI9ds-3

jiang887786 发表于 2015-3-7 10:25:32

我也是学习了,我也有这样的疑问,大侠回答的辛苦了,谢谢!

lzl000 发表于 2015-3-7 14:47:45

dma就是把寄存器直接传到内存,不然cpu干这个干那个,效率不高啊

bbingdao 发表于 2015-3-9 10:00:26

学习了! 大家回复很详细
页: [1]
查看完整版本: DMA 具体是什么意思 是把当前引脚的 值保存起来吗(已解决)