概要
直接存储器访问,Direct Memory Access,DMA。DMA是一个硬件控制器,负责为RAM和IO设备开辟单独的数据传输通道,可以将IO寄存器中的数据直接复制到指定的地址RAM中。
而在没有DMA控制器的系统中,这种IO寄存器中的数据必须由CPU通过通用寄存器复制到RAM中的。
所以,当只是数据传输,没有逻辑处理时,可以考虑使用DMA控制器代替CPU实现RAM和IO之间数据的传输。
CPU善于执行逻辑运算,DMA善于数据传输,各有所长。
特性:
- 每个控制器有8个数据流,每个数据流有最多支持8个通道
- 数据流间可设置优先级
- 数据传输数据长度可设置
- 数据传输宽度可设置(通过FIFO缓冲实现)
- 5个事件标志
配置
通道选择
DMA数据流
源和目标地址
流配置
可能的DMA流配置
DMA中断
DMA操作方法
- 使能DMA时钟
- 设置源地址
- 设置外设地址
- 设置传输数据大小
- 设置DMA数据流
- 启动DMA
实验要求
按键触发,将RAM中的数据发送到串口
参考
STM32F3与 F4 系列 Cortex M4 内核编程手册
STM32F4xxx中文参考手册
STM32F4xxx英文参考手册
STM32F4 开发指南(寄存器版)