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,导致发送的速度比接收慢,然后溢出了?但感觉不至于,这个问题不太明白
发现一个问题了,空闲中断我没有去读,这就导致标志位没清零,所以有的时候会卡住。
本文介绍了DMA(直接存储器访问)控制器的工作原理,包括多个通道的仲裁机制、配置步骤(如外设地址、数据传输方向、数据量等),并指出丢失数据可能是由于发送未使用DMA或中断处理不当导致的。


2253

被折叠的 条评论
为什么被折叠?



