表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传输使用,则:
暂无评论