UART、RS232、RS422和RS485解讀
串口通訊是硬件工程師經(jīng)常接觸的一個(gè)概念,你是否也分不清RS232、RS422、RS485、UART它們之間的關(guān)系,每次見(jiàn)到其中的一個(gè),就像見(jiàn)到熟悉的陌生人,雖說(shuō)認(rèn)識(shí),卻不知道它有什么特點(diǎn),殊途同歸的感覺(jué)。
先來(lái)一段網(wǎng)上比較精辟的總結(jié)。
公交運(yùn)行可以簡(jiǎn)單分成兩個(gè)部分:
1、車站
2、公路
其中車站決定了車上裝什么(人),怎么發(fā)送(班次)等。
當(dāng)汽車跑在路上,就要遵守公路交通的規(guī)則,過(guò)橋有過(guò)橋的規(guī)則,高速有高速的規(guī)則,和車站沒(méi)有關(guān)系了。
回到串口通訊,其實(shí),UART就相當(dāng)于車站,而RS232/RS485則對(duì)應(yīng)于公路的規(guī)則。
UART,是通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),既然是“器”,顯然,它就是個(gè)設(shè)備而已,要完成一個(gè)特定的功能的硬件,它本身并不是協(xié)議。那么它要完成什么功能呢?它的最基本功能,是數(shù)據(jù)收發(fā)和串并轉(zhuǎn)換。也就相當(dāng)于車站,決定裝什么人以及怎么樣把人裝上去。
RS232/RS485,是兩種不同的電氣協(xié)議,也就是說(shuō),是對(duì)電氣特性以及物理特性的規(guī)定,作用于數(shù)據(jù)的傳輸通路上,它并不內(nèi)含對(duì)數(shù)據(jù)的處理方式。比如,最顯著的特征是:RS232使用3-15v有效電平,而UART,因?yàn)閷?duì)電氣特性并沒(méi)有規(guī)定,所以直接使用CPU使用的電平,就是所謂的TTL電平(可能在0~3.3V之間)。更具體的,電氣的特性也決定了線路的連接方式,比如RS232,規(guī)定用電平表示數(shù)據(jù),因此線路就是單線路的,用兩根線才能達(dá)到全雙工的目的;而RS485, 使用差分電平表示數(shù)據(jù)(邏輯“1”為+(2-6)V,邏輯“0”為-(2-6)V),因此,必須用兩根線才能達(dá)到傳輸數(shù)據(jù)的基本要求,要實(shí)現(xiàn)全雙工,必需用4根線。但是,無(wú)論使用RS232還是RS485,它們與UART是相對(duì)獨(dú)立的,但是由于電氣特性的差別,必須要有專用的器件和UART接駁(例如MAX232),實(shí)現(xiàn)電平轉(zhuǎn)換,才能完成數(shù)據(jù)在線路和UART之間的正常流動(dòng)。
總結(jié):從某種意義上,可以說(shuō),線路上存在的僅僅是電流,RS232/RS485規(guī)定了這些電流在什么樣的線路上流動(dòng)和流動(dòng)的形式;在UART那里,電流才被解釋和組裝成數(shù)據(jù),并變成CPU可直接讀寫的形式。
RS232簡(jiǎn)介
①RS232接口符合由美國(guó)電子工業(yè)協(xié)會(huì)(EIA)制定的串行數(shù)據(jù)通信接口標(biāo)準(zhǔn)。它被廣泛應(yīng)用于計(jì)算機(jī)串行接口外設(shè)連接。
②電氣特性:RS232接口任何一條信號(hào)線的電壓均為負(fù)邏輯關(guān)系。即:邏輯“1”為-3—-15V;邏輯“0”:+3—+15V,噪聲容限為2V。即要求接收器能識(shí)別高于+3V的信號(hào)作為邏輯“0”,低于-3V的信號(hào)作為邏輯“1”,TTL電平為5V為邏輯正,0為邏輯負(fù)。與TTL電平不兼容故需使用電平轉(zhuǎn)換電路方能與TTL電路連接。
③接口使用一組收發(fā)線構(gòu)成共地的傳輸形式,這種傳輸方式很容易受到共模信號(hào)的干擾,因此抗噪聲干擾性弱。
④傳輸速率較低,傳輸距離有限,實(shí)際應(yīng)用中只能在15米左右。
⑤RS232常用的3線制連接方式為2、3交叉5直連,即兩個(gè)接口之間TXD和RXD互聯(lián),GND直接連接,其余接口不連接。其余接口連接時(shí)起流控作用,這里的“流”指的是數(shù)據(jù)流。數(shù)據(jù)在數(shù)據(jù)線上進(jìn)行傳輸難免會(huì)出現(xiàn)錯(cuò)誤,為了減少錯(cuò)誤的發(fā)生,某些應(yīng)用條件下需要流控信號(hào)來(lái)進(jìn)行信號(hào)傳輸過(guò)程的控制。
RS485簡(jiǎn)介
①在通信距離要求為幾十米到上千米時(shí),廣泛采用RS485串行通信總線。能達(dá)到長(zhǎng)傳輸距離,主要原因是它采用平衡發(fā)送和差分接收,具有抑制共模信號(hào)干擾的能力。
②電氣特性:邏輯“1”以兩線間的電壓差+2V~+6V表示,邏輯“0”以兩線間的電壓差-6V~-2V表示。接口信號(hào)電平比RS-232-C降低了,就不容易損壞接口電路芯片,且該電平與TTL電平兼容,刻方便與TTL電路連接。
③RS-485接口的最大傳輸距離實(shí)際上可達(dá)3000米。
④RS-232-C接口在總線上只允許連接一個(gè)收發(fā)器,即單站能力;而RS-485接口在總線上只允許連接多達(dá)128個(gè)收發(fā)器,即具有多站能力,這樣用戶可以利用單一的RS-485接口方便地建立設(shè)備網(wǎng)絡(luò)。
⑤RS485半雙工接法為:RX+和TX+并聯(lián)為Data+;RX-和TX-并聯(lián)為Data-。
RS422簡(jiǎn)介
①RS-422標(biāo)準(zhǔn)全稱是“平衡電壓數(shù)字接口電路的電氣特性”,它定義了接口電路的特性。實(shí)際上還有一根信號(hào)地線,共5根線。由于接收器采用高輸入阻抗和發(fā)送驅(qū)動(dòng)器比RS232更強(qiáng)的驅(qū)動(dòng)能力,故允許在相同傳輸線上連接多個(gè)接收節(jié)點(diǎn),最多可接10個(gè)節(jié)點(diǎn)。一個(gè)主設(shè)備(Master),其余為從設(shè)備(Slave),從設(shè)備之間不能通信,所以RS-422支持點(diǎn)對(duì)多的雙向通信。接收器輸入阻抗為4k,故發(fā)端最大負(fù)載能力是10×4k+100Ω(終接電阻)。
②電氣特性:RS422的電氣特性與RS485完全一樣。主要區(qū)別:RS422有4根信號(hào)線:兩根發(fā)送(TXD+、TXD-)、兩根接收(RXD+、RXD-)。由于RS-422的收與發(fā)是分開(kāi)的所以可以同時(shí)接收和發(fā)送(全雙工)。
RS232/RS485/RS422三者間的區(qū)別
1、RS232是全雙工的,RS485是半雙工的,RS422是全雙工的。
2、RS485與RS232僅僅是通訊的物理協(xié)議(即接口標(biāo)準(zhǔn))有區(qū)別,RS485是差分傳輸方式,RS232是單端傳輸方式,但通訊程序沒(méi)有太多的差別。
PC機(jī)上已經(jīng)配備有RS232,直接使用就行了,若使用RS485通訊,只要在RS232端口上配接一個(gè)RS232轉(zhuǎn)RS485的轉(zhuǎn)換頭就可以了,不需要修改程序。