DMA通信基本原理
DMA(Driect Memory Access),直接寄存器访问,DMA控制器通过硬件总线的方式将数据从源地址拷贝到目的地址,通过DMA进行数据传输过程中,不需要占用CPU。通过DMA进行数据传输,避免数据传输占用CPU资源,从而影响CPU对于其他事件的响应/处理速度。
DMA通信框图
DMA基本特性
DMA通道:2个DMA单元各8个通道,共16个DMA通道
传输数据大小:支持8bit,16bit,32bit数据传输
最大传输次数:65535
通道优先级:(0-15),设置为0优先级最高,15则最低
通道请求:每个DMA通道有特定的硬件触发请求,所有通道都可配置软件触发
硬件触发:配置DMA通道数据传输为硬件中断触发的方式,当对应的硬件中断发生,则开始执行DMA传输,外设与存储器,存储器与外设之间的通信可采用此方式。
软件触发:配置完DMA通道后,通过软件逻辑触发的方式进行DMA数据传输。
UART DMA数据发送流程
1)失能DMA通道传输功能,DTE = 0;
2)配置源地址DSA,目的地址DDA;
3)配置传输次数;
4)配置通道硬件触发,选择对应UART TX的使能中断号。注意:配置UART数据发送时先通过软件发送一个字节数据到UART,然后硬件触发DMA传输接下来的数据。
5)使能DMA通道传输,使能DMA中断功能
UART DMA数据接收
1)失能DMA通道传输功能,DTE = 0;
2)配置源地址DSA,目的地址DDA;
3)配置传输次数(可设置循环接收);
4)配置通道硬件触发,选择对应UART RX的使能中断号
5)使能DMA通道传输,使能DMA中断功能