DMA :
Data Memory Access,直接存储器访问,主要功能是可以把数据从一个地方搬到另一个地方,而且不占用Cpu。两个DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自
于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。
DMA1:有7个通道,可以实现P->M,M->P,M->M;
DMA2:有5个通道,可以实现P->M,M->P,M->M;
DMA框图主要分成3部分:DMA请求,通道,仲裁器
问题1
多个DMA请求一起来,怎么办?
1.软件阶段,DMA_CCRx : PL[1:0]。
2.硬件阶段,通道编号小的优先级大,DMA1的优先级高于DMA2的优先级。
DMA初始化结构体
1.数据从哪里来,要到那里去?
1)外设地址,DMA_CPAR
2)存储器地址,DMA_CMAR
3)传输方向,DMA_CCR:DIR
2.数据要传多少,传的单位是什么?(SRC->DST)
1)传输数目,DMA_CNDTR
2)外设地址是否递增,DMA_CCRX:PINC
3)存储器地址是否递增,DMA_CCRX:MINC
4)外设宽度,DMA_CCRX:PSIZE
5)存储数据宽度,DMA_CCRX:MSIZE
3.什么时候传输结束?
1.模式选择,DMA——CCRX:CIRC
2.传输过半,传输完成,传输出错
DMA_ISR