一、UART介紹
通用異步收發(fā)傳輸器通常稱作UART,UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。在嵌入式設(shè)計(jì)中,UART用于主機(jī)與輔助設(shè)備通信,如汽車音響與外接AP之間的通信,與PC機(jī)通信包括與監(jiān)控調(diào)試器和其它器件,如EEPROM通信。
基本結(jié)構(gòu):
⑵ 輸出移位寄存器,它接收從輸出緩沖器送來的并行數(shù)據(jù),以發(fā)送時(shí)鐘的速率把數(shù)據(jù)逐位移出,即將并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)輸出。
⑶ 輸入移位寄存器,它以接收時(shí)鐘的速率把出現(xiàn)在串行數(shù)據(jù)輸入線上的數(shù)據(jù)逐位移入,當(dāng)數(shù)據(jù)裝滿后,并行送往輸入緩沖寄存器,即將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)。
⑷ 輸入緩沖寄存器,它從輸入移位寄存器中接收并行數(shù)據(jù),然后由CPU取走。
⑸控制寄存器,它接收CPU送來的控制字,由控制字的內(nèi)容,決定通信時(shí)的傳輸方式以及數(shù)據(jù)格式等。例如采用異步方式還是同步方式,數(shù)據(jù)字符的位數(shù),有無奇偶校驗(yàn),是奇校驗(yàn)還是偶校驗(yàn),停止位的位數(shù)等參數(shù)。
⑹狀態(tài)寄存器。狀態(tài)寄存器中存放著接口的各種狀態(tài)信息,例如輸出緩沖區(qū)是否空,輸入字符是否準(zhǔn)備好等。在通信過程中,當(dāng)符合某種狀態(tài)時(shí),接口中的狀態(tài)檢測邏輯將狀態(tài)寄存器的相應(yīng)位置“1”,以便讓CPU查詢。
UART數(shù)據(jù)傳輸流程:
(1)UART的TXD通常情況處于高電平的狀態(tài)
(2)UART準(zhǔn)備傳輸數(shù)據(jù)的時(shí)候,TXD從高電平轉(zhuǎn)變?yōu)榈碗娖剑磸?變0)并維持一位的傳輸時(shí)間。這樣接收方在檢測到TXD傳輸?shù)碾娖接懈唠娖阶優(yōu)榈碗娖降臅r(shí)候準(zhǔn)備開始接收數(shù)據(jù)。
(3)UART一幀有5,6,7,8位的數(shù)據(jù),TXD由高電平轉(zhuǎn)變?yōu)榈碗娖讲⒈3忠晃坏臅r(shí)候開始傳輸數(shù)據(jù)。傳輸數(shù)據(jù)是一位一位的進(jìn)行高低電平傳輸。首先發(fā)送的是低位。
(4)UART如果使用校驗(yàn)位時(shí),在發(fā)送數(shù)據(jù)結(jié)束時(shí)候會(huì)緊跟著一位校驗(yàn)位。有兩種校驗(yàn)方法:奇校驗(yàn)和偶校驗(yàn)
(5)最后發(fā)送停止位,TXD數(shù)據(jù)線恢復(fù)到正常狀態(tài),停止位的長度有三種。1位,1.5位,2位
二、RS232介紹
個(gè)人計(jì)算機(jī)上的通訊接口之一,由電子工業(yè)協(xié)會(huì)(Electronic Industries Association,EIA) 所制定的異步傳輸標(biāo)準(zhǔn)接口。通常 RS-232 接口以9個(gè)引腳 (DB-9) 或是25個(gè)引腳 (DB-25) 的型態(tài)出現(xiàn),一般個(gè)人計(jì)算機(jī)上會(huì)有兩組 RS-232 接口,分別稱為 COM1 和 COM2。
在串行通訊時(shí),要求通訊雙方都采用一個(gè)標(biāo)準(zhǔn)接口,使不同的設(shè)備可以方便地連接起來進(jìn)行通訊。RS-232-C接口(又稱EIARS-232-C)是目前最常用的一種串行通訊接口。(“RS-232-C”中的“-C”只不過表示RS-232的版本,所以與“RS-232”簡稱是一樣的)
RS232的9針接口:
最右邊的是串口接口 統(tǒng)稱為RS232接口(封裝DB9)
通信過程中只有兩個(gè)腳參與通信
2腳:電腦的輸入RXD
3腳:電腦的輸出TXD 通過2 ,3 腳就可以實(shí)現(xiàn)全雙工(可同時(shí)收發(fā))的串行異步 通信
5腳:接地
RS232的引腳電路連接完成(就三個(gè)腳)
對于單片機(jī)
單片機(jī)的P3口是有兩個(gè)復(fù)用接口RXD 和TXD 這是單片機(jī)進(jìn)行串行通信的收發(fā)口 連接應(yīng)該錯(cuò)位的對應(yīng)到電腦的TDX RDX上
注意:單片機(jī)和rs232的電平標(biāo)準(zhǔn)是不一樣的(各種電平標(biāo)準(zhǔn)見另一word)
單片機(jī)的電平標(biāo)準(zhǔn) TTL電平 :+5V表示1 0V表示0
Rs232的電平標(biāo)準(zhǔn) +15/+13 V表示1 -15/-13 表示0
所以 單片機(jī)與電腦串口通信就應(yīng)該遵循下面的連接方式:
?
在單片機(jī)與上位機(jī)給出的rs232口之間 通過電平轉(zhuǎn)換電路(最上面圖中的Max232芯片) 實(shí)現(xiàn)TTL電平與RS232電平之間的轉(zhuǎn)換
三、RS485介紹
為擴(kuò)展應(yīng)用范圍,美國電子工業(yè)協(xié)會(huì)(EIA)又于1983年在RS-422基礎(chǔ)上制定了RS-485標(biāo)準(zhǔn),增加了多點(diǎn)、雙向通信能力,即允許多個(gè)發(fā)送器連接到同 一條總線上,同時(shí)增加了發(fā)送器的驅(qū)動(dòng)能力和沖突保護(hù)特性,擴(kuò)展了總線共模范圍,后命名為TIA/EIA-485-A標(biāo)準(zhǔn)。
RS485接口組成的半雙工網(wǎng)絡(luò),一般是兩線制(以前有四線制接法,只能實(shí)現(xiàn)點(diǎn)對點(diǎn)的通信方式,現(xiàn)很少采用),多采用屏蔽雙絞線傳輸。這種接線方式為總線式拓?fù)浣Y(jié)構(gòu)在同一總線上最多可以掛接32個(gè)結(jié)點(diǎn)。在RS485通信網(wǎng)絡(luò)中一般采用的是主從通信方式,即一個(gè)主機(jī)帶多個(gè)從機(jī)。很多情況下,連接RS-485通信鏈路時(shí)只是簡單地用一對雙絞線將各個(gè)接口的“A”、“B”端連接起來。RS485接口連接器采用DB-9的9芯插頭座,與智能終端RS485接口采用DB-9(孔),與鍵盤連接的鍵盤接口RS485采用DB-9(針)。
rs485特點(diǎn):
1. RS-485的電氣特性:采用差分信號正邏輯,邏輯“1”以兩線間的電壓差為+(2~6)V表示;邏輯”0“以兩線間的電壓差為-(2~6)V表示。接口信號電平比RS-232-C降低了,就不易損壞接口電路的芯片, 且該電平與TTL電平兼容,可方便與TTL電路連接。
2. RS-485的數(shù)據(jù)最高傳輸速率為10Mbps。
3. RS-485接口是采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗共模干擾能力增強(qiáng),即抗噪聲干擾性好。、
4. RS-485最大的通信距離約為1219m,最大傳輸速率為10Mbps,傳輸速率與傳輸距離成反比,傳輸速率越低,傳輸距離越長,如果需傳輸比RS-485最大通信距離更長的距離,需要加485中繼器。RS-485總線一般最大支持32個(gè)節(jié)點(diǎn),如果使用特制的485芯片,可以達(dá)到128個(gè)或者256個(gè)節(jié)點(diǎn),最大的可以支持到400個(gè)節(jié)點(diǎn)。
RS485通信原理:
RS485是一種在工業(yè)上作為數(shù)據(jù)交換的手段而廣泛使用的串行通信方式,數(shù)據(jù)信號采用差分傳輸方式,也稱作平衡傳輸,因此具有較強(qiáng)的抗干擾能力。它采用一對雙絞線,將其中一線定義為A,另一線定義為B。
通常情況下,RS485的信號在傳送出去之前會(huì)先分解成正負(fù)對稱的兩條線路(即我們常說的A、B信號線),當(dāng)?shù)竭_(dá)接收端后,再將信號相減還原成原來的信號。發(fā)送驅(qū)動(dòng)器A、B之間的正電平在+2~6V,是一個(gè)正1邏輯狀態(tài);負(fù)電平在-2~6V,是一個(gè)負(fù)0邏輯狀態(tài);另有一個(gè)信號地C。在RS485中還有一“使能”端。“使能”端是用于控制發(fā)送驅(qū)動(dòng)器與傳輸線的切斷與連接。當(dāng)“使能”端起作用時(shí),發(fā)送驅(qū)動(dòng)器處于高阻狀態(tài),稱作“第三態(tài)”,即它是有別于邏輯“1”與“0”的第三態(tài)。
接收端與發(fā)送端的電平邏輯規(guī)定,收、發(fā)端通過平衡雙絞線將AA與BB對應(yīng)相連,當(dāng)在接收端AB之間(DT)=(D+)-(D-)有大于+200mV的電平時(shí),輸出正邏輯電平,小于-200mV時(shí),輸出負(fù)邏輯電平。接收器接收平衡線上的電平范圍通常在200mV~6V之間。
例如:發(fā)送“1”時(shí),驅(qū)動(dòng)器收到控制器發(fā)送來的高電平,之后A端輸出高電平,B端輸出低電平;接收器A端收到高電平,B端收到低電平,兩個(gè)信號相減得到“1”。同理,發(fā)送“0”時(shí),驅(qū)動(dòng)器收到控制發(fā)送來的低電平,之后A、B兩端分別輸出低、高電平,接收端A、B則接收到低、高電平,兩個(gè)信號相減后得到“0”。
如果受到干擾,則接收端AB之間(DT)=[(D+)+Noise]-[(D-)+Noise]= (D+)-(D-),由此可以看出干擾信號被消除。
四、串口uart和RS232,RS485聯(lián)系
串口通訊是電子工程師和嵌入式開發(fā)工程師面對的最基本問題,RS232則是其中最簡單最常用的通訊方式。但是初學(xué)者往往搞不清有關(guān)的名詞如UART和RS232或RS485之間是什么關(guān)系,因?yàn)樗鼈兘?jīng)常被放到語句中同等的位置使用。在百度搜索二者的區(qū)別,可以看到排在最前面的答案充斥著混淆的概念。就此,談?wù)勎覍@幾個(gè)概念的理解,希望能幫初學(xué)者厘清它們之間的關(guān)系。
通訊問題,和交通是一樣的。串口通信,我們這里可以用公交來類比。
公交運(yùn)行可以簡單分成兩個(gè)部分:
1、車站
2、公路
其中車站決定了車上裝什么(人),怎么發(fā)送(班次)等。
當(dāng)汽車跑在路上,就要遵守公路交通的規(guī)則,過橋有過橋的規(guī)則,高速有高速的規(guī)則,和車站沒有關(guān)系了。
回到串口通訊,其實(shí),UART就相當(dāng)于車站,而RS232/RS485則對應(yīng)于公路的規(guī)則。
UART,是通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),既然是“器”,顯然,它就是個(gè)設(shè)備而已,要完成一個(gè)特定的功能的硬件,它本身并不是協(xié)議。那么它要完成什么功能呢?它的最基本功能,是串行數(shù)據(jù)和并行數(shù)據(jù)之間的轉(zhuǎn)換。我們知道,計(jì)算機(jī)中的數(shù)據(jù)以Byte為基本單位,對一個(gè)Byte的存取是并行的,即,同時(shí)取得/寫入8個(gè)bit。而串行通信,需要把這個(gè)Byte“打碎”,按照時(shí)間順序來收發(fā)以實(shí)現(xiàn)串行。例如:
內(nèi)存中的數(shù)據(jù)是: 1 1 1 0 0 1 0 1
串行發(fā)送的實(shí)際效果是(按時(shí)間排序【注1】):
1
0
1
0
0
1
1
1
接收則是上述過程的逆過程。
這就是UART做的最基本工作,進(jìn)一步的,它還要控制“發(fā)車的班次”,比如確認(rèn)一個(gè)Byte的這8個(gè)bit是什么時(shí)候開始的,又是什么時(shí)候結(jié)束的,兩個(gè)班次之間至少要隔多長時(shí)間的緩沖,等等。這一部分,也具有協(xié)議的特征,但是相對于道路上的協(xié)議,更具有一般性,或曰,是與車在什么道路上開,相對獨(dú)立的。
那么道路上的規(guī)定是什么樣的呢?
RS232/RS485,是兩種不同的電氣協(xié)議,也就是說,是對電氣特性以及物理特性的規(guī)定,作用于數(shù)據(jù)的傳輸通路上,它并不內(nèi)含對數(shù)據(jù)的處理方式。比如,最顯著的特征是:RS232使用3-15v有效電平,而UART,因?yàn)閷﹄姎馓匦圆]有規(guī)定,所以直接使用CPU使用的電平,就是所謂的TTL電平(可能在0~3.3V之間)。更具體的,電氣的特性也決定了線路的連接方式,比如RS232,規(guī)定用電平表示數(shù)據(jù),因此線路就是單線路的,用兩根線才能達(dá)到全雙工的目的;而RS485, 使用差分電平表示數(shù)據(jù),因此,必須用兩根線才能達(dá)到傳輸數(shù)據(jù)的基本要求,要實(shí)現(xiàn)全雙工,必需用4根線。但是,無論使用RS232還是RS485,它們與UART是相對獨(dú)立的,但是由于電氣特性的差別,必須要有專用的器件和UART接駁,才能完成數(shù)據(jù)在線路和UART之間的正常流動(dòng)。
RS232甚至規(guī)定了接口的具體樣式,圖為DB9接口
總結(jié):
從某種意義上,可以說,線路上存在的僅僅是電流,RS232/RS485規(guī)定了這些電流在什么樣的線路上流動(dòng)和流動(dòng)的樣式;在UART那里,電流才被解釋和組裝成數(shù)據(jù),并變成CPU可直接讀寫的形式。
評論
查看更多