1.什么是DMA
DMA(Direct Memory Access)
------直接存储器存取,是单片机的一个外设,它的主要功能是用来搬运数
据,但是不需要占用
CPU
,即在传输数据的时候,
CPU
可以干其他的事情,可以节省CPU资源。
2.DMA功能框图
3.DMA 请求
如果外设要想通过 DMA 来传输数据,必须先给 DMA 控制器发送 DMA 请求,DMA 收到请求信号之后,控制器会给外设一个应答信号,当外设应答后且 DMA 控制器收到应答信号之后,就会启动 DMA 的传输,直到传输完毕。
4.DMA通道优先级问题
当发生多个 DMA 通道请求时,就意味着有先后响应处理的顺序问题,这个就由仲裁器也管理。仲裁器管理 DMA 通道请求分为两个阶段。第一阶段属于软件阶段,可以在 DMA_CCRx 寄存器中设置,有 4 个等级:非常高、高、中和低四个优先级。第二阶段属于硬件阶段,如果两个或以上的 DMA 通道请求设置的优先级一样,则他们优先级取决于通道编号,编号越低优先权越高,比如通道 0 高于通道 1。在大容量产品和互联型产品中,DMA1 控制器拥有高于 DMA2 控制器的优先级。
5.DMA数据去向
DMA 传输数据的方向有三个:从外设到存储器(ADC),从存储器到外设(串口),从存储器到存储器(以内部
FLASH
向内部
SRAM
复制数据)。具体的方向
DMA_CCR
位
4 DIR
配置:
0
表示从外设到存储器,
1
表示从存储器到外设。
这里面涉及到的外设地址由
DMA_CPAR
配置,存储器地址由
DMA_CMAR
配置。
6.实验现象
现象一:存储器数据转移到另一个存储器中存储
运行前一个是有数据的,一个是没有数据存储全是0x0000 0000;全速运行后会把存储器中的数据,填充到空白存储器中。
现象二:存储器到外设
可以通过DMA发送1000个“A”