DMA基本原理及应用

本文详细介绍了DMA的基本原理,包括DMA概念、数据传输要素、传输方式和注意事项。重点讲述了STM32微控制器的DMA特性,如DMA1和DMA2控制器的结构,并提供了一个简单的STM32串口DMA发送数据的实验案例,包括配置文件、代码编写和烧录流程。通过实验,展示了如何利用DMA提高数据传输效率,减少CPU占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【前言】

串口接收/发送有三种模式:中断、轮询、DMA,轮询方式并不推荐,也不经常使用,在之前的博客中已经介绍了中断模式,在此次博客中主要介绍DMA的基本原理以及通过DMA发送数据

一、DMA基本原理

1.DMA概念

  直接存储器访问 (DMA) :用于在外设与存储器之间以及存储器与存储器之间进行高速数据传输。DMA传输过程的初始化和启动由CPU完成,传输过程由DMA控制器来执行,无需CPU参与,从而节省CPU资源,提高利用率

2.DMA数据传输的四个要素

① 传输源 :DMA数据传输的来源
② 传输目标:DMA数据传输的目的
③ 传输数量:DMA传输数据的数量
④ 触发信号:启动一次DMA数据传输的动作

3.DMA数据传输方式

🎐普通模式

  传输结束后(即要传输数据的数量达到零),将不再产生DMA操作。若开始新的DMA传输,需在关闭DMA通道情况下,重新启动DMA传输。

🎐循环模式
  可用于处理环形缓冲区和连续数据流(例如ADC扫描模式)。当激活循环模式后,每轮传输结束时,要传输的数据数量将自动用设置的初始值进行加载, 并继续响应DMA请求。

4.两类DMA传输结构

🎐寄存器模式

  在基于寄存器的DMA内部,处理器直接对DMA控制寄存器进行编程,来启动传输。

  基于寄存器的DMA由两种子模式组成:自动缓冲(Autobuffer)模式停止模式

  在自动缓冲DMA中,当一个传输块传输完毕,控制寄存器就自动重新载入其最初的设定值,同一个DMA进程重新启动,开销为零。自动缓冲DMA特别适合于对性能敏感的、存在持续数据流的应用。DMA控制器可以在独立于处理器其他活动的情况下读入数据流,然后在每次传输结束时,向内核发出中断。

  停止模式的工作方式与自动缓冲DMA类似,区别在于各寄存器在DMA结束后不会重新载入,因 此整个DMA传输只发生一次。停止模式对于基于某种事件的一次性传输来说十分有用。例如,非定期地将数据块从一个位置转移到另一个位置。

在这里插入图片描述

🎐描述符模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值