行業應用 / Apply 
UATR與RS232以及COM端口的關系

UART作為硬件來看,它是通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),是電腦硬件的一部分,將資料由串行傳輸(Serial communication)與并行傳輸(Parallel communication)間作傳輸轉換。UART通常用在與其他通訊協定(如EIA RS-232)的連結上。

  具體實物表現為獨立的??榛酒?,或作為集成于微處理器中的周邊設備。在開發板設計和測試階段被用來控制CPU與其余部分的信息傳送。

UART作為一種軟件協議來看,是異步串口通信協議的英文縮寫,它包括了RS232、RS499、RS423、RS422RS485等接口標準規范和總線標準規范,即UART是異步串行通信口的總稱。 RS232、RS499、RS423、RS422RS485等,是對應各種異步串行通信口的接口標準和總線標準,它規定了通信口的電氣特性、傳輸速率、連接特性和接口的機械特性等內容。實際上是屬于通信網絡中的物理層(最底層)的概念,與通信協議沒有直接關系。而通信協議,是屬于通信網絡中的數據鏈路層(上一層)的概念。

COM口是指針對串行通信協議的一種端口,是PC上異步串行通信口的簡寫,大部分為9針孔D型。COM口里分RS232,RS422RS485,傳輸功能依次遞增。所以,RS485口也是9針孔D型。由于歷史原因,IBMPC外部接口配置為RS232,成為實際上的PC界默認標準。所以,現在PC機的COM口均為RS232。若配有多個異步串行通信口,則分別稱為COM1、COM2...

RS232或者RS485,是指通信協議傳輸方式的類別之一,采用這類通信方式的,可以有多種協議,包括串行通信,現場總線方式等。想完成某個通信處理的,首先會問通信協議是什么,比如回答為串口、現場總線、以太網等;然后會確定該協議下的通信端口類型,比如回答:USB口,RS232,RS422,RS485。

總的來說,對于一項通信任務,通信協議可以使用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博客