UART概述
UART全称,Universal Asynchronous Receiver and Transmitter (UART), 一般是每个单片机或开发板必备的一个功能模块,可以用来调试,也可以用来连接一些模块(如,GPS,蓝牙等)。uart具体配置功能或者说应该怎么配置,实际上在硬件设计上已经固定了,例如在SOC芯片设计的时候已经设计UART的数量,使用方法。当你在使用的UART的时候仅仅根据你的需求进行配置相关寄存器来使用即可。
UART开发流程
1.了解UART原理
在开发的过程中,你只要知道,UART需要连接三根线。一根是RX用来接收数据,一根是TX用来发送数据,还有一根是GND用来给双方提供电平参考即可。连接示意图如下:
一般也有用RS-232逻辑电平来增加数据的抗干扰能力和传输数据,只不过是电平的表示方法而已,本文不做过多解释,有需要的可以参考其他文章,运用原理都是一样的。
UART数据帧中可以有5、6、7或8位数据。发送方一位一位的改变数据线的状态,将数据发送出去,首先从低位开始发送。如果需要校验功能,UART在发送数据后还要发送一位校验位。校验方式可以分为:奇偶校验,也就是数据位连同校验位的“1”的数目等于奇数或者偶数。
uart控制器内部原理如下图所示:
从图中可以看出,不管时接受端(RX)还是发送端(TX)都有一个移位寄存器和一个FIFO(这个不是必须的,有些MCU可能没有),通过配置相关的寄存器来收发数据即可。
2.明确目标
Each UART contains a baud-rate generator, transmitter, receiver and a control unit
在了解UART基本原理之后,你要明白你使用UART的目的是什么,uart是否可以满足你的需求。如果可以满足你的目的,你需要配uart什么样的功能。具体的可以参考芯片手册。
The following sections describe the UART operations that include data transmission, data reception, interrupt
generation, baud-rate generation, Loopback mode, Infrared mode, and auto flow control.
3.开发代码
(1)将所涉及的UART通道管脚设为UART功能
(2)设置波特率
(3)设置数据格式
(4)选择时钟源和中断方式
/* 115200,8n1 */
void uart0_init()
{
/* 设置引脚用于串口 */</