DMA主要功能是传输数据,其特点是不需占用CPU,在数据传输时cpu可以做别的事。数据传输支持外设与存储器互传,存储器与存储器互传。一个处理器可能有多个DMA控制器,一个控制器下又有多个通道。
DMA数据配置
以下基于CORTEX-M3处理器的寄存器模式对DMA进行数据配置
- 数据的去向
传输方向一共有三个:外设到存储器,存储器到外设,存储器到存储器
具体方向由DMA寄存器配置。既然传输,DMA就需要知道传输双方的地址,两者地址均由DMA控制器的寄存器控制 - 传多少数据
知道数据的流向,还需要明确传输的数据量。如果一个32位寄存器那么一次最多能够传输65535个数据。
数据正确传输,需要使传输双方目标地址的数据宽度保持一致。以串口向电脑发送数据为例,串口的数据寄存是8位的,那么待发送数据长度也是8位。外设和存储器的数据宽度均可由寄存器配置。
为了保证数据有条不紊的传输,需要正确射中i两边数据指针的增量模式,这也是由寄存器配置。以串口向存储器发送数据为例,串口发送的数据很多的时候,每发送完一个,存储器的地址就要加1;但是串口数据寄存器只有一个,所以外设的地址指针固定不变。如果是存储器到存储器,两者的地址指针均需要同步变化。