DMA控制原理

DMA功能

DMA实现的是数据的传输功能,它的特性在于不占用CPU的资源。正常情况下我们要获取外设的数据,需要利用CPU对外设数据进行读取,在用CPU将数据写进存储器,而DMA就可以实现节约CPU工作的目的。

DMA特性

在STM32F4和STM32F1之间两者的DMA是有所区别的,F4能实现存储器到存储器的传输,两者的寄存器不太一样。

这里主要讲F4的DMA。

F4有两个DMA控制器,每个DMA控制器有8个数据流,每个数据流有8个通道,在外设到存储器的传输的我们可以查表看到一个外设可以附着在哪个DMA通道。我们可以通过寄存器设置要传输数据的大小(DMA_SxNDTR),设置外设地址(DMA_SxPAR),存储器地址(DMA_SxM0AR),在存储器到存储器的传输中,其实是将其中一个存储器的地址写进外设地址寄存器去,我们在配置寄存器中(DMA_SxCR)可设置传输方向和通道优先级等数据。

仲裁

DMA的通道可由软件配置成四个优先等级,当软件优先等级相同时,硬件将按照通道数越小优先级越高的原则裁定。

事务

DMA的事务为三个过程:

  1. 通过外设地址寄存器或存储器地址寄存器寻址,将外设寄存器或存储器寄存器的数值载入。
  2. 通过外设地址寄存器或存储器地址寄存器寻址,将加载到的数据传输到目的地址。
  3. 数据项寄存器结算传输的数量数。

双缓冲模式

DMA的双缓冲模式可以将一个外设的数据传到存储器后,紧接着将另一个外设的数据也传到存储器。
它的强大在于它可以一边在第二步将a的数据传到目的地,一边通过第一步将寻址到的b加载到一会要传输的值。

FIFO

FIFO是协助DMA完成传输的,是一个先进先出的存储区。这你可以设置为字节,半字,字传输,对应为8位,16位,32位。

中断

DMA有几种类型的中断,有半传输,全传输,传输错误,我们可以使能对应的中断标志位,但记住,当我们使能了以后我们就要编写对应的中断服务函数,不然中断触发时,程序会跑死。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值