(STM32笔记)十二、DMA的基础知识与用法 第一部分

在这里插入图片描述

我用的是正点的STM32F103来进行学习,板子和教程是野火的指南者
之后的这个系列笔记开头未标明的话,用的也是这个板子和教程。

CPU在板子里是个大忙人,各个外设都需要CPU操心,经常出现找不到人的情况。
在这里插入图片描述
所以为了给CPU减负,DMA应运而生。

DMA,全称Direct Memory Access,即直接存储器访问。

DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。
换句话说,让两个外设自己打电话。

DMA
数据
外设2
外设1
CPU

如果有了DMA,那么传输是这样的:
在这里插入图片描述

参考文章如下:
【STM32】 DMA原理,步骤超细详解,一文看懂DMA

一、DMA功能框图

笔者使用的板子是野火的指南者,MCU为STM32F103。
在开发手册中可以看到
在这里插入图片描述

  1. DMA请求
  2. 通道
  3. 仲裁器

1、DMA请求

如果外设要想通过 DMA 来传输数据,必须先给 DMA 控制器发送 DMA 请求,DMA 收到请求信号之后,控制器会给外设一个应答信号,当外设应答后且 DMA 控制器收到应答信号之后,就会启动 DMA 的传输,直到传输完毕。

1. 外设发送DMA请求
2. DMA发送应答信号
3. DMA收到外设应答
外设
DMA
启动DMA传输

在这里插入图片描述
DMA 有 DMA1 DMA2 两个控制器,DMA1 有 7 个通道,DMA2 有 5 个通道,不同的 DMA 控制器的通道对应着不同的外设请求,这决定了我们在软件编程上该怎么设置。

2、通道

DMA 具有 12 个独立可编程的通道,其中 DMA1 有 7 个通道,DMA2 有 5 个通道,每个通道对应不同的外设的 DMA 请求。虽然每个通道可以接收多个外设的请求,但是同一时间只能接收一个,不能同时接收多个。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、仲裁器

当发生多个 DMA 通道请求时,就意味着有先后响应处理的顺序问题,这个就由仲裁器也管理。

仲裁器管理 DMA 通道请求分为两个阶段。

  • 第一阶段属于软件阶段,可以在 DMA_CCRx 寄存器中设置,有 4 个等级:

    • 非常高

    • 在这里插入图片描述
      在这里插入图片描述
  • 第二阶段属于硬件阶段,如果两个或以上的 DMA 通道请求设置的优先级一样,则他们优先级取决于通道编号,编号越低优先权越高,比如通道 0 高于通道 1。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YunB西风英

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值