UART和RS232/RS485的關係是什麼?

轉自:點擊打開鏈接http://wpp9977777.blog.163.com/blog/static/4625100720138411281980/


UART和RS232/RS485的關係是什麼?

        串口通訊是電子工程師和嵌入式開發工程師面對的最基本問題,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
       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之間的正常流動。(yasin:從這裏理解,uart是和cpu直接相連的並串轉換器件,而rs232和rs485就是連接在uart器件上的phy,經由這個phy在線路上產生相應的波形。那麼uart和rs232和rs485之間的連接具體如何呢?)


       RS232甚至規定了接口的具體樣式,圖爲DB9接口

      總結:從某種意義上,可以說,線路上存在的僅僅是電流,RS232/RS485規定了這些電流在什麼樣的線路上流動和流動的樣式;在UART那裏,電流才被解釋和組裝成數據,並變成CPU可直接讀寫的形式。

      

//=======================================================

以下轉自:http://blog.csdn.net/chun_1959/article/details/45054519


UART可以這樣理解:每個SOC芯片,內部都會有UART控制器,也就是上面的“車站”。但是通常說的UART指的是,一種串行通信協議。規定了數據幀格式,波特率等。
RS232和RS485:是規定了數據通信的電氣特性。是物理層的概念,對應的物理期間有RS232或者RS485驅動芯片,將CPU經過UART傳送過來的電壓信號驅動成RS232或者RS485電平邏輯。

(藍色字體,是個人的理解,如果有不正確的地方,希望指點)

        異步串口是目前工業設備最主要的通訊接口之一。在具體的工業現場中,串口的電氣接口以RS232和RS485最爲普遍。串口大多以TTL信號形式從板卡的管腳輸入輸出,客戶需要在自己的應用底板上加入相應的驅動電路單元,以獲得所需的串口接口,如RS232或RS485。在實際的應用中,由於現場的設備串口接口的情況並不確定,這樣就要求客戶設備同時具備RS232和RS485兩種接口的功能。

        RS232接口是採用正負電平的單極性信號,一般以3線制的接口最爲普遍,信號包括RS232_TX、RS232_RX及GND,具有全雙工通訊能力。RS485接口採用一對TTL電平的差分信號RS485_D-和RS485_D+,只能半雙工通訊,在通訊方向(接收或發送)的切換方面,一般有兩種方式:一種方式是利用TTL_TXD經過一定處理作爲方向控制,這種方式也稱爲自動方向切換方式;另一種方式是使用串口的RTS控制線來控制方向,RTS有效時處於發送狀態,無效時處於接收狀態。


RS485接口連接器採用DB-9的9芯插頭座,與智能終端RS485接口採用DB-9(孔),與鍵盤連接的鍵盤接口RS485採用DB-9(針)。

232和RS485定義是電氣特性,影響的是數據在線路上的傳輸過程,RS232和RS485的收發器通過UART才能被CPU訪問,所以,只要控制了UART,就可以控制串口的傳輸方式,而所謂的編程其實就是對UART編程,所以RS232個RS485從程序員視角是不可見的。 “那你就直接說RS485和RS232編程上沒有區別不就完了?”
          問題是,實際總比理論複雜,這裏有一種例外:
          RS232用兩根線實現全雙工,兩根線各做各的,互不影響,可以同時進行;RS485雖然可以用四根線實現全雙工,但是實際應用中比較少見,更常見的是隻用兩根線實現半雙工,這樣一來,就涉及到“收狀態”和“髮狀態”的切換,這一切換又涉及兩種情況:
          1、驅動程序中已經含有對半雙工情況下的接受切換,驅動程序會根據你讀或寫的動作,自動進行切換。這種情況下,RS485的編程就與RS232完全沒有區別。
          2、驅動程序不帶自動切換,此時,爲了完成切換,必須使用額外的GPIO連接RS485收發模塊的接受使能端,在接受、發送數據之前,首先對使能端置位,使之處於正確的“接收”或“發送”狀態。

"RS-485"是否與"半雙工"等同?
      答:否,RS-485接口可連接成半雙工和全雙工兩種通信方式,半雙工通信芯片有SN75176,SN751276,SN75LBC184,MAX485,MAX1478,MAX3082,MAX1483,全雙工通信的有:SN75179,SN75180,MAX488-491,MAX1482 等

二、RS232 與 RS485 的區別:

一.抗干擾性:

1.. RS485 接口是採用平衡驅動器和差分接收器的組合,抗噪聲干擾性好。 2. RS232 接口使用一根信號線和一根信號返回線而構成共地的傳輸形式,這種共地傳輸容 易產生共模干擾,所以抗噪聲干擾性弱。

二.傳輸距離:

1.RS485 接口的最大傳輸距離標準值爲 1200 米(9600bps 時),實際上可達 3000 米。 2. RS232 傳輸距離有限,最大傳輸距離標準值爲 50 米,實際上也只能用在 15 米左右。

三.通信能力:

1.RS-485 接口在總線上是允許連接多達 128 個收發器, 即具有多站能力,這樣用戶可以利用 單一的 RS-485 接口方便地建立起設備網絡 。 2.RS-232 只允許一對一通信。

四.傳輸速率:

1. 傳輸速率較低,在異步傳輸時,波特率爲 20Kbps。 2.RS-485 的數據最高傳輸速率爲 10Mbps 。

五.信號線:

1.RS485 接口組成的半雙工網絡,一般只需二根信號線。 2.RS-232 口一般只使用 RXD、TXD、GND 三條線,即"發送數據"、"接收數據"和"信號地" 。

六.電氣電平值:

1.邏輯"1"以兩線間的電壓差爲+(2-6) V 表示;邏輯"0"以兩線間的電壓差爲-(2-6)V 表 示 。 2.在 RS-232-C 中任何一條信號線的電壓均爲負邏輯關係。即:邏輯"1",-5- -15V;邏輯"0 " +5- +15V 。噪聲容限爲 2V。即要求接收器能識別低至+3V 的信號作爲邏輯"0",高到-3 V 的信號作爲邏輯"1" 。 3.RS232 接口的信號電平值較高, 易損壞接口電路的芯片, 又因爲與 TTL 電平不兼容故需使 用電平轉換電路方能與 TTL 電路連接。 4.RS485 接口信號電平比 RS-232-C 降低了,就不易損壞接口電路的芯片, 且該電平與 TTL 電平兼容,可方便與 TTL 電路連接。

RS232 與 RS485 的聯繫:

1.都可通過 DB-9 連接器連接. 2.接口均可採用屏蔽雙絞線傳輸。 3.都是串行通信。 4.通信方式都是全雙工。 (一般情況 485 是半雙工)


由於有的設備是232接口的,有的是485接口的,如果有一臺232接口的設備與一臺485接口的設備通信,那就需要一個RS232/RS485轉換器,把232接口的設備的232信號轉換成485信號,然後再與485接口的設備通信。如果是兩臺232接口的設備要進行遠距離的通信,那隻要加上兩個RS232/RS485轉換電路就可以了。
市場上所謂的“無源RS232/RS485轉換器”採用從計算機串口偷電技術,而“有源RS232/RS485轉換器”在電路原理圖與跟前者差不多,只是電源部分有所改動而已。

RS232和RS485引腳分配

表1 RS-232端的引腳分配

DB9Female(PIN)

RS-232C接口信號

1

保護地

2

接收數據SIN(RXD)

3

發送數據SOUT(TXD)

4

數據終端準備DTR

5

信號地GND

6

數據裝置準備DSR

7

請求發送RTS

8

清除發送CTS

9

響鈴指示R1

表2 RS-485端的引腳分配

DB9Male(PIN)

輸出信號

RS-485半雙工接線

1

T/R+

RS-485(A+)

2

T/R-

RS-485(B-)

3

RXD+

4

RXD-

5

GND

地線

6

VCC

+5V備用電源輸入

表1中因爲不使用監控計算機的傳送控制信號,所以只需三條接口線,即“發送數據”、“接收數據”和“信號地”。表2中T/R+、T/R-代表收發A+、B-,VCC代表備用電源輸入,GND代表公共地線,點到點、點到多點、半雙工通信接兩根線(T/R+、T/R-),接線原則“發/收+”接對方的“發/收+” 、“發/收-”接對方的“發/收-” ,RS-485半雙工模式接線時將T/R+(發/收+)接對方的A+ 、T/R-(發/收-)接對方的B-。


"RS-485"是否與"半雙工"等同?
      答:否,RS-485接口可連接成半雙工和全雙工兩種通信方式,半雙工通信芯片有SN75176,SN751276,SN75LBC184,MAX485,MAX1478,MAX3082,MAX1483,全雙工通信的有:SN75179,SN75180,MAX488-491,MAX1482 等。


三、參考文獻:
http://www.360doc.com/content/13/1119/18/13253385_330564821.shtml
http://www.360doc.com/content/11/0404/16/1317564_107153860.shtml (重要,可以仔細的看一下)
http://www.chinadmd.com/file/xoawuzuvowzx66r63iwrpuae_1.html






發佈了307 篇原創文章 · 獲贊 52 · 訪問量 98萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章