在嵌入式系统中,通信数据量大、处理速度快是很常见的需求。数据传输一般有CPU参与,因此会降低CPU的整体处理速度,影响系统性能。DMA(Direct Memory Access,直接存储器访问)技术提供一种解决方案。在STM32中,DMA模式是通过一种特殊的外设——DMA控制器实现的,它可以提高嵌入式系统的性能,且还能减轻CPU与存储器之间数据传输的工作负担。
在DMA模式中,CPU仍然是参与数据传输的,但不是直接读写外设,而是由CPU给DMA控制器下达一条指令,指示DMA控制器从外设上把数据拷贝到内存中,或从内存中把数据拷贝到外设上。DMA控制器直接访问存储器,不占用CPU资源,因此撤离了CPU与存储器直接操作的约束。
在数据传输过程中,DMA控制器会自动计算数据传输的开始地址和结束地址,并根据外设的数据传输方式进行数据的传输,传输完成后会给CPU发送一个中断请求。CPU接到中断请求后,就可以处理已经传输完成的数据,同时DMA控制器可以自动发起下一次的数据传输,从而达到了高效传输的目的。
相对于通过CPU实现的数据传输方式,DMA模式具有以下优势:
DMA模式是一种高效的数据传输方式,在STM32中得到了广泛的应用。相对于直接通过CPU实现数据传输,DMA模式可以大幅度提高数据传输的效率,减轻CPU的负担,降低功耗,降低整个系统的成本,提高系统的可靠性。