STM32学习笔记7 --------- DMA(直接存储器访问)

DMA主要功能:

  • 传输数据,但不需要占用CPU。
  • 数据支持从外设到存储器或者从存储器到存储器(SRAM或Falsh)

DMA控制器独立于内核,包含DMA1和DMA2,其中DMA1有7个通道,DMA2有5个通道,可看成传输数据的管道,DMA2只存在于大容量的单片机中。

从编程的角度看,只需掌握以下3部分即可:
1.DMA请求

外设要通过DMA来传输数据,必须向DMA控制器发送DMA请求。不同的DMA控制器的通道对应不同的外设请求。

STM32学习笔记7 --------- DMA(直接存储器访问)
2.通道

每个通道虽然可以接受多个外设请求,但是同一时间只能接受一个,不能同时接收多个。

3.仲裁器

响应先后顺序由仲裁器管理。分为两个阶段:

  • 1.软件阶段,可以在DMA_CCRx寄存器中设置,有4个等级:非常高、高、中和低
  • 2.硬件阶段,如果两个或以上DMA请求设置的优先级一样,则它们的优先级取决于通道编号,编号越低优先级越高。

DMA配置注意事项:

  • 数据从哪里来,到哪里去
  • 传输数据的单位是什么,要传多少
  • 什么时候传输完成(一次传输还是循环传输)