STM32标准库开发——DMA直接存储器存取

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转运过程中,由于外设寄存器或者存储器并不都是位数一致的,所以当位长度不相等时,需要匹配,匹配规则如下。
在这里插入图片描述

注意:在转运的源地址外设寄存器与目标地址存储器并不是绝对的,外设寄存器里可以放存储器的地址,同理存储器也是