历史上的今天
返回首页

历史上的今天

今天是:2025年03月24日(星期一)

正在发生

2021年03月24日 | 【STM32】STM32之深入理解DMA

2021-03-24 来源:eefocus

任何一个技术的出现都是为了解决当时出现的问题,任何一个技术既有优点也会有缺点,任何一个技术的适用都需要分场景,看条件。DMA也不例外。


1 直接存储器存取DMA(Direct Memory Access)

DMA处于总线矩阵的前级,与内核cortex-M3同级别,属于主设备(Master)。DMA用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。


2 DMA工作过程

手册描述:

以上的官方描述信息量较大:

1) DMA会暂停系统总线若干个周期。意思是DMA工作时,CPU被挂起?

2) 然后总线仲裁器又执行循环调度。如何调度保证CPU可执行?


分析:

DMA在进行外设1与内存之间的数据传输时,CPU依然可以通过总线矩阵访问外设工作,只不过无法访问外设1,这可以理解(被DMA占用)。那CPU是否也无法访问内存呢?答案是可以访问内存,有以下三种方式(wiki解释):

主要意思:

1)突发传输,停止CPU访问内存:由DMA控制器发一个停止信号给CPU,要求CPU放弃对连接内存的数据总线的使用权。DMA控制器获得总线控制权以后,开始进行数据传输,知道传输完成后发送完成信息中断,通知CPU。


优点:控制简单,它适用于数据传输率很高的设备进行传输。

缺点:在DMA控制器访内阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的。


2)周期挪用:当外设I/O设备没有DMA请求时,CPU按程序要求访问内存;一旦I/O设备有DMA请求,则由I/O设备挪用一个或几个内存周期。

与停止CPU访内的DMA方法比较,该方法既实现了I/O传送,又较好地发挥了内存和CPU的效率,是一种广泛采用的方法。

3)透明传输模式

DMA与CPU相互配合,交替执行,时分复用。这种DMA传送对CPU来说,如同透明的玻璃一般,没有任何感觉或影响。在透明的DMA方式下工作,CPU既不停止主程序的运行,也不进入等待状态,是一种高效率的工作方式。当然,相应的硬件逻辑也就更加复杂。


3 适用场景

DMA方式主要适用于一些高速的外设I/O设备。这些设备传输字节或字的速度非常快。对于这类高速I/O设备,如果用输入输出指令或采用中断的方法来传输字节信息,会大量占用CPU的时间,同时也容易造成数据的丢失。而DMA方式能使I/O设备直接和存储器进行成批数据的快速传送。


但是,使用DMA也是有缺点的:它势必会影响到CPU访问内存的速度(CPU与DMA时分复用数据总线),影响其他功能的执行速度。


对于数据量较小的传输来说,更没必要使用DMA,毕竟DMA每一次传输完成后也会引发CPU中断,而直接使用CPU中断,也是一次中断。只不过在中断向量表中的位置不同而已。


4 寄存器配置

配置通道,传输地址,字节数,方式等。具体可参考手册。


参考资料:

STM32F103C8T6参考手册


推荐阅读

史海拾趣

DPA Components International公司的发展小趣事

作为一家具有社会责任感的企业,DPA Components International公司始终关注社会公益事业。公司积极参与各种公益活动,如扶贫助学、环保行动等,为社会做出了积极贡献。此外,DPA还关注行业发展和社会进步,积极参与行业交流和合作,推动整个电子行业的健康发展。通过担当社会责任,DPA不仅提升了企业的社会形象,也为社会的进步和发展做出了积极贡献。

Abundance Enterprise Company公司的发展小趣事

随着国内市场的逐渐饱和,Abundance Enterprise Company开始积极拓展国际市场。公司积极参与国际电子展览和交流活动,与全球知名电子企业建立了广泛的合作关系。同时,公司还在海外设立了多个分支机构,进一步拓展国际业务。这些举措不仅提升了公司的国际影响力,也为公司的长期发展奠定了坚实基础。

Faraday Technology公司的发展小趣事

Abundance Enterprise Company成立于XXXX年,初期专注于电子元器件的研发和生产。公司凭借对市场需求的敏锐洞察,迅速定位在高端电子元器件市场,通过精准的市场定位和高质量的产品,逐渐在电子行业中占据了一席之地。初创团队凭借扎实的技术基础和不懈的努力,成功打破了国外品牌在高端市场的垄断,为国内电子元器件行业树立了新的标杆。

Anderson Power Products公司的发展小趣事

随着国内市场的逐渐饱和,Abundance Enterprise Company开始积极拓展国际市场。公司积极参与国际电子展览和交流活动,与全球知名电子企业建立了广泛的合作关系。同时,公司还在海外设立了多个分支机构,进一步拓展国际业务。这些举措不仅提升了公司的国际影响力,也为公司的长期发展奠定了坚实基础。

HEICO Corporation公司的发展小趣事

为了进一步扩大在电子行业的市场份额,HEICO Corporation采取了积极的并购策略。例如,在2022年,公司宣布收购Accurate Metal Machining, Inc. 96%的股份,这是一家位于克利夫兰的高可靠性组件制造商。此次收购为HEICO带来了新产品和功能,增强了其在航空航天和国防领域的竞争力。通过并购,HEICO不仅获得了先进的技术和人才,还拓宽了产品线,加速了其在电子行业的扩张步伐。

APSA公司的发展小趣事

在竞争激烈的电子行业中,APSA公司始终保持对技术的敏锐洞察和持续创新。公司不断投入研发资金,引进先进的技术和设备,推动产品升级换代。通过不断创新和技术升级,公司成功保持了市场领先地位。

问答坊 | AI 解惑

网卡驱动安装后,网络连接里怎么没有

网卡驱动我用的DDK的例程,isdnwan,编译好后进行安装,可以看到驱动和网卡都安装了,但是在网络连接里怎么没有啊,不懂,求助…

查看全部问答>

急!!!zinc的图形界面可以用VxSim仿真出来吗??

我创建了一个下载型工程,就用zinc中Hello的实例做的,在下载的时候老是出现这个错误: Errors while downloading G:/tornado2.2/target/proj/Project1/SIMNTgnu/Project1.out: _LinkMain__14ZafApplication _Control__14ZafApplicationUi ___1 ...…

查看全部问答>

菜鸟有个关于ADS建立工程的问题,高手指点啊!

以前使用ADS1.2时都是在原有的工程上添加自己的程序,这次自己建了一个工程,发现ARM竟然不会动,程序和以前的程序一样。可能是建工程的时候设置的问题导致不能运行。 哪个好心的大哥能否建立一个工程,每设置一步剪一个图片下来,并加以说明!急 ...…

查看全部问答>

嵌入式人才的发展方向,给从事嵌入式开发的同学指路(转)

     嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家 ...…

查看全部问答>

请问电话线接法??

请问二蕊的电话线如何接?线序怎样?四蕊的电话线如何接?线序怎样? 电话线头分哪些,最好有图片, 谢谢。 …

查看全部问答>

发几个用CORDIC快速求三角函数的定点程序

最近在做FFT,发几个用到的三角函数计算程序 #define DSP32_Q(x) ((int) ((x)*(((unsigned) (1 << (20)))))) const int atanLUT[20] = { DSP32_Q(0.78539816340), DSP32_Q(0.46364760900), DSP32_Q(0.24497866313), DSP32_Q(0. ...…

查看全部问答>

LM3S2110的板子怎样烧程序啊? 菜鸟先谢过各路大神!!T T

跟8962一起的ek套件, 10针can和20针debug 但没有usb借口 怎么办?…

查看全部问答>

对功放比较熟的朋友看下这个图··

能解析一下这个图吗,画圈部分的管子的作用我不是很明白···问了很多人了都无法完美解释…

查看全部问答>

TMS570LS0432 原理图库

TMS570LS0432 原理图库 环境:99SE …

查看全部问答>

open1081摄像头程序调试通过

最近看了DCMI的摄像头程序,终于调通了程序,摄像头工作起来了,PC通过串口接收到了摄像头采集的图像, 程序主循环里检测一帧图像采集完成的标志,然后关闭DCMI模块,串口传输数据,并清jpg_flag标志,最后再打开DCMI模块,等待下次中断: DCMI中 ...…

查看全部问答>