简介
无论是单片机还是嵌入式 Linux 开发,串口设备都是最常用到的外设。可以通过串口将开发板与电脑相连,然后在电脑上通过串口调试助手来调试程序。还有很多的模块,比如蓝牙、GPS、 GPRS 等都是使用的串口来与主控进行通信的。
串口全称叫做串行接口,通常也叫做 COM
接口,串行接口指的是数据一个一个地顺序传输,通信线路简单。与之对应的叫做并行接口,由于种种原因,现在并不常用(比方说需要更多的传输线,增加了成本)。
除了有 UART
外,还有一种成为 USART
的通信协议。 也就是同步/异步串行收发器,顾名思义,既可以进行同步通信,也可以进行异步通信。 所以相比 UART 多了一个同步的功能,在硬件上体现出来的就是多了一条时钟线。 一般 USART 是可以作为UART使用的,也就是不使用其同步的功能。现在的USART并不是很常用,所以仅介绍UART。
1.物理连接
在物理层,只需要三根线即可完成通信。分别是TXD
、RXD
、GND
。两个设备之间的连接也十分简单,即:A设备的TXD
连接B设备的RXD
,A设备的RXD
连接B设备的TXD
,然后A设备和B设备共地即可。如下图所示:
2.通信过程
串口通信的首发线是分离的,所以对于通信线来说,只需要发送或者接收。通信格式如下图所示。发送端按照下图的时序发送数据,即可在接收端接收,然后做相应处理。
- 空闲位:数据线在空闲状态的时候为逻辑“1”状态,也就是高电平,表示没有数据线空闲, 没有数据传输。
- 起始位:当要传输数据的时候先传输一个逻辑“0”,也就是将数据线拉低,表示开始数据传输。
- 数据位:数据位就是实际要传输的数据,数据位数可选择
5~8
位,我们一般都是按照字节 传输数据的,一个字节 8 位,因此数据位通常是 8位的。低位在前,先传输,高位最后传输。 - 奇偶校验位: 这是对数据中“1”的位数进行奇偶校验用的,可以不使用奇偶校验功能。通常使用的是
奇校验
或者偶校验
这样做可以提高数据传输的准确性。 - 停止位:数据传输完成标志位,停止位的位数可以选择 1 位、 1.5 位或 2 位高电平,一般都 选择 1 位停止位。
一般最常见的参数配置是:8
位数据位,1
位停止位,其他位都没有,然后就是波特率设置。
波特率是个很重要的参数,波特率就是UART数据传输的速率,也就是每秒传输的数据位数,一般选择 9600、115200 等。
3.电平标准
一般UART的电平标准有TTL
和RS232
,TTL和RS232的具体电平标准如下图所示:
这种通信标准一般是通过硬件来实现的。
4.总结
串口通信是嵌入式开发中非常常用的一种通信方式,从最简单的51单片机到STM32,再到更高端的嵌入式主控芯片,都大量配备了这种通信方式,一般如果通信出现问题,记得检查波特率的配置是否准确。