表31.24传输类型位位值传输类型控制器

| 位值 | 传输类型 |

|------|----------------------|

| 000 | 存储器到存储器DMA |

| 001 | 存储器到外设DMA |

| 010 | 外设到存储器DMA |

| 011 | 源外设到目标外设DMA |

| 100 | 源外设到目标外设 |

| 101 | 存储器到外设外设 |

| 110 | 外设到存储器外设 |

| 111 | 源外设到目标外设源外设|

31.6 使用DMA控制器

31.6.1 编程DMA

DMA部分的所有寄存器只能使用字读取和字写入来访问(即32位访问)。

(1)使能DMA

置位DMACConfig寄存器的使能位来使能DMA控制器。

(2)禁能DMA

执行以下操作来禁能DMA:

  • 读取通道使能状态寄存器(DMACEnbldChns),确保所有DMA通道已被禁能。如果还有通道有效,请参考有关禁止DMA通道的方法

  • 通过清零配置寄存器(DMACConfiguration)的DMA使能位来禁能DMA。

(3)使能DMA通道

置位相应通道配置寄存器的通道使能位可使能DMA通道。注意:通道在使能前必须完整地初始化。

(4)禁能DMA通道

有3种方法可以禁能DMA通道:

  • 直接写通道使能位。此时,通道FIFO中所有未处理的位都会丢失;

  • 将Active和Halt位与通道使能位一起使用来禁能DMA通道;

  • 等到传输结束,通道会自动清除。

禁能DMA通道并且FIFO中的数据丢失若清除相应通道配置寄存器中的通道使能位。当前AHB传输会结束(如果有一个传输正在进行),该通道会被禁能。FIFO中的数据会丢失。

禁能DMA通道且不会丢失FIFO中的数据置位相应通道配置寄存器的Halt位。这会忽略后面的DMA请求;

查询相应通道配置寄存器的Active位,直至它的值到达0。这一位表示通道FIFO中是否有要传输的数据;

清除相应通道配置寄存器中的通道使能位。

(5)设置一个新的DMA传输

如果某个通道不能留出来供DMA传输使用,则: