摘要:本文介绍UART通信协议的基本知识以及在Arduino中如何实现UART通信
下面来看一下,使用UART进行数据通信的时候,除了底层电器特性必须保持一致之外,在通信规则方面,应该确定哪些东西。必须要保持一致的东西包括:
- 统一的同步位(一致的开始位和停止位)
- 数据位数,是5位、6位、7位还是8位。
- 奇偶校验一致,这包括时奇校验、偶校验还是无校验。所谓的奇校验,就是当数据为的1为偶数个时,校验位是“1”,当数据位中“1”的个数为奇数个时,校验位是“0”。简单的说,就是把数据位和校验位中的1凑成奇数个。偶校验就是凑成偶数个“1”。
- 波特率(bps)。就是每秒传送数据的位数。由于硬件设备的原因,这个波特率不是任意选择的,通常是在一系列波特率中选择。通常有1200 bps、4800 bps、9600 bps、19200 bps、38400bps、115200 bps等等。最常使用的是9600bps,这是比较低的一个波特率数值,这是由于早期机器主频不高的原因。我们现在开发中串口监视器一般使用的是115200bps,这个是9600的100多倍了。
这个UART通信规则通常会简写为一个字符串:波特率,奇偶校验,数据位,停止位。例如最常见通信规则是:9600,n,8,1,就表示通信波特率是9600,无校验,8位数据位,1位停止位。其中n表示无校验位,o表示奇校验,e表示偶校验。
最后再来看一下UART的优缺点:
优点有:
- 全双工只需要2根数据线(电源线除外)。
- 不需要时钟信号线。
- 在数据帧中定义了奇偶校验,可以排除一些基本的通信错误。
不足之处在于:
- 每一个数据帧的数据大小有限,一个数据帧不能包含多个字节的数据。