直接存储器访问控制器(DMA)
文章目录
- 直接存储器访问控制器(DMA)
- 1、DMA介绍
- 2、DMA寄存器列表
- 3、DMA的传输模式与传输操作
- 3.1 DMA的传输模式
- 3.2 DMA的传输操作
- 3.3 传输完成与软件清除
- 4、DMA的中断
- 4.1 中断标志
- 4.2 中断异常
- 4.3 中断错误
- 5、固件库的DMA相关API
- 6、DMA示例
每个嵌入式应用程序都需要与外部世界交换数据或驱动外部设备。例如,微控制器可能通过UART与其他PCB上的模块交换消息,或者使用可用的SPI接口之一将数据存储在外部闪存中。这涉及在内部SRAM或闪存和外围设备寄存器之间传输一定量的数据,并且需要一定的CPU周期来完成传输。这导致了计算能力的损失(CPU在传输过程中被占用),降低了整体性能,并最终导致重要异步事件的丢失。
直接内存访问(DMA)控制器是一个专门的可编程硬件单元,它允许MCU外设不经过Cortex-M核心的干预直接访问内部存储器。CPU从数据传输产生的开销中完全解放出来(除了与DMA配置相关的开销),并且可以并行执行其他活动¹。DMA设计为双向工作(即,它允许从内存到外设的数据传送,反之亦然),GD32F4微控制器都提供两个独立的DMA。
DMA是现代MCU的高级功能,新手用户往往认为它太复杂而难以使用。然而,DMA背后的概念基本上是简单的,一旦你理解了它们,使用起来就会很容易。本文将详细介绍与DMA使用相关的基本概念,并将概述所有GD32F4系列中的DMA特性。最后通过具体实例来操作DMA。
1、DMA介绍
DMA控制器提供了一种硬件