RS232,RS422,RS485
是电气标准,就是逻辑是如何表示的。
一、RS232
RS232使用12V,0,-12V电压来表示逻辑,(好象-12V表示逻辑1,12V表示逻辑0),全双工,最少3条通信线(RX,TX,GND),因为使用绝对电压表示逻辑,由于干扰,导线电阻等原因,通讯距离不远,低速时几十米也是可以的。
二、RS422
RS422,在RS232后推出,使用TLL差动电平表示逻辑,就是两根的电压差表示逻辑,RS422定义为全双工的,所以最少要4根通信线(一般要还要多拉一根地线),一个驱动器可以驱动(最多)10个接收器,通讯距离与通讯速率有关系,一般距离短时可以使用高速率进行通信,速率低时可以进行较远距离通信,一般可达数百上千米。
三、RS485
RS485,在RS422后推出,绝大部分继承了422,主要的差别是RS485可以是半双工的,而且一个驱动器的驱动能力至少可以驱动32个接收器,当使用阻抗更高的接收器时可以驱动更多的接收器。所以现在大多数全双工485驱动/接收器对都是标:RS422/485的,因为全双工RS485的驱动/接收器对一定可以用在RS422网络。
很多人都认为全双工的是422,半双工的是485,我不知道依据是什么(要不是他们错了就是我看到《串行端口大全》的作者Jan Axelson错了)。
串行通信,同步串行与异步串行
串行通信就是数据位按时间顺序一位一位地发送接收,其中同步串行通信数据的传输必须包含数据信号和时钟信号,例如I2C,SPI等都有时钟信号,所以一般速率高但通信距离短,甚至就是板内或板间通信。异步串行通信不包含时钟信号,如何理解一个数据位是靠双方预先协商,例如使用9600B的速率就定了一位数据的时间大概是100来us,再定一个法则就可以进行通信了,例如要起始通信,用一个0表示,然后就是n位数据,再就是校验,停止之类表示一个完整数据帧,一般PC的232接口和MCU的UART都遵循兼容的法则,只要你决定如何使用就好了。
串行通信电缆引脚定义
SG指SIGNAL GROUND 表示新号地
TXD指Transmitted Data 表示数据发送
RXD指Received Data 表示接收数据
RTS指Request To Send 表示发送请求
CTS指Clear To Send 表示清除请求
DTR指Data Terminal Ready 表示数据终端准备就绪
DSR指Data Signal Rate Selector 表示数据位准备就绪
串行通信连接时要遵循下列对接关系
SG -- SG
TXD -- RXD
RXD --TXD
RTS-- CTS
CTS-- RTS
DTR -- DSR
DSR -- DTR
9孔插头对9孔插头引脚连线为
2—3
3—2
4—6
5—5
6—4
7—8
8—7
串口引脚排列图
RS-232 — DB9孔式
Pin No. Signal
1 DCD
2 TxD
3 RxD
4 DSR
5 GND
6 DTR
7 CTS
8 RTS
9 ---
RS-232 — DB9针式
Pin No. Signal
1 DCD
2 RxD
3 TxD
4 DTR
5 GND
6 DSR
7 RTS
8 CTS
9 ---
9针的R232串口,如是一公一母相连,用串口对串口的连接线直接连。如是二公或二母相连,则用串口对串口的交叉连接线直接连。不需要转换小板。(公母是指相连二设备上串口的形式)