【STM32】直接内存访问DMA

目录

一、工作原理

二、组成部分

三、优缺点

3.1 优点

3.2 缺点

四、基于STM32的DMA驱动程序

4.1  硬件准备

4.2 软件准备

4.3 使用 STM32CubeMX 进行配置

4.3.1 选择芯片

4.3.2 配置时钟

4.3.3 配置串口

4.3.4 配置 DMA

4.3.5 生成代码

4.4 编写 DMA 驱动代码

4.5.代码解释

4.6 编译和下载

4.7 DMA 中断处理(可选)


        直接内存访问(Direct Memory Access,简称 DMA)是一种在计算机系统中广泛使用的技术,它允许外部设备(如磁盘驱动器、网卡等)与内存之间直接进行数据传输,而无需 CPU 进行大量的干预。下面将从工作原理、组成部分、优缺点、应用场景等方面对其进行详细介绍:

一、工作原理

  • 请求阶段:当外设准备好进行数据传输时,会向 DMA 控制器发出 DMA 请求信号。例如,磁盘驱动器读取完一个数据块后,就会向 DMA 控制器发送请求。

  • 响应阶段:DMA 控制器接收到请求后,会向 CPU 发出总线请求信号,请求获取系统总线的控制权。CPU 在当前总线周期结束后,会响应 DMA 请求,并将总线控制权交给 DMA 控制器。

  • 传输阶段:DMA 控制器获得总线控制权后,会根据预先设置的参数(如源地址、目的地址、传输数据长度等),在内存和外设之间直接进行数据传输。整个传输过程由 DMA 控制器独立完成,CPU 可以在这段时间内执行其他任务。

  • 结束阶段:数据传输完成后,DMA 控制器会向 CPU 发出结束信号,将总线控制权交还给 CPU,并向外设和 CPU 报告传输结果。

二、组成部分

  • DMA 控制器:是 DMA 技术的核心,负责管理和控制数据传输过程。它包含多个寄存器,用于存储源地址、目的地址、传输数据长度等信息,还具备总线控制逻辑,能够在 CPU 和外设之间协调总线的使用。

  • 地址寄存器:用于存放数据传输的源地址和目的地址。在传输过程中,DMA 控制器会根据这些地址信息,从源地址读取数据,并将其写入到目的地址。

  • 字节计数器:记录要传输的数据字节数。在每次数据传输后,字节计数器的值会自动减 1,当计数器的值减为 0 时,表示数据传输完成。

  • 控制逻辑:负责产生各种控制信号,如读写信号、总线请求信号、总线响应信号等,以协调数据传输过程。

三、优缺点

3.1 优点

  • 提高 CPU 利用率:由于 DMA 可以在不占用 CPU 的情况下完成数据传输,CPU 可以在这段时间内执行其他任务,从而大大提高了 CPU 的利用率。例如,在计算机进行大量数据的读写操作时,CPU 可以同时处理其他计算任务,而不必等待数据传输完成。
  • 高速数据传输:DMA 控制器可以直接控制总线进行数据传输,避免了 CPU 数据传输过程中的额外开销,因此可以实现高速的数据传输。特别是在处理大量数据时,DMA 的优势更加明显。

3.2 缺点

  • 硬件成本高:需要额外的 DMA 控制器和相关的硬件电路,增加了系统的硬件成本和复杂度。

  • 编程复杂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大雨淅淅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值