STM32复习笔记 | DMA

DMA

DMA的概念&作用

DMA(Direct Memory Access,直接内存访问) .

DMA既可以指内存和外设直接存取数据这种内存访问的计算机技术,又可以指实现该技术的硬件模块(对于通用计算机PC而言,DMA控制逻辑由CPU和DMA控制接口逻辑芯片共同组成,嵌入式系统的DMA控制器内建在处理器芯片内部,一般称为 DMA控制器,DMAC)。

🤔为啥用到DMA?

​ 在无须CPU干预的情况下,提供外设与存储器之间或者存储器与存储器之间的高速数据传输. 既节省了CPU的资源,又提高数据传输的快速性,因为不需要通过代码实施数据传输过程。👍

如何作用

在这里插入图片描述

只要CPU将DMA初始化后,内存和外设的数据传输只需要进过DMA就可以很方便进行(绕开CPU)

STM32 & DMA

例如需要传送100个8位的数据到外设,如果用CPU来做一般是:

for(i=0;i<100;i++) {
    数据转移 }

这样CPU要履行100次for循环,如果用DMA方式只要把数据的个数和数据的起始地址给DMA,接着CPU可以执行其他操作了。🤘

STM32单片机可有两个DMA控制器,共12个通道,其中DMA1有7个通道,DMA2有5个通道。 每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。DMA控制器中还有一个仲裁器,专门协调各个DMA请求的优先权。

STM32 (F1) DMA特性🐾

在这里插入图片描述

DMA2仅存在于大容量产品和互联型产品

  1. 每个通道都支持软件触发,可通过软件配置
  2. 在同一个DMA模块上,多个请求的优先权可以通过软件编程设置
    1. 共有四级:很高、高、中等和低
    2. 优先权设置相等时由硬件决定(较低编号的通道比较高编号的通道有较高的优先权,比如通道2优先于通道4

在大容量产品和互联型产品中,DMA1控制器拥有高于DMA2控制器的优先级

  1. 独立数据(取数据的地方)和目标数据区(放数据的地方)的传输宽度有字节(8位)、半字(16位)、全字(32位,字,不是字节)三种可选

    1. 和目标地址必须按数据传输宽度对齐
    2. 支持循环的缓冲器管理—传输完数据又从数据头传输,可反复进行(参考手册10.3.3)
  2. 每个通道都有3个事件标志(DMA半传输、DMA传输完成和DMA传输出错)

    1. 这3个事件标志逻辑相“或”成为一个单独的中断请求,即任何一个事件均可触发中断

      在这里插入图片描述

      事件标志位是只读的,使能控制位是可读可写的(所以就是中断之后,只有使能了才能触发中断(?))

  3. DMA传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值