11.2.3. 编程指南
11.2.3.1. 初始化
步骤1:系统初始化
总线时钟:配置APB时钟。
模块时钟:在CMU中使能UART模块时钟,释放模块复位。
IO 配置:配置GPIO复用为UART功能,配置UART引脚上拉模式。
波特率配置:请参考 操作模式。
步骤2:控制器参数配置
通过UART_LCR配置数据宽度、停止位、校验类型。
通过UART_FCR复位和使能FIFO,配置触发条件。
通过UART_MCR配置流控方式。
步骤3:中断配置
使用对应中断向量号配置UART中断。
- 在DMA模式
配置UART_IER为0x00关闭中断。
配置UART_HSK为0xE5选择握手模式。
配置UART_FCR.DMAM选择DMA模式。
设置DMA模块参数及DMA中断请求。
- 在中断模式
配置UART_IER使能对应中断。
11.2.3.2. 查询模式
发送
向寄存器UART_THR写入数据。
检查UART_USR.TFNF的值,UART_USR.TFNF等于1则可以继续写入,UART_USR.TFNF等于0需等待发送完成。
接收
检查UART_USR.RFNE的值。
UART_USR.RFNE等于1时从寄存器UART_RBR中读回接收数据。
UART_USR.RFNE等于0完成数据接收。
11.2.3.3. 中断模式
发送
配置UART_IER.ETBEI为1以使能UART发送中断。
向寄存器UART_THR写入数据。
当FIFO中的数据达到触发条件,UART发送中断产生。
检查UART_USR.TFE判断发送FIFO是否为空,当UART_USR.TFE等于1表示发送完成。
配置UART_IER.ETBEI为0关闭中断。
接收
配置UART_IER.ERBFI为1以使能UART接收中断。
当FIFO中的数据达到触发条件,UART接收中断产生。
从UART_RBR中读取接收数据。
检查UART_USR.RFNE,当UART_USR.RFNE等于1则继续读取接收数据。
11.2.3.4. DMA模式
发送
在初始化流程中配置DMA中断。
配置DMA通道,包括传输源地址,目的地址,传输数据长度,传输类型等,详情参考DMA章节。
在DMA模块中使能发送。
在DMA模块中检查是否发送完成,完成后关闭UART DMA发送。
接收
配置DMA通道,包括传输源地址,目的地址,传输数据长度,传输类型等,详情参考DMA章节。
在DMA模块中使能接收。
在DMA模块中检查是否接收完成,完成后关闭UART DMA接收。