在《USART串口通信,中断方式,一分钟从菜鸟到大师(完整版)》文中详细介绍了中断方式串口通信的时序。在需要大量串口通信的应用中,《为什么需要DMA?你知道吗?》指出了中断方式的不足之处,及采用DMA方式在提高系统效率方面的巨大优势。下面看看以DMA方式串口通信的时序及要注意的问题。
如果是全双工通信,需要用到二个DMA通道,半双工时用一个DMA通道也可以,但是必须在每次收发前初始化。
1.初始化串口
包括使能串口时钟,使能发送和接收,定义引脚,波特率,数据位长度,奇偶校验方式,停止位位数;使能发送和接收功能;
使能串口模块接收中断(DMA方式也可以使能,看下面为什么要使用);
使能全局串口中断并设置优先级。
2. 初始化DMA
请参考《借助CMSIS宏定义,写出易读通用、易移植的DMA驱动》,关联串口数据发送寄存器与发送数据缓冲,及串口数据接收寄存器和接收数据缓冲,并使能DMA通道的发送完成<