串口通讯详解笔记
- 串口通讯概述
- 串口通讯传输数据帧的结构
- UART
- RS232
- RS485
- RS-422
- RS-232、RS-422和RS-485的主要区别(重要)
串口通讯概述
串口通讯是指数据按位(bit)发送和接收字节的一种传输方式。一个字节的数据传输要分为8次进行,由低位到高位按顺序一位一位的进行传送。
由于串行通信的数据是逐位传输的,所以发送方和接收方都需要具有固定的时间间隔来发送/接收每一位,也就是要保证通讯双方具有相同的波特率即每秒传输的bit数量。(常见的波特率9600/115200)。
对于串口来说,单个调制状态对应点二进制位数为1,所以波特率=比特率。
我们常见的UART,RS232,RS485/RS422都是串口通讯,都遵循串口通信时序协议。
串口通讯传输数据帧的结构
-
起始位:是表示传输开始的位,通常为发送1位逻辑0,开始传输数据。
-
数据位:可以是5~8位的数据,先发LSB。常见的就是8位(1个字节)。
-
校验位:用于奇偶校验的位。用于检测错误。它可以采用以下值:
偶校验,消息中的单元数是偶数奇校数,消息中的单元数为奇数始终为 1,奇偶校验位始终为 1始终为 0,奇偶校验位始终为 0未使用(无)
-
停止位:停止位是数据传输结束的标志,可以是1/1.5/2位的逻辑1。
-
空闲位:空闲位是紧跟停止位之后的,在停止位保持到逻辑1时,空闲时数据线为逻辑1状态,代表无数据传输。
UART
UART(通用异步收发器) 是串行异步通讯总线。通常处理器都会集成UART控制器,它由两条数据线构成,可以实现全双工的发送和接收。但UART通讯没有统一的电气接口,抗干扰能力比较差,通讯的距离特别短。
UART的硬件连接仅需要3条线。发送数据端TX,要接接收设备的RX,发送数据端RX,要接接收设备的TX,GND是保证两设备共地,有统一的参考平面 。
RS232
RS-232 和UART一样,也是点对点的数据传输。接口工作在全双工模式。区别是在电气层做的改变,RS-232 提升了逻辑传输的电压。定义了硬件接口标准。因此,RS-232在速度9600 bps下,通讯距离通常在 15 米左右。在最短距离下,速度通常为 115.2 kbps。
用于 RS-232 的 DB9 连接器的引脚排列
我们在使用RS-232 接口的时候通常使用 TxD、RxD 和 GND 地线,其余线是用于控制数据流的。
我们使用的CPU会集成UART控制器,但是处理器产生的信号都是TTL电平,因此在使用RS232时候,我们需要在硬件上添加电路对信号电平进行转化,而软件代码则和UART相同。即处理器-RS232电平转换芯片-RS232电平转换芯片-处理器。
RS232相对UART提升了传输距离,也有了统一的接口标准。但是RS232传输的接口信号电平电压高,和TTL电平不兼容。而且会产生共模干扰,通讯的距离也比较短。
RS485
在工业上,最常见的接口是 RS-485 ,RS-485 采用多点拓扑结构,允许连接多个接收器和发射器(有点像IIC)。这样可以利用单一的RS485 接口方便的建立起一个设备网络,在 RS-485 网络的一个部分中,最多可以有 32 个设备,但在附加中继器和信号放大器的帮助下,最多可以有 256 个设备。但一次只能激活一个发射器。而上面到UART和RS232的拓扑是点对点。
RS-485差分线路由两个信号组成:
A,对于逻辑1低,对于逻辑0高,
B,对于逻辑1高,对于逻辑0低。
RS-485 有两种类型:
RS-485 带 2 个触点,以半双工模式运行,同一时间只能接收/发送。
RS-485 带 4 个触点,以全双工模式运行,同一时间能接收/发送。
RS-485 标准没有特别定义特定类型的连接器,但通常是接线端子或 DB9 连接器。连接器的引脚分配取决于设备制造商。
为了在远距离匹配线路,RS-485 还在线路的起点和终点配备了 120 欧姆的终端电阻。RS485的通讯距离最大1200 米,9600 bps。
RS232和RS485对比:
RS-422
RS-422 和RS-485很类似。使用的都是差分信号。但是在 RS-422 网络中,发送设备只能有 1 个,接收设备最多可以有 10 个。
RS-422 是 定义4 根线用于数据传输。(2 根双绞线用于传输,2 根双绞线用于接收)和一根公共 GND 地线。
RS485和RS422相比较,RS485一般是2线制,虽然有些厂商可能会指定4线制RS485,这种方式比较少见,因此在用四线传输的时候选择RS-422 多一些。