This is my study note of DMA.

DMA基础介绍

DMA全程Direct Memory Access,即直接存储器访问。核心是提供一条数据通路让数据由A拷贝B不经过CPU处理。

传输方向

  • 外设到内存
  • 内存到外设
  • 内存到内存

传输参数

  • 数据的源地址
  • 数据传输位置的目标地址
  • 传递数据多少的数据传输量
  • 进行多少次传输的传输模式

优先级

  • 很高

DMA传输

  • DMA传输时外设对DMA控制器发出请求
  • DMA控制器收到请求,触发DNA工作
  • DMA控制器从AHB外设获取数据,存储到DMA通道中
  • DMA控制器的DMA与总线矩阵协调,使AHB把外设获取到的数据存储到SRAM中,全过程不需要内核参与,不需要CPU的参与
    (每次传输执行一次DMA_CNDTRx寄存器的递减操作,该寄存器包含未完成的操作数目)

传输方式

  • DMA_Mode_Normal,正常模式
  • DMA_Mode_Circular,循环传输模式
    (存储器到存储器模式不能与循环模式同时使用)

指针递增

1
根据PINC和MINC位的状态,外设和存储器指针在每次传输后可以自动向后递增或保持常量。当设置为增量模式的时候,下一次传输的地址将是前一个地址加上增量值。

DMA中断

  • 传输过半
  • 传输完成
  • 传输错误

Alt text

DMA配置参数

  • 通道地址(源地址、目的地址)
  • 优先级
  • 数据传输方向
  • 存储器、外设数据宽度
  • 存储器、外设地址是否增量
  • 循环模式/正常模式
  • 数据传输量

相关寄存器

  • DMA_ISR DMA中断状态寄存器
  • DMA_IFCR 中断标志清除寄存器
  • DMA_CCRX 通道x配置寄存器
  • DMA_CNDTRx 通道x传输数量寄存器
  • DMA_CPARx 通道x外设地址寄存器
  • DMA_CMARx 通道x存储器地址寄存器