對UART、RS232、485通信的理解

實際上這一篇博文想表達的就是想說清楚什麼是串口通信。

先普及一下通信的基本知識點:

數據通信的種類串行通信、並行通信。不管是什麼類型的通信,再怎麼複雜的,也是在這兩種上面衍生出來的。

許多傳輸線或者通路組成的,每條線可以一位一位的傳輸,這些位可以在規定的時間裏傳輸完成,也可以在一定的時間內,多位同時傳輸;這就是串行通信和並行通信。

       數據通信的傳輸方向單工、半雙工、全雙工。它們之間各有什麼樣的特點,我舉了車輛過道的實例,通俗易懂的跟大家講明白了。

    1、單工:在任何時刻都只能進行一個方向的通訊,即一個固定爲發送設備,另一個固定爲接收設備。單工就類似一個只允許單方向運行的車道,在任何時刻,只允許一輛車向同一個方向走,不允許逆行。

    2、半雙工: 兩個設備之間可以收發數據,但不能在同一時刻進行。這個形象舉例就像是對講機,你在說話往外發的時候,別人就不能同時給你發,等你講完了,別人再給你回話。

    3、全雙工:在同一時刻,兩個設備之間可以同時收發數據。這個就像手機通話,你講話的同時,對方同時可以插話,你也可以聽到。

      數據通信的方式:同步、異步。

同步和異步的區別:首先很多地方都有同步和異步的概念,簡單來說就是發送方和接收方按照同一個時鐘週期工作就叫同步,發送方和接收方沒有按照統一的時鐘週期、而各自按照自己的時鐘週期工作就叫異步。

同步通信中,通信雙方按照統一節拍工作,所以配合很好;一般需要發送方給接收方發送信息同時發送時鐘信號,接收方根據發送方給它的時鐘信號來安排自己的節奏。同步通信用在通信雙方信息交換頻率固定,或者經常通信時。
       異步通信又叫異步通知。異步就是隨時都可以,但怎麼來區分開始,動作和結束呢?這就需要一幀數據裏面需要安插開始傳輸位(開始位)、數據內容、結束位(停止位)以作區分,然後還需要一定的傳輸頻率(波特率),這樣才能將數據發送出去。在雙方通信的頻率不固定時(有時3ms收發一次,有時3天才收發一次)不適合使用同步通信,而適合異步通信。異步通信時接收方不必一直在意發送方,發送方需要發送信息時會首先給接收方一個信息開始的起始信號,接收方接收到起始信號後就認爲後面緊跟着的就是有效信息,纔會開始注意接收信息,直到收到發送方發過來的結束標誌。

串口通信是屬於異步的,這個時候的波特率就顯得很重要了。

1、UART的理解

UART(Universal Asynchronous Receiver/Transmitter)即通用異步收發傳輸器,英文縮寫是uart,中文簡稱串口,既然是“器”,顯然,它就是個設備而已,要完成一個特定的功能的硬件,是設備間進行異步通信的關鍵模塊。UART負責處理數據總線和串行口之間的串/並、並/串轉換,並規定了幀格式(就是經常說的 9600,N,8,1);通信雙方只要採用相同的幀格式和波特率(這就是異步通信的特點),就能在未共享時鐘信號的情況下,僅用兩根信號線(Rx 和Tx)就可以完成通信過程,因此也稱爲異步串行通信。實際上UART這個器件是整個電路板是否支持串口通信的標誌。

通常,串口通信由一個起始位,多個數據位,一般是8位,或者8位以下,從一個字節的低位開始傳輸,傳輸完畢後傳輸停止位,這就是一個基本的串口協議,當然這個協議中也可以安插一些空閒位,還有奇偶校驗位。我們可以很形象的用一幅圖來表示:

2、RS232/485的理解

1)RS-232標準

RS-232是美國電子工業協會EIA(Electronic Industry Association)制定的一種串行物理接口標準。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) 三條線。

2)RS-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 根信號線,所以只能工作在半雙工模式,常用於總線網。

        其實RS232/485只是上面提到的UART數據幀的傳輸方式、途徑。直白點就是怎麼將數據幀中的0和1bit通過物理的接線傳輸出去。這就涉及到一個問題,在不同的線路上如何表示0和1呢?當然,我們都知道他們肯定是通過電平信號表示的0和1,所以他們的差異就只是表示0和1的電平或者叫電壓是多少不同,判定多少伏表示0和1的方式的區別。線路上傳輸的數據是一樣的,只是表現形式略有差異。

RS232/RS485,是兩種不同的電氣協議,也就是說,是對電氣特性以及物理特性的規定,作用於數據的傳輸通路上,它並不內含對數據的處理方式。比如,最顯著的特徵是:RS232使用3-15v有效電平,而UART,因爲對電氣特性並沒有規定,所以直接使用CPU使用的電平,就是所謂的TTL電平(可能在0~3.3V之間)。更具體的,電氣的特性也決定了線路的連接方式,比如RS232,規定用電平表示數據,因此線路就是單線路的,用兩根線才能達到全雙工的目的;而RS485, 使用差分電平表示數據,因此,必須用兩根線才能達到傳輸數據的基本要求,要實現全雙工,必需用4根線。但是,無論使用RS232還是RS485,它們與UART是相對獨立的,但是由於電氣特性的差別,必須要有專用的器件和UART接駁,才能完成數據在線路和UART之間的正常流動。從某種意義上來說,線路上存在的僅僅是電流,RS232/RS485規定了這些電流在什麼樣的線路上流動和流動的樣式;在UART那裏,電流才被解釋和組裝成數據,並變成CPU可直接讀寫的形式。

所以RS232/485就是代表一種電平標準,只是同TTL不同的一種電平。

3、協議部分的理解

後續再補上。。。。。

參考鏈接:

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

2、淺談總線通信機制(通信基礎+串口+I2C)

3、TTL,COMS,USB,232,422,485電平之詳細介紹及使用

以上鍊接都是值得學習和參考的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章