DMA详解
来源:互联网 发布:python getlogger 编辑:程序博客网 时间:2024/06/05 09:53
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传输,并配置传输量,循环模式则不需要。
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传输,并配置传输量,循环模式则不需要。
阅读全文
0 0
- DMA详解
- S3C2410 DMA详解
- S3C2410 DMA 详解
- TMS320F28335 DMA配置详解
- S3C2410 DMA详解
- Linux DMA详解
- Linux DMA详解
- Linux DMA详解
- STM32 DMA使用详解
- Linux DMA详解
- S3C2410 DMA详解
- DMA传输详解
- STM32 DMA使用详解
- STM32--DMA详解
- STM32 DMA使用详解
- STM32 DMA使用详解
- DMA
- DMA
- ocp Oracle.1z0-053 711--1
- CentOS7创建本地YUM源的三种方法
- linux下安装并配置nginx 多个域名 tomcat集群
- Android listview 点击Item更换背景颜色
- @Autowired与@Resource的区别
- DMA详解
- 转载:struts2中s:select标签的使用
- 关于Android gradle打包的一些小事
- ios 调用微信JSSDK 签名失败解决方法
- SHELL
- CentOS7创建本地YUM源的三种方法
- 深入理解Odoo(OpenERP)的工作流(Workflow)
- centos7.2源码包安装mysql5.6
- CAN通信详解