mcu-dma
MCU DMA 控制器
DMA,全称Direct Memory Access,即直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。
DMA 控制器(STM32)
- 双 AHB 主总线架构,一个用于存储器访问,另一个用于外设访问
- DMA 控制器有 8 个数据流,每个数据流有多达 8 个通道(或称请求)
- 每个数据流有单独的四级 32 位先进先出存储器缓冲区 (FIFO),可用于 FIFO 模式或直
接模式- FIFO 模式:可通过软件将阈值级别选取为 FIFO 大小的 1/4、1/2 或 3/4,数据缓存到 FIFO
- 直接模式:每个 DMA 请求会立即启动对存储器的传输
- DMA 数据流请求之间的优先级可用软件编程(4 个级别:非常高、高、中、低),在软
件优先级相同的情况下可以通过硬件决定优先级(例如,请求 0 的优先级高于请求 1) - 要传输的数据项的数目可以由 DMA 控制器或外设管理
- 独立的源和目标传输宽度(字节、半字、字):源和目标的数据宽度不相等时,DMA 自动
封装/解封必要的传输数据来优化带宽