串口通讯是电气工程师面对的最基本的一个通讯方式,RS-232是其中最简单的一种。很多初学者往往搞不清楚UART和RS-232、RS-422、RS-485的联系和区别,本文将谈谈这几个概念的理解,帮助大家理清它们之间的关系。如果把串口通讯比做交通,UART比作车站,那么一帧的数据就好比汽车。汽车跑在路上,要遵守交通规则。如果是市内,一般限速30、40,而高速公路则可以到120。而汽车走什么路,限速多少,就要看协议怎么规定了。常见的串口协议有RS-232、RS-422、RS-485等,他们之间有何细微差别?下面我们就一起来探讨一下。1UART是什么UART是通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx和Tx)就可以完成通信过程,因此也称为异步串行通信。若加入一个合适的电平转换器,如SP3232E、SP3485,UART还能用于RS-232、RS-485通信,或与计算机的端口连接。UART应用非常广泛,手机、工业控制、PC等应用中都要用到UART。UART使用的是异步,串行通信。串行通信是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。数据传送速率用波特率来表示,即每秒钟传送的二进制位数。例如数据传送速率为120字符/秒,而每一个字符为10位(1个起始位,7个数据位,1个校验位,1个结束位),则其传送的波特率为10×120=1200字符/秒=1200波特。数据通信格式如下图:其中各位的意义如下:起始位:先发出一个逻辑”0”信号,表示传输字符的开始。数据位:可以是5~8位逻辑”0”或”1”。如ASCII码(7位),扩展BCD码(8位)。小端传输校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验)停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。注:异步通信是按字符传输的,接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的)2RS-232标准RS-232是美国电子工业协会EIA(ElectronicIndustryAssociation)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号。RS-232是对电气特性以及物理特性的规定,只作用于数据的传输通路上,它并不内含对数据的处理方式。需要说明一下,很多人经常把RS-232、RS-422、RS-485误称为通讯协议,这是很不应该的,其实它们仅是关于UART通讯的一个机械和电气接口标准(顶多是网络协议中的物理层面)。该标准规定采用一个25个脚的DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC机将RS-232简化成了DB-9连接器,从而成为今天的事实标准。而工业控制的RS-232口一般只使用RXD(2)、TXD(3)、GND(5)三条线。早期由于PC都带有RS-232接口,所以我们需要使用UART时,都选择RS-232。但是现在个人电脑,不光是笔记本,包括台式机都不再带有RS-232的接口,大家看到电脑主板上面没有DB9的接口。所以现在开发板都选择TTL的UART,或者直接UART转USB做在开发板上。嵌入式里面说的串口,一般是指UART口,但是我们经常搞不清楚它和COM口的区别,以及RS232,TTL等关系,实际上UART,COM指的物理接口形式(硬件),而TTL、RS-232是指的电平标准(电信号).UART有4个pin(VCC,GND,RX,TX),用的TTL电平,低电平为0(0V),高电平为1(3.3V或以上)。3RS-485/RS-422标准RS-232接口可以实现点对点的通信方式,但这种方式不能实现联网功能。于是,为了解决这个问题,一个新的标准RS-485产生了。RS-485的数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~6V,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。RS-422的电气性能与RS-485完全一样。主要的区别在于:RS-422有4根信号线:两根发送、两根接收。由于RS-422的收与发是分开的所以可以同时收和发(全双工),也正因为全双工要求收发要有单独的信道,所以RS-422适用于两个站之间通信,星型网、环网,不可用于总线网;RS-485只有2根信号线,所以只能工作在半双工模式,常用于总线网。1.RS-485的电气特性:逻辑“1”以两线间的电压差为+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。2.RS-485的数据最高传输速率为10Mbps。3.RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。4.RS-485最大的通信距离约为1219M,最大传输速率为10Mb/S,传输速率与传输距离成反比,在100Kb/S的传输速率下,才可以达到最大的通信距离,如果需传输更长的距离,需要加485中继器。RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。由于RS-232接口标准出现较早,难免有不足之处,主要有以下几点:(1)接口的信号电平值较高,易损坏接口电路芯片,又因为232电平与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接;(2)传输速率较低,在异步传输时,波特率为20Kbps。现在由于采用了新的UART芯片,波特率达到115.2Kbps(1.832M/16);(3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱;(4)传输距离有限,最大传输距离标准值为50米,实际上也只能用在15米左右;(5)RS-232只容许一对一的通信,没有考虑构成串行总线。(这点很重要,在很多控制场景,是一控多,如果主设备都需要跟从设备点对点通信,那现场布线成蜘蛛网了)非平衡型串行通信接口RS-423,RS-449平衡型串行通信接口RS-422RS-422(EIARS-422-AStandard)是Apple的Macintosh计算机的串口连接标准。RS-422使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线发送和接收信号,对比RS-232,它能更好的抗噪声和有更远的传输距离。在工业环境中更好的抗噪性和更远的传输距离是一个很大的优点。4RS-232与RS-485对比1、抗干扰性:RS485接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰。2、传输距离:RS485接口的最大传输距离标准值为1200米(9600bps时),实际上可达3000米。RS232传输距离有限,最大传输距离标准值为50米,实际上也只能用在15米左右。3、通信能力:RS-485接口在总线上是允许连接多达128个收发器,用户可以利用单一的RS-485接口方便地建立起设备网络。RS-232只允许一对一通信。4、传输速率:RS-232传输速率较低,在异步传输时,波特率为20Kbps。RS-485的数据最高传输速率为10Mbps。5、信号线:RS485接口组成的半双工网络,一般只需二根信号线。RS-232口一般只使用RXD、TXD、GND三条线。6、电气电平值:RS-485的逻辑1以两线间的电压差为+(2-6)V表示;逻辑0以两线间的电压差为-(2-6)V表示。在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻辑1,-5--15V;逻辑0+5-+15V。5RS-422与RS-485对比RS-485的电气性能与RS-422完全一样。主要的区别在于:1、RS-422有4根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422的收与发是分开的所以可以同时收和发(全双工)。2、RS-485只有两根数据线:发送和接收都是A和B。由于RS-485的收与发是共用两根线,所以不能同时收和发(半双工)。RS-485标准采用平衡式发送,差分式接收的数据收发器来驱动总线,具体规格要求:接收器的输入电阻RIN≥12kΩ驱动器能输出±7V的共模电压输入端的电容≤50pF在节点数为32个,配置了120Ω的终端电阻的情况下,驱动器至少还能输出电压1.5V(终端电阻的大小与所用双绞线的参数有关)接收器的输入灵敏度为200mV(即(V+)-(V-)≥0.2V,表示信号“0”;(V+)-(V-)≤-0.2V,表示信号“1”)因为RS-485的远距离、多节点(32个)以及传输线成本低的特性,使得EIARS-485成为工业应用中数据传输的首选标准。(1)RS-485的电气特性:发送端:逻辑“0”以两线间的电压差+(2~6)V表示;逻辑“1”以两线间的电压差-(2~6)V表示。接收端:A比B高200mV以上即认为是逻辑“0”,A比B低200mV以上即认为是逻辑“1”;(2)RS-485的数据最高传输速率为10Mbps。但是由于RS-485常常要与PC机的RS-232口通信,所以实际上一般最高115.2Kbps。又由于太高的速率会使RS-485传输距离减小,所以往往为9600bps左右或以下;(3)RS-485接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好;(4)RS-485接口的最大传输距离标准为1200米(9600bps时),实际上可达3000米,RS-485接口在总线上是容许连接多达128个收发器、即RS-485具有多机通信功能,这样用户可以利用单一的RS-485接口方便的建立起网络。因为RS-485接口组成的半双工网络,一般只需二根信号线,所以RS-485接口均采用双绞线传输。RS-485的国际标准并没有规定RS-485的接口连接器标准、所以采用接线端子或者DB-9、DB-25等连接器都可以。在使用RS-485接口时,对于特定的传输线径,从发生器到负载其数据信号传输所容许的最大电缆长度是数据信号速率的函数,这个长度数据主要是受信号失真及噪声等影响所限制。最大电缆长度与信号速率的关系曲线是使用24AWG铜芯双绞电话电缆(线径为0.51mm),线间旁路电容为52.5PF/M,终端负载电阻为100欧时所得出的。(引自GB11014-89附录A)。当数据信号速率降低到90Kbit/S以下时,假定最大容许的信号损失为6dBV时,则电缆长度被限制在1200m。实际上,在实用时是完全可以取得比它大的电缆长度。当使用不同线径的电缆,则取得的最大电缆长度是不相同的。例如:当数据信号速率为600Kbit/S时,采用24AWG电缆,最大电缆长度是200m,若采用19AWG电缆(线径为0.91mm)则电缆长度将可以大于200m;若采用28AWG电缆(线径为0.32mm),则电缆长度只能小于200m。RS-485的远距离通信建议采用屏蔽电缆,并且将屏蔽层作为地线。6影响RS-485总线通讯速度和通信可靠性的三个因素1、在通信电