DMA 框图
DMA通道
DMA1有七个通道,DMA2有五个通道, 但同一时刻只能接收一个通道的请求,如果出现两个或以上的通道请求,则需要仲裁。
仲裁流程:
1.经过软件判断,设置DMA_CCRx寄存器
2.如果软件无法判断,则经过硬件,对通道的编号进行对比,通道编号越小优先级越高
DMA配置
1.DMA外设地址,内存地址配置
2.DMA数据传输方向
1.外设到存储器
外设地址为源地址,DMA内存地址为目标地址
2.存储器到外设
DMA内存地址为源地址,外设地址为目标地址
3.存储器到存储器,如A传输至B,则此时,A为外设地址,B为内存地址
3.DMA传输的数据量及单位
同时需要配置数据宽度,如8/16/32,之后还要设置外设和存储器的指针增量
4.是否循环
5.使能
ps:
出现丢失的现象,可能是因为发送没有使用DMA,导致发送的速度比接收慢,然后溢出了?但感觉不至于,这个问题不太明白
发现一个问题了,空闲中断我没有去读,这就导致标志位没清零,所以有的时候会卡住。