一、DMA简介
STM32的DMA(Direct Memory Access,直接内存访问)是一种用于数据传输的硬件机制。它允许外设通过直接访问系统内存而不需要CPU的干预,从而提高数据传输的效率。
二、DMA特点
12个独立可配置的通道:数据从一个地方转运到另一个地方就需要占用一个通道;
一般软件触发适用于存储器与存储器的数据搬运,硬件触发适用于外设与寄存器的数据转运;
三、存储器映像
四、DMA框图
五、DMA基本结构
起始地址决定数据从哪里来到哪里去;
数据宽度决定一次传输的字节大小(uint8_t\unit16_t\uint32_t);
地址是否自增决定了每次转运后寄存器地址是否后移;
传输计数器可以设定转运多少次(自减);
自动重装器决定了每次自减到零后是否重装;
M2M选0或1决定使用硬件触发还是软件触发;
软件触发下不能使用自动重装器,因为软件触发是连续型触发,直到传输计数器值为0;
六、DMA请求
该图对应的是DMA触发部分,可以选择软件触发和特定硬件触发;
要使用某个硬件的触发源,就必须使用它所在的通道;
要确定使用特定通道的触发源,就得开启对应触发源的DMA输出;
7个触发源进入仲裁器后进行优先级判断最后产生内部的DMA1请求,而优先级默认是通道号越小优先级越高,也可在程序中配置;
七、数据宽度与对齐
如果把小数据转到大数据里,高位补0;
如果把大数据转到小数据里,高位舍弃;