DMA,全称Direct Memory Access,直接内存访问,在计算机技术领域里是一种可以不经过CPU介入,而直接进行 I/O 操作的机制。通俗的说,DMA使得外设在数据传输时,可以直接把数据放到主存储器里,这样既提高了数据传输效率,同时也减轻了CPU的负担。
Arm Cortex-M 处理器系列中的 DMA 可以让外设模块和内存之间进行高速数据传输,从而降低了处理器的工作量,提高了数据传输的速度。它通过在不占用控制器带宽的同时周期性地移动数据来提高系统性能。ARM处理器支持多种 DMA 环境,包括嵌入式设备和移动设备。
Arm 中 DMA 模块有两个部分,分别是 DMA 控制器和 DMA 通道。DMA 控制器主要用于控制 DMA 通道数据传输的方向和传输计数,而 DMA 通道则用于接收或发送数据。具体的工作流程如下:
DMA 在处理器中主要用于高速数据传输。在 ARM 微控制器操作中,匹配 DMA 和外设是一种标准的操作方式。ARM 微控制器中的 DMA 通道最常用于音频、图像和网络及存储设备数据传输。
举个例子,比如在一些实时音频处理的场景中,之前使用CPU处理的方式,现在可以通过DMA直接将音频数据从ADC得到,存放到内存中,再通过DAC输出。这样的设计可以降低CPU运算量,提升处理音频信号的实时性。