关于数据通信一些基本概念的介绍请参考我的另一篇博文:数据通信的基本概念_徐大康的博客-CSDN博客
串行接口_百度百科 (baidu.com)
串行接口 - 维基百科,自由的百科全书 (wikipedia.org)
RS232接口_百度百科 (baidu.com)
RS-232 - 维基百科,自由的百科全书 (wikipedia.org)
1962年,体积较小的个人计算机还没有出现,那时电传打字机和计算机视频终端都需要与调制解调器进行通信,为规范此通信过程,美国电子工业协会(EIA)联合各个厂商发布了EIA-RS-232A标准,其中,RS英文全称是Recommended Standard,是推荐标准的意思;232是标识号;A表示首次发布。
经过几年的实际应用和改进,1970年,EIA对RS232标准进行了第三次修订,发布了RS-232C标准。其中C表示是第三次修订(第二次修订是B)。
EIA-RS-232简称232或RS232,目前最新的标准是1997年发布的EIA-RS232F,但RS232C是应用最广泛,最为人所知的232标准,所以一般人们说到RS232,指的都是RS232C。
RS232是一种串行通信标准,被简称为串口,最初它有22根线,采用DB25接插件,支持同步和异步串口,它的物理接口如下图(左)所示:
DB25接口最初被广泛应用于个人计算机,因为其非常流行,人们还喜欢称它为COM口,意为communication口即通信口,在有多个通信口时,人们用COM1,COM2来称呼它们。
随着技术的发展,设备制造商倾向于体积更小,成本更低的接口,因此,DB25中未使用的和支持同步模式的引脚被去掉了,形成了现在的DB9接口,如上图(右)所示。
这种DB9接口连接可靠,还带屏蔽,曾作为计算机与外设间的通信接口红极一时,虽然现在个人计算机早已淘汰了这种接口,主要原因还是它太大了,不符合计算机小型化、轻量化的需求,但在对连接可靠性要求更高的工业控制领域,DB9接口仍然被广泛使用着,有时还并不是作为RS232的物理接口,而是作为其它通信协议例如CAN通信的接口。
所以,发展到现在,RS232C及其对应的物理接口DB9在个人计算机上已经没有应用了,在工业控制板卡上RS232也应用的较少了,且一般也只用到TX、RX 和 GND这三根线而省略其它控制线,但DB9接口还在广泛使用。
RS-422_百度百科 (baidu.com)
EIA-422 - 维基百科,自由的百科全书 (wikipedia.org)
RS232应用很广泛,但也有其局限性,传输距离短、速度较慢、不支持组网这三个缺点使得RS232C在长距离传输、较大数据量和需要组网的应用环境下变得不再适用。为了解决这一问题,1977年,EIA发布了RS422A标准。
RS422的全称是“平衡电压数字接口电路的电气特性”,最新版标准是RS422B。
RS422的比特率可达100kps~10Mbps(取决于数据线长度),最大传输距离可达1200米,也支持一主多从(单个发送端最多10个接收端)的组网方式,这些是RS422相对RS232的主要改进。
为支持长距离传输,RS422采用差分传输,共五根线,TX+、TX-、RX+、RX- 和 GND,它并没有规定特定的物理接口,但实际使用时一般沿用RS232的DB9接口。
虽然RS422能轻松连接一个发送端与10个接收端,但这时接收端只能接收而不能反过来发送数据,这相当于一种广播形式的连接,还没有实现多点间可互相收发的通信,所以,RS422标准实际应用的并不多,一般是作为RS232的扩展,等到它的改进版标准RS485推出之后,RS422基本销声匿迹了,成了串口通信历史的一个过客。
RS-485_百度百科 (baidu.com)
EIA-485 - 维基百科,自由的百科全书 (wikipedia.org)
为弥补RS422无法实现多点互收发通信的不足,1983年,EIA在RS422的基础上制定了RS485A标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上。
RS485是一个异步半双工的串行通信协议。在硬件构成上,RS422相当于两组RS485,即两个半双工RS485构成了RS422,所以有时RS422又被称为全双工RS485。
因为是半双工通信,RS485将RS422的五根线缩减为三根,分别是A+、B- 和 GND,+表示差分的正端,-表示差分的负端。
同RS422一样,RS485也没有规定物理接口。
RS485标准因为线数少、抗干扰性强、可灵活组网等优点在工业控制领域有着较广泛的应用。
UART_百度百科 (baidu.com)
UART - 维基百科,自由的百科全书 (wikipedia.org)
TTL电平_百度百科 (baidu.com)
UART,Universal Asynchronous Receiver/Transmitter,通用异步收发器,是一种通信协议,它规定了数据的开始位、停止位、校验位等数据如何组织的规则。
RS232、RS422 和 RS485这些标准只规定了通信的电气规则,像RS485规定二进制0的电平是+1.5 ~ +6V,二进制1的电平是-6 ~ -1.5V,它们并没有指定用什么方式组织数据。理论上,用除UART协议外的协议来组织发送数据,再通过RS232等接口规定的电平标准来完成数据收发是可行的,但一般没人这么干,因为UART足够简单且能满足要求了,所以上述三种标准采用UART协议组织数据已成为了一种事实标准,这一点我们从UART名字中的通用两字就可以看出端倪。
因为UART都是由CPU、MCU等控制器或专用芯片产生的,所以UART的原始电平一般为TTL电平即低电平0V、高电平3.3V或5V。所以,单独说UART指的就是TTL电平的异步串行通信协议。它有三根线,TX、RX 和 GND,没有规定物理接口,一般直接用几根插针或者几个圆孔作为接口。
因为TTL电平传输距离非常短,所以UART总是需要转换成其它电平标准,而向RS232、RS485 和 USB这三种转换是最多的。大名鼎鼎的MAXIM(美信)就起家于一个TTL电平转±15V的RS232电平的一个芯片——MAX232。同样著名的还有该公司的MAX485,该芯片的功能是将TTL电平转为RS485电平。UART转USB的需求也非常庞大,最著名的芯片是FTDI公司的FT232RL,国产的CH340G也不错。下图展示了一块使用FT232芯片的UART转micro-USB的板卡。
从串口的发展历史我们知道,串口的说法最初指的是最流行的串行通信标准RS232。又因为RS422 和 RS485是在RS232基础上发展而来的,所以串口也可以指代它们。而UART是这几个标准均采用UART通讯协议,所以串口也包含了UART。
总结一下,串口指的就是RS232、RS422、RS485 和 UART 这几种通信标准/协议。因为RS422基本很少见到了,所以我们日常说的串口,指的就是RS232、RS485 和 UART这三种。它们的一些特征如下表所示:
串口类别 | RS232 | RS485 | UART |
---|---|---|---|
通信类别 | 异步串行通信 | 异步串行通信 | 异步串行通信 |
通信协议 | UART | UART | UART |
物理接口 | DB9 | 未规定 | 未规定 |
半/全双工 | 全双工 | 半双工 | 全双工 |
信号线数量 | 标准9根,一般使用时简化为3根, Tx,Rx,GND |
3根 A+,B-,GND |
3根 Tx,Rx,GND |
逻辑电平 | RS232电平 逻辑1:-15V ~ -5V 逻辑0:+3V ~ +15V |
RS485电平 逻辑1:+2V ~ +6V 逻辑0:-6V ~ -2V |
TTL电平 逻辑1:+2.4V ~ +5V 逻辑0:0V ~ +0.5V |
传输距离 | 较短,<15米 | 较长,<1200米 | 最短,<5米 |
传输速度 | 较慢,与距离有关, 一般<20kbps |
较快,与距离有关 一般100kbps~10Mbps |
较慢,与距离有关 一般采用固定速度, 如9600bps、115200bps等 最快一般不超过921600bps |
应用场景 | 工业上PCB板间通信, 应用越来越少 |
工业上PCB板间通信, 相对RS232应用多一些 |
主要用作调试接口, 通过UART转USB后与电脑通信 |
串口是一种习惯性的叫法,它并不特指哪一种具体的标准/协议,一般我们在描述的时候会说RS232串口、RS485串口、UART串口,以此来说明我们说的到底是哪一种串口。
三种串口可以通过专用芯片实现互转,也可以转为USB连接电脑,在电脑侧安装好对应的驱动,再借助各种串口调试工具即可实现在电脑上收发串口数据,甚至能看到波形。这是一种常用的代码调试手段。目前市面上已经有了多种串口转USB的工具,其中一种如下图所示:
1.《串行通信接口规范与标准》 [美] Louis E. Frenzel Jr 编著,林赐 翻译(第25章,第26章,第28章)
2.《串行通信技术 面向嵌入式系统开发》 周云波 编著(第一章)