- 嵌入式 MCGS 串口通信快速入門及編程實例
- 張輝
- 6820字
- 2019-11-15 19:11:56
3.3 串行通信接口標準
在數據通信、計算機網絡以及分布式工業控制系統中,經常采用串行通信來交換數據和信息。串行通信接口標準經過長期使用和發展,已經形成幾種成熟的標準和規范,如EIA RS-232C、RS-422A、EIA RS-423A和EIA RS-485。
1969年,RS-232C作為串行通信接口的電氣標準定義了數據終端設備(Data Terminal Equipment,DTE)和數據通信設備(Data Communication Equipment,DCE)之間按位串行傳輸的接口信息,合理安排了接口的電氣信號和機械要求,在世界范圍內得到了廣泛的應用。但它采用單端驅動非差分接收電路,因而存在著傳輸距離不太遠(最大傳輸距離15m)和傳送速率不太高(最大位速率為20kbit/s)的問題。而遠距離串行通信必須使用MODEM,增加了成本。在分布式控制系統和工業局部網絡中,傳輸距離常介于近距離(<20m)和遠距離(>2km)之間,這時RS-232C(25腳連接器)不能采用,用MODEM又不經濟,因而需要制定新的串行通信接口標準。
1977年,美國電子工業協會制定了RS-449。它除了保留與RS-232C兼容的特點外,還在提高傳輸速率、增加傳輸距離及改進電氣特性等方面作了很大努力,并增加了10個控制信號。與RS-449同時推出的還有RS-422和RS-423,它們是RS-449的標準子集。
為改進RS-232通信距離短、速率低的缺點,RS-422標準規定采用平衡驅動差分接收電路,將傳輸速率提高到10Mbit/s,傳輸距離延長到4000ft1(速率低于100kbit/s時),并允許在一條平衡總線上連接最多10個接收器。RS-422是一種單機發送、多機接收的單向、平衡傳輸規范,被命名為TIA/EIA-422-A標準。
RS-423標準規定采用單端驅動差分接收電路,其電氣性能與RS-232C幾乎相同,兩者均是全雙工的。并設計成可連接RS-232C和RS-422。它一端可與RS-422連接,另一端則可與RS-232C連接,提供了一種從舊技術到新技術過渡的手段。同時又提高位速率(最大為300kbit/s)和傳輸距離(最大為600m)。
為擴展應用范圍,EIA又于1983年在RS-422基礎上制定了RS-485 標準,增加了多點、雙向通信能力,即允許多個發送器連接到同一條總線上,同時增加了發送器的驅動能力和沖突保護特性,擴展了總線共模范圍,后命名為TIA/EIA-485-A標準。因RS-485為半雙工的,當用于多站互連時可節省信號線,便于高速、遠距離傳送。許多智能儀器設備均配有RS-485總線接口,將它們聯網也十分方便。
串行通信由于接線少、成本低,在數據采集和控制系統中得到了廣泛的應用,產品也越來越豐富多樣。
3.3.1 RS-232C標準
RS-232C標準的全稱是EIA-RS-232C標準,其中EIA(Electronic Industries Alliance)代表美國電子工業協會,RS(Recommended Standard)代表推薦標準,232是標識號,C代表RS-232的最新一次修改(1969年),說明在此之前有RS-232A和RS-232B兩個標準。RS-232C標準的全名是“數據終端設備和數據通信設備之間串行二進制數據交換接口技術標準”。它是目前最常用的一種串行通信接口,1969年正式公布實施,1970年由美國電子工業協會聯合貝爾系統、調制解調器廠家及計算機終端生產廠家共同制定。該標準規定了串行通信接口的連接電纜、機械特性、電氣特性、信號功能及傳送過程。最初,該標準規定采用一個25針引腳的DB-25連接器,對連接器的每個引腳的信號內容加以定義,還對各種信號的電平加以規定,適合于數據傳輸速率在0~20000bit/s范圍內的通信;之后,IBM的PC機將RS-232簡化成了DB-9連接器,從而成為事實標準;而工業控制的RS-232一般只使用RxD、TxD和GND三條線。
RS-232C標準最初是為遠程通信連接數據終端設備與數據通信設備而制定的。因此這個標準的制定,并未考慮計算機系統的應用要求,但目前它又廣泛地被借來用于計算機(更準確地說,是計算機接口)與終端或外設之間的近端連接標準。顯然,這個標準的有些規定和計算機系統是不一致的,甚至是相矛盾的。因此,有時RS-232C標準會出現計算機不兼容的問題。RS-232C標準中所提到的“發送”和“接收”,都是站在DTE立場上,而不是站在DCE的立場來定義的。由于在計算機系統中,往往是CPU和I/O設備之間傳送信息,兩者都是DTE,因此雙方都能發送和接收。
由于設備廠商都生產與RS-232C標準兼容的通信設備,因此,它作為一種標準,目前已在微機通信接口中廣泛采用。
3.3.1.1 電氣特性
EIA-RS-232C對電氣特性、邏輯電平和各種信號功能都作了規定。
在TxD和RxD數據線上:
邏輯1(MARK)=-3~-15V;
邏輯0(SPACE)=+3~+15V。
在RTS、CTS、DSR、DTR和DCD等控制線上:
信號有效(接通,ON狀態,正電壓)=+3~+15V;
信號無效(斷開,OFF狀態,負電壓)=-3~-15V。
以上規定說明了RS-323C標準對邏輯電平的定義。對于數據(信息碼),邏輯“1”(傳號)的電平低于-3V,邏輯“0”(空號)的電平高于+3V;對于控制信號,接通狀態(ON),即信號有效的電平高于+3V,斷開狀態(OFF),即信號無效的電平低于-3V,也就是當傳輸電平的絕對值大于3V時,電路可以被有效地檢查出來,介于-3~+3V之間的電壓無意義,低于-15V或高于+15V的電壓也無意義。因此,實際工作時,應保證電平在±(3~15)V之間。
EIA-RS-232C在數據線上用+3~+15V表示0,-3~-15V表示1,而晶體管-晶體管邏輯集成電路(TTL)用3.3V高電平表示1,0.0V低電平表示0,兩者對邏輯狀態的規定正好相反,電平高低也不同。因此,為了能夠同計算機接口或終端的TTL器件連接,必須在EIA-RS-232C與TTL電路之間進行電平和邏輯關系的變換,實現這種變換的方法可用分立元件,也可用集成電路芯片。
目前較為廣泛地使用集成電路轉換器件,如MC1488、SN75150芯片可完成TTL電平到EIA電平的轉換,而MC1489、SN75154可實現EIA電平到TTL電平的轉換。MAX232芯片可完成TTLEIA雙向電平轉換,圖3-21顯示了MC1488和MC1489的內部結構和引腳。MC1488的引腳2、4、5、9、10和12、13接TTL輸入。引腳3、6、8、11輸出端接EIA-RS-232C。MC1489的1、4、10、13腳接EIA輸入,而3、6、8、11腳接TTL輸出。

圖3-21 MC1488和MC1489芯片的內部結構和引腳示意圖
具體連接方法如圖3-22所示,圖中的左邊是微機串行接口電路中的主芯片,通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter,UART),它是TTL器件,右邊是EIA-RS-232C連接器,要求高電壓。因此,RS-232C所有的輸出、輸入信號都要分別經過MC1488和MC1489轉換器,進行電平轉換和邏輯轉換后才能送到連接器或從連接器送進來。

圖3-22 TTL電平與EIA電平轉換關系示意圖
3.3.1.2 連接器的機械特性
(1)連接器 由于RS-232C并未定義連接器的物理特性,因此,出現了DB-25和DB-9各種類型的連接器,其引腳的定義也各不相同,下面分別介紹DB-25和DB-9兩種主要連接器。
①DB-25連接器 PC和XT機采用DB-25型連接器,DB-25型連接器定義了25根信號線,分為4組:
a.異步通信的9個電壓信號(含信號地SG,Signal Ground),即2,3,4,5,6,7,8,20,22;
b. 20mA電流環信號9個(12,13,14,15,16,17,19,23,24);
c.空引腳6個(9,10,11,18,21,25),備用;
d.保護地(Protective Earth,PE)1個,作為設備接地端(1)。
DB-25型連接器的外形及信號線分配如圖3-23所示。

圖3-23 DB-25型與DB-9型連接器的外形及信號線分配示意圖
注意:20mA電流環信號僅IBM PC和IBM PC/XT機提供,AT機及以后機型,已不支持。
②DB-9連接器 在AT機及以后,不支持20mA電流環接口,使用DB-9連接器,作為提供多功能I/O卡或主板上COM1和COM2兩個串行接口的連接器。它只提供異步通信的9個信號。DB-9型連接器的引腳分配與DB-25型引腳信號完全不同。因此,若與配接DB-25型連接器的DCE設備連接,必須使用專門的電纜線。通常,一些設備與PC機的RS-232口相連時,由于不使用控制信號,因此,只需三條接口線,即發送數據TxD、接收數據RxD和電源地GND。RS-232傳輸線采用屏蔽雙絞線。
(2)最大直接傳輸距離 RS-232C標準規定,若不使用MODEM(Modulator and Demodulator),在碼元畸變小于4%的情況下,DTE和DCE之間最大傳輸距離為15m(50ft),可見這個最大的距離是在碼元畸變小于4%的前提下給出的。為了保證碼元畸變小于4%的要求,接口標準在電氣特性中規定,驅動器的負載電容應小于2500pF,此時的通信速率低于20kbit/s,其實,4%的碼元畸變是很保守的,在實際應用中,約有99%的用戶是按碼元畸變10%~20%的范圍工作的。因此,實際傳輸的最大距離會遠超過15m。美國DEC(Digital Equipment Corporation)公司曾規定允許碼元畸變為10%,采用兩種電纜測得信號的最大傳輸距離,實驗結果如表3-3所示。其中1#電纜為屏蔽電纜,內有三對雙絞線,每對由22 AWG(American Wire Gauge)組成,外層覆以屏蔽網;2#電纜為不帶屏蔽的電纜,內有22 AWG的四芯電纜。AWG指的是美國線標分類,數字越大,線越細,電阻越大。從實驗結果可以看出,對于同一種電纜,隨著距離的延長,電阻增加,信號衰減增強,傳輸波特率降低;外層覆屏蔽網的電纜對于信號的衰減起到緩沖作用,加屏蔽網的電纜傳輸距離明顯優于未加屏蔽網的電纜,說明屏蔽電纜在串行通信中對高速波特率信號的傳輸起到了至關重要的作用。
表3-3 不同波特率下信號的最大傳輸距離

多年來,隨著RS-232器件以及通信技術的改進,RS-232通信距離已經大大增加。采用RS-232增強器后可以將普通的RS-232口的通信距離直接延長到1000m;如果采用射頻技術,其傳輸半徑可以達到5000m。
3.3.1.3 RS-232C的接口信號
RS-232C標準接口有25條線,即4條數據線、11條控制線、3條定時線、7條備用線和未定義線,常用的只有9根。
(1)聯絡控制信號線 數據裝置準備好(Data Set Ready,DSR)——有效時(ON)狀態,表明MODEM處于可以使用的狀態。
數據終端準備好(Data Terminal Ready,DTR)——有效時(ON)狀態,表明數據終端可以使用。
這兩個信號有時連到電源上,一上電就立即有效。這兩個設備狀態信號有效,只表示設備本身可用,并不說明通信鏈路可以開始進行通信了,能否開始進行通信要由下面的控制信號決定。這與家里的電話機非常相似,電話機有電可以打電話,但是撥的電話號碼不一定通,相當于通信鏈路處于不確定狀態。
請求發送(Request To Send,RTS)——用來表示DTE請求DCE發送數據,即當終端要發送數據時,使該信號有效(ON狀態),向MODEM請求發送。它用來控制MODEM是否要進入發送狀態。
允許發送(Clear To Send,CTS)——用來表示DCE準備好接收DTE發來的數據,是對請求發送信號RTS的響應信號。當MODEM已準備好接收終端傳來的數據,并向前發送時,使該信號有效,通知終端開始沿發送數據線TxD發送數據。
RTS/CTS請求應答聯絡信號用于半雙工MODEM系統中發送方式和接收方式之間的切換。在全雙工系統中,因配置雙向通道,故不需要RTS/CTS聯絡信號,使其變高。
接收線信號檢出(Received Line Detection,RLSD)——用來表示DCE已接通通信鏈路,告知DTE準備接收數據。當本地的MODEM收到由通信鏈路另一端(遠地)的MODEM送來的載波信號時,使RLSD信號有效,通知終端準備接收,并且由MODEM將接收下來的載波信號解調成數字數據后,沿接收數據線RxD送到終端。此線也叫做數據載波檢出(Data Carrier Dectection,DCD)線。
振鈴指示(Ringing,RI)——當MODEM收到交換臺送來的振鈴呼叫信號時,使該信號有效(ON狀態),通知終端,已被呼叫。
(2)數據發送與接收線 發送數據(Transmitted Data,TxD)——終端通過TxD將串行數據發送到MODEM,(DTE→DCE)。
接收數據(Received Data,RxD)——終端通過RxD線接收從MODEM發來的串行數據,(DCE→DTE)。
(3)地線 有兩根線SG(Signal Ground)、PG(Protective Ground)——信號地和保護地信號線,無方向。
上述控制信號線何時有效、何時無效的順序表示了接口信號的傳送過程。例如,只有當DSR和DTR都處于有效(ON)狀態時,才能在DTE和DCE之間進行傳送操作。若DTE要發送數據,則預先將DTR線置成有效(ON)狀態,等CTS線上收到有效(ON)狀態的回答后,才能在TxD線上發送串行數據。這種順序的規定對半雙工的通信線路特別有用,因為半雙工的通信需要確定DCE已由接收方向改為發送方向,這時數據才能開始發送。
如果將上述過程形容為打電話,DTE與DCE相當于通信雙方的電話機;DSR和DTR相當于雙方的電話機都處于上電狀態;RTS和CTS相當于建立通話,確認對方是自己想要找的人;TxD和RxD相當于兩人說話的具體內容。
3.3.2 RS-422與RS-485標準
RS-422、RS-485與RS-232不一樣,其區別如表3-4所示。數據信號采用差分傳輸方式,也稱作平衡傳輸,它使用一對雙絞線,將其中一根線定義為A,另一根線定義為B。通常情況下,發送驅動器A、B之間的正電平在+2~+6V之間,是一個邏輯狀態,負電平在-2~-6V之間,是另一個邏輯狀態。另有一個信號地C,在RS-485中還有一“使能”端,而在RS-422中這是可用可不用的。“使能”端用于控制發送驅動器與傳輸線的切斷與連接。當“使能”端起作用時,發送驅動器處于高阻狀態,稱作“第三態”,即它是有別于邏輯“1”與“0”的第三態。
表3-4 RS-232、RS-422與RS-485接口標準間的比較

接收器也作與發送端相對的規定,收、發端通過平衡雙絞線將AA與BB對應相連,在發送端,邏輯1表示AB兩線之間的電壓差為+2~+6V;邏輯0表示兩線之間的電壓差為-2~-6V。在接收端,當在AB兩線之間有大于+200mV的電平時,輸出正邏輯電平,小于-200mV時,輸出負邏輯電平。接收器接收平衡線上的電平范圍通常在200mV~6V之間。這樣,隨著線路的延長,電阻增加,傳輸信號在電線上開始衰減,由于采用差分電路,A與B上的信號同時衰減,兩者之差很容易保持一個固定值,這是差分驅動與單端驅動的本質差別。
3.3.2.1 RS-422電氣規定
RS-422標準全稱是“平衡電壓數字接口電路的電氣特性”,它定義了接口電路的特性。由于接收器采用高輸入阻抗和發送驅動器,比RS-232具有更強的驅動能力,因此允許在相同傳輸線上連接多個接收節點,最多可接10個節點。即一個主設備(Master),其余為從設備(Salve),從設備之間不能通信,所以RS-422支持一點對多點的雙向通信。接收器輸入阻抗為4kΩ,故發送端最大負載能力是10×4kΩ+100Ω(終接電阻)。RS-422四線接口由于采用單獨的發送和接收通道,因此不必控制數據方向,各裝置之間任何必需的信號交換均可以按軟件方式(XON/XOFF握手)或硬件方式(一對單獨的雙絞線)實現。
RS-422的最大傳輸距離為4000ft(約1219m),最大傳輸速率為10Mbps。其平衡雙絞線的長度與傳輸速率成反比,在100kbps速率以下,才可能達到最大傳輸距離。只有在很短的距離下才能獲得最高傳輸速率。一般100m長的雙絞線上所能獲得的最大傳輸速率僅為1Mbps。RS-422需要一終接電阻,要求其阻值約等于傳輸電纜的特性阻抗。在短距離傳輸時可不需要終接電阻,即一般在300m以下不需要終接電阻。終接電阻接在傳輸電纜的最遠端。RS-422轉換器與RS-422設備之間的4條導線最好是銅芯雙絞線,如遠傳可適當增加導線直徑。RS-422型轉換器之間以及轉換器與設備之間互連信號定義如表3-5所示。
表3-5 RS-422型轉換器之間以及轉換器與設備之間互連信號定義

3.3.2.2 RS-485電氣規定
由于RS-485是在RS-422基礎上發展而來的,因此RS-485許多電氣規定與RS-422相似,如都采用平衡傳輸方式、都需要在傳輸線上接終接電阻等。RS-485可以采用二線與四線方式,二線制可實現真正的多點雙向通信。而采用四線連接時,與RS-422一樣只能實現一點對多點的通信,即只能有一個主(Master)設備,其余為從設備,但它比RS-422有改進,無論是二線還是四線連接方式,總線都可以連接多達32個設備。
RS-485通信線由兩根雙絞線組成,它通過兩根通信線之間的電壓差的方式來傳遞信號,因此稱之為差分電壓傳輸。差模干擾在兩根信號線之間傳輸,屬于對稱性干擾。消除差模干擾的方法是在電路中增加一個偏值電阻,并采用雙絞線。RS-485的電氣特性規定,在發送端,邏輯1以兩線之間的電壓差為+2~+6V表示;邏輯0以兩線之間的電壓差為-2~-6V表示;在傳輸過程中,由于電纜存在電阻,當距離增加時,電壓在電纜上的壓降增大,因此,在接收端,規定A線比B線高200mV以上即認為是邏輯1,A線比B線低200mV以上即認為是邏輯0,這樣,傳輸信號的穩定性大大增強。
RS-485的最高傳輸速率為10Mbps,但是,由于RS-485常常與PC機的RS-232口通信,因此實際上一般最高只有115.2kbps,又由于太高的速率會使RS-485傳輸距離減小,因此往往以9600bps或更低速率傳輸。
在使用RS-485接口時,對于特定的傳輸線路,從發生器到負載,其數據信號傳輸所允許的最大電纜長度是數據信號速率的函數,這個長度數據主要受信號失真及噪聲等影響。最大電纜長度與信號速率的關系曲線是使用24AWG銅芯雙絞電話電纜(線徑為0.51mm),線間旁路電容為52.5pF/m,終端負載電阻為100Ω時所得出。當數據信號速率降低到90kbps以下時,假定最大允許的信號損失為6dBV,則電纜長度被限制在1200m,實際上可達3000m。平衡雙絞線的長度與傳輸速率成反比,在100kbps速率以下,才可能使用規定最長的電纜長度,只有在很短的距離下才能獲得最高速率傳輸,一般100m長雙絞線最大傳輸速率僅為1Mbps。
當使用不同線徑的電纜時,計算得到的最大電纜長度是不相同的。例如:當數據信號速率為600kbps時,采用24AWG電纜,最大電纜長度是200m;若采用19AWG電纜(線徑為0.91mm),則電纜長度可以大于200m;若采用28AWG電纜(線徑為0.32mm),則電纜長度只能小于200m。RS-485的遠距離通信建議采用屏蔽電纜,并且將屏蔽層作為地線。
RS-485接口采用平衡驅動器和差分接收器的組合,抗噪聲干擾性好;而且,總線收發器具有高靈敏度,能檢測低至200mV的電壓,故傳輸信號能在千米以外得到恢復;此外,RS-485接口在總線上允許連接多達128個收發器,即RS-485具有多機通信能力,這樣用戶可以利用單一的RS-485接口方便地建立起設備網絡。因此,長距離傳輸和多站能力等優點使其成為首選的串行接口。RS-485采用半雙工工作方式,任何時候只能有一點處于發送狀態。因此,發送電路須由使能信號加以控制。RS-485一般只需兩根信號線,均采用屏蔽雙絞線傳輸,用于多點互連時非常方便,可以省掉許多信號線。
RS-485與RS-422的不同還在于其共模輸出電壓是不同的,RS-485在-7~+12V之間,而RS-422在-7~+7V之間;RS-485滿足所有RS-422的規范,所以RS-485的驅動器可以用在RS-422網絡中。RS-485需要2個終接電阻,其阻值要求等于傳輸電纜的特性阻抗。在短距離傳輸時可不需要終接電阻,即一般在300m以下不需要終接電阻。終接電阻接在傳輸總線的兩端。RS-485型轉換器之間以及轉換器與設備之間互連信號定義如表3-6所示。
表3-6 RS-485型轉換器之間以及轉換器與設備之間互連信號定義

RS-485 的國際標準并沒有規定RS-485的接口連接器標準,所以采用接線端子或者DB-9或DB-25等連接器均可。目前,RS-485接口是事實工業標準。