RS232和RS485
1. 串口存在的问题
- 电气接口不统一
- UART只是对信号的时序进行了定义,而未定义接口的电气特性;
- UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同处理器使用的电平存在差异, 所以不同的处理器使用UART通信时一般不能直接相连;
- UART没有规定不同器件连接时连接器标准,所以不同器件之间通过UART通信时连接很不方便;
- 抗干扰能力差
UART一般直接使用TTL信号来表示0和1, 但TTL信号的抗干扰能力较差,数据在传输过程中很容易出错。
- 通信距离极短
因为TTL信号的抗干扰能力较差,所以其通信距离也很短,一般只能用于一个电路板上的两个不芯片之间的通信。
2. RS232(全双工)
2.1 RS232介绍
RS232只是在串口的基础上,将连接器进行标准化,所以RS232也是全双工的模式,其编程还是和串口一样。相对串口而言,其具有抗干扰、距离远、速度快的优点。
RS232:串口的硬件升级版,点对点、串行、全双工、异步
标准规定采用一个25引脚的DB-25连接器,标准中对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定; 后来IBM的PC机将RS232简化成了DB-9连接器,后来成为事实标准。
上图就是现在通用的是9线制的版本。
现在工业控制的RS-232接口一般只使用RXD、TXD、GND三条线,如下图中的2、3、5这3个引脚。
该标准规定逻辑“1”的电平为**-5v到-15v**,逻辑“0”的电平为**+5v 到+15v**,选用该电气标准的目的在于提高抗干扰能力,增大通信距离,其传送距离一般可达15m;
注意: RS232的正电平代表逻辑0,负电平反而代表逻辑1。
2.2 电平转换
虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS232标准的信号,所以一般我们还需要在处理器外部去添加电路对信号的电平进行转换,参考电路如下:
2.3 RS232存在的问题
-
接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容,所以需要使用电平转换芯片才能与TTL电路连接
-
通信速度较低
-
易产生共模干扰,抗噪声干扰性弱
-
传输距离较短(15m)
3. RS485(半双工)
RS485也是在串口的基础上,将连接器进行标准化。因为RS485采用差分信号,所以它是半双工的工作模式,其编程还是和串口一样,但是需要加以处理,因为串口是全双工的。
3.1 RS485介绍
RS485标准规定采用差分信号进行数据传输,因此只有2根线。两线间的电压差为+2v到+6v表示逻辑“1”,两线间的电压差为-2到-6v表示逻辑“0”。
使用RS485的通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号; 该标准允许连接多个收发器,即具有多站能力,这样可以利用单一的RS485接口方便地建立起一个设备网络。
RS485采用两线制,这种接线方式为总线式拓扑结构,在同一总线上可以同时存在多个节点。因为采用两线制,数据的发送和接收都要使用这对差分信号线,发送和接收不能同时进行,所以只能采用半双工的方式工作,编程时也需要加以处理。
RS485:串口的硬件再升级版,多主从、串行、半双工、异步
3.2 RS485的特点
-
使用差分信号能有效地减少噪声信号的干扰,延长通信距离,RS485的通信距离可以达到1500m。
-
允许连接多个收发器,即具有多站能力,可建立起一个设备网络。
-
RS485接口信号的电平比RS232降低了,所以不易损坏接口电路的芯片。
-
电平与TTL电平兼容,可方便地与TTL电路连接。
3.3 电平转换
虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS485标准的信号,所以一般我们还需要在处理器外部去添加电路将TTL信号转换成差分信号。
下图中芯片里面的A和B引脚代表RS485的差分信号,RO引脚连接串口的RXD,DI引脚连接串口的TXD,RE引脚和DE引脚控制信号的传输方向,即:向外发送差分信号,还是接收差分信号。
3.4 RS485的优势
-
接口的信号电平值较低,不易损坏接口电路的芯片,且与TTL电平兼容,可方便地与TTL电路连接
-
通信速度快
-
抗噪声干扰性强
-
传输距离较远(1500m)
-
可实现多节点组网
4. 总结
RS232和RS485都是串口的硬件升级版本,都提高了抗干扰能力、使得传播距离更远、速度更快;在软件控制方面无差别。只是RS485编程的时候要注意一下,因为它是半双工的,而串口是全双工的。
串口 | RS232 | RS485 | |
---|---|---|---|
工作模式 | 全双工 | 全双工 | 半双工 |
硬件接口 | 无标准连接器 | 有标准连接器 | 有标准连接器 |
软件编程 | UART控制器 | UART控制器 | UART控制器(不能同时收发) |
通信距离 | 一般10m左右,受环境影响,可靠性不高 | 15m | 1500m |