全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 存储技术 >

存储器到外设DMA动态访问技术

时间:2023-11-27 15:22

人气:

作者:admin

标签: 通信协议  CPU  存储器  uart 

导读:存储器到外设DMA动态访问技术- 存储器到外设数据复制的一个例子是大量数据应该通过通信外设(例如UART)传输的情况;如果没有DMA,CPU将需要在传输数据时进行“阻塞”(通常传输速...

  DMA,即动态内存访问,是一些微控制器的一项功能,数据可以独立于CPU移动,使CPU可以自由地做其他工作,从而增加了系统可以同时完成的工作总量。

  DMA可以将数据从一个内存区域移动到另一个,从内存移动到外设,或者从外设移动到内存。

  存储器到外设DMA

  存储器到外设数据复制的一个例子是大量数据应该通过通信外设(例如UART)传输的情况;如果没有DMA,CPU将需要在传输数据时进行“阻塞”(通常传输速度相对较慢,取决于通信协议的速度),或者使用中断来管理传输(由于中断上下文切换,这会增加额外的处理开销)。

  这个例子也只考虑了只有一个数据传输需要同时发生的情况——DMA通常可以同时处理多个数据流(取决于特定的微控制器实现)。

  外设到存储器DMA

  外设到内存的DMA是类似的——当CPU忙于做其他事情时,可以从通信外设(如UART)读取数据,并将其复制到内存缓冲区。除了让CPU自由地做其他工作之外,这还确保了通信数据不会因为CPU忙于另一个任务而不在准备处理接收数据的代码段中而丢失。

  同样,当有多个设备可能同时通信时(想想5个或10个!);DMA可以用来缓冲它们的每个通信,完美地并且没有数据丢失的可能性,直到CPU运行准备好处理接收的数据的代码段。虽然有些微控制器在通信外设中包含一个小的接收缓冲器,但利用DMA,接收缓冲器可以任意大,只受可用RAM的限制。

  外设到存储器DMA的另一个例子可以是通过ADC采样模拟信号。本例中设置了一个定时器,用于以设定的时间间隔触发一个或多个通道上的ADC采样。采样发生时,读数通过DMA自动传输到内存缓冲区。然后,单独的DMA流可以将这些缓冲区复制到另一个内存区域,供CPU运行DSP数字信号处理)算法。最后,另一个DMA流可用于将处理后的信号传输至微控制器DAC进行输出(存储器至外设)。(如果您不熟悉这些术语,您可以在我们的中找到概述物理输出核心或者数(字)-模(拟)转换器博客文章)。这样,CPU就可以腾出时间来运行密集型DSP算法,而无需浪费任何时间来管理ADC、存储器复制或DAC。

  对于接收数据,一些微控制器支持循环DMA缓冲区,而其他微控制器支持乒乓缓冲区,其中数据接收在两个存储器部分之间交替进行(本文作者更喜欢循环缓冲区,认为它们更有效,更容易编写代码)。

  对于没有经验的程序员来说,DMA可能令人望而生畏,但是一旦你投入时间使用它一次,那么你就有了一个代码模板,它可以很容易地复制到其他项目,并且可以大大提高你的项目的质量和/或你的微控制器可以处理的项目的复杂性。

  审核编辑:黄飞

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信