微处理器的DMA应用 您所在的位置:网站首页 DMA的功能 微处理器的DMA应用

微处理器的DMA应用

#微处理器的DMA应用| 来源: 网络整理| 查看: 265

DMA

应用说明:

 

 

DMA

使用三态有限状态机进行数据搬运操作,三种状态如下

 

1.

 

初始态,

DMA

等待

DMA

的请求(可以软件的请也可以为内部设备的请求,也可以外部的引脚请

求)

,如果有请求的话将进行状态

2

,否则

DMA ACK

INT REQ

信号值为

0

即为空闲状态;

 

2.

 

同步加载状态,

DMA ACK

变为

1

状态,初始计数值被加载到

CURR_TC

中;

 

3.

 

数据搬运状态,

DMA

完成原子态的数据搬运初始化,

状态机完成从源中读取数据并写入到目标设

备地址中。

whole service mode

下操作直到

CURR_TC

递减为

0

时才会停止操作,

Single service 

mode

模式下将完成一个原子操作后就停止操作。其中

DMA ACK

的变化条件如下

 

a)

 

whole service mode

下,当

CURR_TC

值变为

0

时,

 

b)

 

single service mode

下,当一个原子操作完成后。

 

当上述两种情况出现时的

ACK

线的状态为

HIGH

即为

1

 

 

DMA

总结占用情况

 

 

每两连续的

DMA

原子传输操作,期间

DMA

均会释放一次总线,并重新申请总线的使用权,以防止

DMA

进行大数据量传输过程中,使

CPU

过长时间等待,而使程序进入一种不可控的饥饿状态。

 

DMA

请求与握手模式区别

 

1.

 

请求模式,在操作完成后,如果

DREQ

仍然有效的话,将会继续下次的操作;

 

2.

 

握手模式,

在操作完成后,

不管

DREQ

是否有效都将停止当前的操作等待下一次的

DREQ

请求操作。

 

该模式主要是控制

DMA

的传输启动条件,并不会影响具体的每次的传送数据流程。

 

DMA

的服务模式

 

1.

 

单次服务,每次有效的启动

DMA

传输操作,只完成一次的操作

unit

burst 4

操作后即停止,并

ACK

清零;

 

2.

 

完全服务,每次有效的启动

DMA

传输操作,将按

CURR_TC

设置的数据量完成一次完整的数据传

输操作,直到

CURR_TC

0

才停止本次操作。

 

该模式主控制每次有效的请求到来时

DMA

的具体的操作过程,即每次传输的数据的方法。

 

DMA

操作编程流程

 

 

DMA

的操作具体流程,

分为初始值的配置,

设置请求源,

设置源与目标地址及源与目标所在总线信息,

设置工作模式,与握手模式等信息。

 

1

 

配置

DMA

通道的工作属性

 

1.1

 

设备握手模式为

handshake

还是

Demand

模式

 

1.2

 

设置

DREQ

DACK

信号同步的时钟源为

PCLK

还是

HCLK

 

1.3

 

设置是否使有

DMA

的通道的相应的中断功能

 

1.4

 

设置操作的数据宽度及每个原子操作的单位是为

UNIT

模式还是

BURST

模式

 

1.5

 

设置

DMA

的服务模式为

SINGLE

还是

WHOLE

模式

 

1.6

 

设置

DMA

的请求源为软件还是硬件设备请求,

如果是硬件请求源,

还要确定外部源的类型

 

1.7

 

设置传送的总的原子数量

 

1.8

 

设备自动功能(启用自动操作时,当

ACK=1

CURR_TC

0.

如果此时的模式为

DEMAND

话此会再次启动新一轮的操作,可以通过本功能完成一些设备的自动周期更新功能,如果

不使能的话,当

CURR_TC

0

时即本轮的操作彻底结束时,将不会将数据加载到相应的寄

存器中,而且当前

DMA

通道也处于关闭状态)

 

2

 

配置

DMA

操作的源与目标设备的地址,及源与目标设备的总线类型(是

APB

还是

AHB

 

2.1

 

配置初始地址值

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有