一、UART介紹
通用異步收發傳輸器通常稱作UART,UART是一種通用串行數據總線,用于異步通信。該總線雙向通信,可以實現全雙工傳輸和接收。在嵌入式設計中,UART用于主機與輔助設備通信,如汽車音響與外接AP之間的通信,與PC機通信包括與監控調試器和其它器件,如EEPROM通信。
基本結構:

⑵ 輸出移位寄存器,它接收從輸出緩沖器送來的并行數據,以發送時鐘的速率把數據逐位移出,即將并行數據轉換為串行數據輸出。
⑶ 輸入移位寄存器,它以接收時鐘的速率把出現在串行數據輸入線上的數據逐位移入,當數據裝滿后,并行送往輸入緩沖寄存器,即將串行數據轉換成并行數據。
⑷ 輸入緩沖寄存器,它從輸入移位寄存器中接收并行數據,然后由CPU取走。
⑸控制寄存器,它接收CPU送來的控制字,由控制字的內容,決定通信時的傳輸方式以及數據格式等。例如采用異步方式還是同步方式,數據字符的位數,有無奇偶校驗,是奇校驗還是偶校驗,停止位的位數等參數。
⑹狀態寄存器。狀態寄存器中存放著接口的各種狀態信息,例如輸出緩沖區是否空,輸入字符是否準備好等。在通信過程中,當符合某種狀態時,接口中的狀態檢測邏輯將狀態寄存器的相應位置“1”,以便讓CPU查詢。
UART數據傳輸流程:
(1)UART的TXD通常情況處于高電平的狀態
(2)UART準備傳輸數據的時候,TXD從高電平轉變為低電平(即從1變0)并維持一位的傳輸時間。這樣接收方在檢測到TXD傳輸的電平有高電平變為低電平的時候準備開始接收數據。
(3)UART一幀有5,6,7,8位的數據,TXD由高電平轉變為低電平并保持一位的時候開始傳輸數據。傳輸數據是一位一位的進行高低電平傳輸。首先發送的是低位。
(4)UART如果使用校驗位時,在發送數據結束時候會緊跟著一位校驗位。有兩種校驗方法:奇校驗和偶校驗
(5)最后發送停止位,TXD數據線恢復到正常狀態,停止位的長度有三種。1位,1.5位,2位
二、RS232介紹
個人計算機上的通訊接口之一,由電子工業協會(Electronic Industries Association,EIA) 所制定的異步傳輸標準接口。通常 RS-232 接口以9個引腳 (DB-9) 或是25個引腳 (DB-25) 的型態出現,一般個人計算機上會有兩組 RS-232 接口,分別稱為 COM1 和 COM2。
在串行通訊時,要求通訊雙方都采用一個標準接口,使不同的設備可以方便地連接起來進行通訊。RS-232-C接口(又稱EIARS-232-C)是目前最常用的一種串行通訊接口。(“RS-232-C”中的“-C”只不過表示RS-232的版本,所以與“RS-232”簡稱是一樣的)
RS232的9針接口:


最右邊的是串口接口 統稱為RS232接口(封裝DB9)
通信過程中只有兩個腳參與通信
2腳:電腦的輸入RXD
3腳:電腦的輸出TXD 通過2 ,3 腳就可以實現全雙工(可同時收發)的串行異步 通信
5腳:接地
RS232的引腳電路連接完成(就三個腳)
對于單片機
單片機的P3口是有兩個復用接口RXD 和TXD 這是單片機進行串行通信的收發口 連接應該錯位的對應到電腦的TDX RDX上
注意:單片機和rs232的電平標準是不一樣的(各種電平標準見另一word)
單片機的電平標準 TTL電平 :+5V表示1 0V表示0
Rs232的電平標準 +15/+13 V表示1 -15/-13 表示0
所以 單片機與電腦串口通信就應該遵循下面的連接方式:
?
在單片機與上位機給出的rs232口之間 通過電平轉換電路(最上面圖中的Max232芯片) 實現TTL電平與RS232電平之間的轉換
三、RS485介紹
為擴展應用范圍,美國電子工業協會(EIA)又于1983年在RS-422基礎上制定了RS-485標準,增加了多點、雙向通信能力,即允許多個發送器連接到同 一條總線上,同時增加了發送器的驅動能力和沖突保護特性,擴展了總線共模范圍,后命名為TIA/EIA-485-A標準。
RS485接口組成的半雙工網絡,一般是兩線制(以前有四線制接法,只能實現點對點的通信方式,現很少采用),多采用屏蔽雙絞線傳輸。這種接線方式為總線式拓撲結構在同一總線上最多可以掛接32個結點。在RS485通信網絡中一般采用的是主從通信方式,即一個主機帶多個從機。很多情況下,連接RS-485通信鏈路時只是簡單地用一對雙絞線將各個接口的“A”、“B”端連接起來。RS485接口連接器采用DB-9的9芯插頭座,與智能終端RS485接口采用DB-9(孔),與鍵盤連接的鍵盤接口RS485采用DB-9(針)。
rs485特點:
1. RS-485的電氣特性:采用差分信號正邏輯,邏輯“1”以兩線間的電壓差為+(2~6)V表示;邏輯”0“以兩線間的電壓差為-(2~6)V表示。接口信號電平比RS-232-C降低了,就不易損壞接口電路的芯片, 且該電平與TTL電平兼容,可方便與TTL電路連接。
2. RS-485的數據最高傳輸速率為10Mbps。
3. RS-485接口是采用平衡驅動器和差分接收器的組合,抗共模干擾能力增強,即抗噪聲干擾性好。、
4. RS-485最大的通信距離約為1219m,最大傳輸速率為10Mbps,傳輸速率與傳輸距離成反比,傳輸速率越低,傳輸距離越長,如果需傳輸比RS-485最大通信距離更長的距離,需要加485中繼器。RS-485總線一般最大支持32個節點,如果使用特制的485芯片,可以達到128個或者256個節點,最大的可以支持到400個節點。
RS485通信原理:
RS485是一種在工業上作為數據交換的手段而廣泛使用的串行通信方式,數據信號采用差分傳輸方式,也稱作平衡傳輸,因此具有較強的抗干擾能力。它采用一對雙絞線,將其中一線定義為A,另一線定義為B。
通常情況下,RS485的信號在傳送出去之前會先分解成正負對稱的兩條線路(即我們常說的A、B信號線),當到達接收端后,再將信號相減還原成原來的信號。發送驅動器A、B之間的正電平在+2~6V,是一個正1邏輯狀態;負電平在-2~6V,是一個負0邏輯狀態;另有一個信號地C。在RS485中還有一“使能”端。“使能”端是用于控制發送驅動器與傳輸線的切斷與連接。當“使能”端起作用時,發送驅動器處于高阻狀態,稱作“第三態”,即它是有別于邏輯“1”與“0”的第三態。
接收端與發送端的電平邏輯規定,收、發端通過平衡雙絞線將AA與BB對應相連,當在接收端AB之間(DT)=(D+)-(D-)有大于+200mV的電平時,輸出正邏輯電平,小于-200mV時,輸出負邏輯電平。接收器接收平衡線上的電平范圍通常在200mV~6V之間。
例如:發送“1”時,驅動器收到控制器發送來的高電平,之后A端輸出高電平,B端輸出低電平;接收器A端收到高電平,B端收到低電平,兩個信號相減得到“1”。同理,發送“0”時,驅動器收到控制發送來的低電平,之后A、B兩端分別輸出低、高電平,接收端A、B則接收到低、高電平,兩個信號相減后得到“0”。
如果受到干擾,則接收端AB之間(DT)=[(D+)+Noise]-[(D-)+Noise]= (D+)-(D-),由此可以看出干擾信號被消除。
四、串口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】):
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可直接讀寫的形式。
評論