天天看點

UART和RS232、RS485的基礎知識

一、UART和RS232、RS485的關系:

  通訊問題,和交通是一樣的。序列槽通信,我們這裡可以用公交來類比。

UART和RS232、RS485的基礎知識
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

       1

       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】這裡是例子是小端發送模式,是基本的序列槽傳輸方式,但是,大端模式的序列槽傳輸模式也是存在的,少見而已。

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-。