使用DMA控制器-docker部署python爬虫项目的方法步骤
表31.24传输类型位位值传输类型控制器:
-
000 存储器到存储器DMA
-
001 存储器到外设DMA
-
010 外设到存储器DMA
-
011 源外设到目标外设DMA
-
100 源外设到目标外设
-
101 存储器到外设外设
-
110 外设到存储器外设
-
111 源外设到目标外设源外设
31.6 使用DMA控制器
31.6.1 编程DMA
DMA部分的所有寄存器只能使用字读取和字写入来访问(即32位访问)。
-
使能DMA:置位DMACConfig寄存器的使能位来使能DMA控制器。
-
禁能DMA:执行以下操作来禁能DMA:
-
读取通道使能状态寄存器(DMACEnbldChns),确保所有DMA通道已被禁能。如果还有通道有效,请参考有关禁止DMA通道的方法;
-
通过清零配置寄存器(DMACConfiguration)的DMA使能位来禁能DMA。
-
使能DMA通道:置位相应通道配置寄存器的通道使能位可使能DMA通道。注意:通道在使能前必须完整地初始化。
-
禁能DMA通道:有3种方法可以禁能DMA通道:
-
直接写通道使能位。此时,通道FIFO中所有未处理的位都会丢失;
-
将Active和Halt位与通道使能位一起使用来禁能DMA通道;
-
等到传输结束,通道会自动清除。禁能DMA通道并且FIFO中的数据丢失若清除相应通道配置寄存器中的通道使能位。当前AHB传输会结束(如果有一个传输正在进行),该通道会被禁能。FIFO中的数据会丢失。禁能DMA通道且不会丢失FIFO中的数据置位相应通道配置寄存器的Halt位。这会忽略后面的DMA请求;查询相应通道配置寄存器的Active位,直至它的值到达0。这一位表示通道FIFO中是否有要传输的数据;清除相应通道配置寄存器中的通道使能位。
-
设置一个新的DMA传输:如果某个通道不能留出来供DMA传输使用,则:
相关链接
对于如何在实际项目中应用这些DMA配置,可以参考以下资源: