前言
就像一个公司发展过程一样,如果业务量很少,可能就只需要一个人,既是老板又是销售,清洁工作也是自己来。但随着业务量的增加,显然老板一个人是抗不起的,不得不开始开始招聘专业辅助人员,如销售人员、清洁工等,他们专门负责一些专门的事物让老板抽身做真正的管理类的事情,产生更大的经济价值。类推计算机系统也是一样,比如老板就是CPU,DMA就是搬运工。虽然DMA没法帮忙管理公司,但是公司遇到需要搬东西的时候它却能极大提高工作效率。
DMA概念及结构
直接存储器访问 (DMA) 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传 输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可 供其它操作使用。
DMA 控制器执行直接存储器传输,因为采用 AHB 主总线,它可以控制 AHB 总线矩阵来启动 AHB 事务,它可以执行下列事务:
⚫ 外设到存储器的传输事务
⚫ 存储器到外设的传输事务
⚫ 存储器到存储器的传输事务

STM32 DMA控制器介绍
STM32F407 系列单片机有两个 DMA 控制器,其系统实现图如下:


两个 DMA 控制器总共有 16 个数据流(每个控制器 8 个),每一个 DMA 控制器都用于管理 一个或多个外设的存储器访问请求。每个数据流总共可以有多达 8 个通道(或称请求)。每 个通道都有一个仲裁器,用于处理 DMA 请求间的优先级。
编程训练
登录实验页-华清远见元宇宙实验中心依照实验文档即可快速完成DMA各个通道的配置并生成代码,完成如下各种关键实验:
1.存储器到存储器数据搬运
2.内存到外设
3.外设到内存

总结
DMA如何为CPU“减负”?
通过这种方式,DMA在以下几个层面显著减轻了CPU的负担:
解放CPU算力:将CPU从繁重的数据搬运中解放出来,使其专注于程序流程控制、复杂计算等核心工作。
提升系统效率:实现了数据传输与CPU处理并行,能有效提升系统整体吞吐量。
降低CPU资源占用:CPU的参与程度从“搬运工”降为“指挥官”,资源占用率大大降低。
减少中断开销:DMA将多次中断合并为一次完成中断,减少了CPU响应中断的次数和开销。
支持低功耗设计:在DMA搬运数据时,CPU可以进入休眠状态,降低系统功耗
扫码申领本地嵌入式教学实录全套视频及配套源码