DMA介绍
- DMA (Direct Memory Access)直接存储器存取
- DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源.
12个独立可配置的通道:DMA1(7个通道),,DMA2 (5个通道) - 每个通道都支持软件触发和特定的硬件触发
- STM32F103C8T6 DMA资源:DMA1 (7个通道)
DMA框架图
在DMA框架图中,主要为Cortex-M3核心以及三条总线,其他部分都可以看为存储器。 DCODE 总线是用于连接 Flash
存储器和处理器核心的总线。DCODE 总线是指指令解码总线(Data Code Bus),用于传输指令和相关的控制信号。
DMA总线用于访问存储器 或者 外设寄存器的数据 系统总线用来控制DMA配置寄存器
DMA1以及DMA2各自有不同的通道,每个通道配备仲裁器,用来控制通道中搬运顺序,AHB从设备是DMA配置寄存器
APB1以及APB2各自挂载着不同的外设,描述中的外设都可以触发DMA请求,但是每个请求会对应不同的DMA以及DMA中不同的通道,只能触发特定DMA通道
DMA1请求映像关系图
存储器映像
数据宽度与对齐
在DMA转运过程中,由于外设寄存器或者存储器并不都是位数一致的,所以当位长度不相等时,需要匹配,匹配规则如下。
注意:在转运的源地址外设寄存器与目标地址存储器并不是绝对的,外设寄存器里可以放存储器的地址,同理存储器也是