STM32-DMA基本概念
工作原理
DMA即直接存储器访问,无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,他是通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,可以使得CPU的效率大大提高。
STM32F103有两个DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。为了保证每个通道协调有序,还有一个仲裁器来协调各个DMA请求的优先权。
如图为STM32F103的12个通道DMA请求预览表
通道优先级
这些通道的优先级可以通过软件和硬件配合设定,软件方面可以通过编程配置寄存器,当配置的优先权相等时,由硬件决定。
软件:每个通道的优先权可以在DMA_CCRx寄存器中设置,有4个等级:
- ─ 最高优先级
- ─ 高优先级
- ─ 中等优先级
- ─ 低优先级
硬件:如果2个请求有相同的软件优先级,则拥有较低编号的通道比拥有较高编号的通道有较高的优先权。举个例子,通道2优先于通道4。