021-54383567
行业应用 / Apply 
UATR与RS232以及COM端口的关系

UART作为硬件来看,它是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),是电脑硬件的一部分,将资料由串行传输(Serial communication)与并行传输(Parallel communication)间作传输转换。UART通常用在与其他通讯协定(如EIA RS-232)的连结上。

  具体实物表现为独立的模块化芯片,或作为集成于微处理器中的周边设备。在开发板设计和测试阶段被用来控制CPU与其余部分的信息传送。

UART作为一种软件协议来看,是异步串口通信协议的英文缩写,它包括了RS232RS499RS423RS422RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。 RS232RS499RS423RS422RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。实际上是属于通信网络中的物理层(最底层)的概念,与通信协议没有直接关系。而通信协议,是属于通信网络中的数据链路层(上一层)的概念。

COM口是指针对串行通信协议的一种端口,是PC上异步串行通信口的简写,大部分为9针孔D型。COM口里分RS232RS422RS485,传输功能依次递增。所以,RS485口也是9针孔D型。由于历史原因,IBMPC外部接口配置为RS232,成为实际上的PC界默认标准。所以,现在PC机的COM口均为RS232。若配有多个异步串行通信口,则分别称为COM1COM2...

RS232或者RS485,是指通信协议传输方式的类别之一,采用这类通信方式的,可以有多种协议,包括串行通信,现场总线方式等。想完成某个通信处理的,首先会问通信协议是什么,比如回答为串口、现场总线、以太网等;然后会确定该协议下的通信端口类型,比如回答:USB口,RS232RS422RS485

总的来说,对于一项通信任务,通信协议可以使用UART协议,而UART协议可以通过COM端口来实现硬件连线,此协议下的传输方式可以选用RS232或者RS485等。

PS:注意使用电脑上的串口与微处理器通信时,首先要经过转压芯片(例如MAX232)来实现电平转化。

TTL 高电平1>=2.4V,低电平0<=0.5V(对于5V3.3V电源电压);

RS232采用的是负逻辑,高电平1-15V~-3V,低电平0+3V~+15V

  CMOS电平以电源为参考,高电平1是>=0.7VCC,低电平0是<=0.2VCC

  串口通讯是电子工程师和嵌入式开发工程师面对的基本问题,RS232则是其中比较常用的通讯方式。但是初学者往往搞不清有关的名词如UART和RS232或RS485之间是什么关系,因为它们经常被放到语句中同等的位置使用。在百度搜索两者的区别,可以看到排在前面的答案充斥着混淆的概念。就此,谈谈我对这几个概念的理解,希望能帮初学者厘清它们之间的关系。


       通讯问题,和交通是一样的。串口通信,我们这里可以用公交来类比。
               
       公交运行可以简单分成两个部分:
       1、车站
       2、公路
       其中车站决定了车上装什么(人),怎么发送(班次)等。
       当汽车跑在路上,就要遵守公路交通的规则,过桥有过桥的规则,高速有高速的规则,和车站没有关系了。
~
       回到串口通讯,其实,UART就相当于车站,而RS232/RS485则对应于公路的规则。
       UART,是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),既然是“器”,显然,它就是个设备而已,要完成一个特定的功能的硬件,它本身并不是协议。那么它要完成什么功能呢?它的基本功能,是串行数据和并行数据之间的转换。我们知道,计算机中的数据以Byte为基本单位,对一个Byte的存取是并行的,即,同时取得/写入8个bit。而串行通信,需要把这个Byte“打碎”,按照时间顺序来收发以实现串行。例如:
       内存中的数据是: 1 1 1 0 0 1 0 1
       串行发送的实际效果是(按时间排序【注1】):
       1
       0
       1
       0
       0
       1
       1
       1
      接收则是上述过程的逆过程。
      这就是UART做的基本工作。进一步的,它还要控制“发车的班次”比如确认一个Byte的这8个bit是什么时候开始的,又是什么时候结束的,两个班次之间至少要隔多长时间的缓冲,等等。这一部分,也具有协议的特征,但是相对于道路上的协议,更具有一般性,或者说,是与车在什么道路上开相对独立的。
       那么道路上的规定是什么样的呢?
       RS232/RS485是两种不同的电气协议,也就是说,是对电气特性以及物理特性的规定,作用于数据的传输通路上,它并不内含对数据的处理方式。比如,比较显著的特征是:RS232使用3-15v有效电平,而UART,因为对电气特性并没有规定,所以直接使用CPU使用的电平,就是所谓的TTL电平(可能在0~3.3V之间)。更具体的,电气的特性也决定了线路的连接方式,比如RS232,规定用电平表示数据,因此线路就是单线路的,用两根线才能达到全双工的目的;而RS485, 使用差分电平表示数据,因此,必须用两根线才能达到传输数据的基本要求,要实现全双工,必需用4根线。但是,无论使用RS232还是RS485,它们与UART是相对独立的,但是由于电气特性的差别,必须要有专用的器件和UART接驳,才能完成数据在线路和UART之间的正常流动。
        
       RS232甚至规定了接口的具体样式,图为DB9接口
~
      总结:从某种意义上,可以说,线路上存在的仅仅是电流,RS232/RS485规定了这些电流在什么样的线路上流动和流动的样式;在UART那里,电流才被解释和组装成数据,并变成CPU可直接读写的形式。
~
~
      【注1】这里是例子是小端发送模式,是基本的串口传输方式,但是,大端模式的串口传输模式也是存在的,少见而已。

--摘自新浪微博-Branchess博客