DMA详解

  • Post author:
  • Post category:其他


1,概念:DMA全称为Direct Memory Accessuart,即直接内存存取,是一种外设和内存直接数据传输的方式,作用就是减少CPU的负担传输,特别适合大数据高速度传输时使用。

2,DMA通道

stm32f1系列包含2个DMA控制器,DMA1有7个通道。DMA2有5个通道,每个通道最高可接收8个外设的DMA请求,每个通道还有一个冲裁器,用于处理DMA请求间的优先级。

stm32f4系列包含2个DMA控制器,每个DMA控制器包含8个数据流,每个数据流有最多达8个通道,每个数据流通道都有一个仲裁器,用于处理DMA请求间的优先级。

3,冲裁器判断各外设的DMA请求的优先级级别

①,非常高优先级

②,高优先级

③,中优先级

④,低优先级

4,DMA的双缓冲机制

stm32f4系列的DMA可配置为双缓冲机制,类似乒乓操作模式,建立2个缓冲区buffer,当一个缓冲区buffer接收完成后,接收数据自动转到另一个缓冲区buffer,同时CPU可对第一个缓冲区的数据进行操作,从而保证数据接收不受中止影响。

配置举例如下:

DMA_DoubleBufferModeConfig(DMA2_Stream2,(u32)buf1,DMA_Memory_0);//配置双缓冲模式的另一个的buffer

DMA_DoubleBufferModeCmd(DMA2_Stream2,ENABLE);//双缓冲模式开启

5,DMA-spi初始化配置

①,spi初始化

②,使能spi的DMA请求

③,dma时针使能,dma复位,等待dma可配置

④,配置dma通道,配置dma外设地址,配置dma存储器地址

⑤,配置dma数据传输量和传输方向,传输方向有外设到内存,内存到外设,内存到内存。

⑥,配置外设和内存的增量模式,一般配置外设非增量,内存增量模式,这样就可以从一个外设地址在不同的时间点接收多个数据保存在内存数组中。

⑦,配置外设和内存的数据长度,必须配置成一样。

⑧,配置dma为循环模式还是普通模式

⑨,配置dma的优先级

⑩,配置dma中断:DMA 半传输、DMA 传输完成、DMA 传输错误、DMA FIFO 错误、直接模式错误

6,DMA启动传输数据流程

①,失能DMA数据流

②,等待DMA数据流可设置

③,配置数据传输量

④,使能DMA数据流

7,DMA配置心得

①,DMA在发送数据到外设时是不能接收外设数据的,可以配置DMA完成中断中设置发送完成标志,并在中断里面关闭DMA传输,然后在发送完成标志下接收外设数据。

②,DMA分循环模式和普通模式,普通模式在发送完成后需要重新开启DMA传输,并配置传输量,循环模式则不需要。



版权声明:本文为qzl1221原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。