技術交(jiao)流
串行通(tong)信接口(kou)标準經(jing)過使用(yong)和發展(zhan),目前已(yi)經有幾(ji)種…。但都(dou)是在 RS-232标(biao)準的基(ji)礎上經(jing)過改進(jin)而形成(cheng)的。所以(yi)💯,以RS-232C爲主(zhu)來讨論(lun)。RS-323C标準是(shi)美國EIA(電(dian)子工業(ye)聯合會(hui))與BELL等公(gong)司一起(qi)開發的(de)1969年公布(bu)的通信(xin)協議。它(ta)适合于(yu)數據傳(chuan)輸🏊🏾♀️速率(lü)在0~20000b/s範圍(wei)内的通(tong)信。這個(ge)标準對(dui)串行通(tong)信接口(kou)的有關(guan)問題,如(ru)信号線(xian)功能、電(dian)器特性(xing)都作了(le)明确規(gui)定。由于(yu)通行設(she)備廠商(shang)都生産(chan)與RS-232C制式(shi)兼容的(de)通信設(she)備,因此(ci),它作爲(wei)一種标(biao)準,目前(qian)已在微(wei)機通🧜🏼♀️信(xin)接口中(zhong)廣泛采(cai)用。
本文(wen)引用地(di)址:http://eepw.com.cn/article/201702/344595.htm在讨(tao)論RS-232C接口(kou)标準的(de)内容之(zhi)前,先說(shuo)明兩點(dian):
首先,RS-232-C标(biao)準最初(chu)是遠程(cheng)通信連(lian)接數據(ju)終端設(she)備DTE(Data Terminal Equipment)與🔞數(shu)據通信(xin)設備DCE(Data CommunicaTIon Equipment)而(er)制定的(de)。因此這(zhe)個标準(zhun)的制定(ding),并…未考(kao)慮計算(suan)機系統(tong)的應用(yong)要求。但(dan)目前它(ta)又廣泛(fan)地被借(jie)來用于(yu)🏊🏿♀️計算機(ji)(更準确(que)的說,是(shi)計算機(ji)接口)與(yu)終端或(huo)外設之(zhi)間的近(jin)端連接(jie)标準。顯(xian)然,這個(ge)标👺準的(de)有些規(gui)定及和(he)計算機(ji)系統是(shi)不一緻(zhi)的,甚至(zhi)是相矛(mao)盾的🙂↔️。有(you)了對這(zhe)種背景(jing)的了解(jie),我們對(dui)RS-232C标準與(yu)計算機(ji)✋不兼容(rong)的地方(fang)就不難(nan)理👾解了(le)。
其次,RS-232C标(biao)準中所(suo)提到的(de)“發送”和(he)“接收”,都(dou)是站在(zai)DTE立場上(shang),而不是(shi)站在DCE的(de)立場來(lai)定義的(de)。由于在(zai)計算機(ji)系統中(zhong),往往是(shi)CPU和I/O設備(bei)之間傳(chuan)送信息(xi),兩者都(dou)是DTE,因此(ci)雙方都(dou)能發送(song)👽和接收(shou)。
一、RS-232-C
RS-232C标準(zhun)(協議)的(de)全稱是(shi)EIA-RS-232C标準,其(qi)中EIA(Electronic Industry AssociaTIon)代表(biao)美國電(dian)子工業(ye)協會,RS(ecommeded standard)代(dai)表推👱🏼♂️薦(jian)标準,232是(shi)标識号(hao),C代表RS232的(de)最新一(yi)次修🔞改(gai)(1969),在這之(zhi)前,有RS232B、RS232A。。它(ta)規定連(lian)接電纜(lan)和機械(xie)、電氣特(te)性、信号(hao)功能及(ji)傳送過(guo)程。常用(yong)物理标(biao)準還有(you)有EIA?RS-232-C、EIA?RS-422-A、EIA?RS-423A、EIA?RS-485。 這裏(li)~隻介紹(shao)EIA?RS-232-C(簡稱232,RS232)。 例(li)如,目前(qian)在IBM PC機上(shang)😥的COM1、COM2接口(kou),就是RS-232C接(jie)口。
RS232C引腳(jiao)定義
串(chuan)行口的(de)典型代(dai)表是RS-232C及(ji)其兼容(rong)插口,有(you)9針和25針(zhen)兩類。25針(zhen)串行口(kou)具有20mA電(dian)流環接(jie)口功能(neng),用9、11、18、25針來(lai)實現。其(qi)針腳功(gong)能🛌🏻如下(xia):
1.電氣特(te)性
EIA-RS-232C對電(dian)器特性(xing)、邏輯電(dian)平和各(ge)種信号(hao)線功能(neng)都作了(le)規定。
在(zai)TxD和RxD上:邏(luo)輯1(MARK)=-3V~-15V
邏輯(ji)0(SPACE)=+3~+15V
在RTS、CTS、DSR、DTR和DCD等(deng)控制線(xian)上:
信号(hao)有效(接(jie)通,ON狀态(tai),正電壓(ya))=+3V~+15V
信号無(wu)效(斷開(kai),OFF狀态,負(fu)電壓)=-3V~-15V
以(yi)上規定(ding)說明了(le)RS-323C标準對(dui)邏輯電(dian)平的定(ding)義。對于(yu)數據(信(xin)息😥碼👼🏾):邏(luo)輯“1”(傳号(hao))的電平(ping)低于-3V,邏(luo)輯“0”(空号(hao))的電平(ping)告語🙈+3V;對(dui)于控制(zhi)🤶🏾信号;接(jie)通狀态(tai)(ON)即信号(hao)有效的(de)電平高(gao)于+3V,斷開(kai)狀态(OFF)即(ji)信号無(wu)效的電(dian)平低于(yu)-3V,也就是(shi)當傳輸(shu)電平的(de)絕對值(zhi)大于3V時(shi),電👿路可(ke)以有🧜🏼♀️效(xiao)地檢查(cha)出來,介(jie)于-3~+3V之🔞間(jian)的電壓(ya)無意義(yi),低于-15V或(huo)高于+15V的(de)電壓也(ye)認爲無(wu)意㊙️義🙂↕️,因(yin)此,實際(ji)工作時(shi),應保證(zheng)電平在(zai)±(3~15)V之間。 字(zi)串2
EIA-RS-232C與TTL轉(zhuan)換:EIA-RS-232C是用(yong)正負電(dian)壓來表(biao)示邏輯(ji)狀态,與(yu)TTL以高低(di)電平表(biao)示邏輯(ji)
狀态的(de)規定不(bu)同。因此(ci),爲了能(neng)夠同計(ji)算機接(jie)口或終(zhong)😍端的🙈TTL器(qi)💁🏼♀️件連接(jie),必須在(zai)EIA-RS-232C與TTL電路(lu)之間進(jin)行電平(ping)和邏輯(ji)關系的(de)變🧑🏾🎄換。實(shi)現這種(zhong)變換的(de)方法可(ke)用分立(li)元件,也(ye)可用集(ji)成電路(lu)芯片。目(mu)前較爲(wei)廣泛地(di)使用集(ji)成電路(lu)轉換器(qi)件,如MC1488、SN75150芯(xin)片可完(wan)成TTL電平(ping)到EIA電平(ping)的轉換(huan),而MC1489、SN75154可實(shi)🧜🏼♂️現EIA電平(ping)到TTL電平(ping)的轉換(huan)。MAX232芯🧜🏼♀️片可(ke)完成TTL←→EIA雙(shuang)向電平(ping)轉換,圖(tu)🎅🏿1顯示了(le)1488和1489的内(nei)部結構(gou)和引腳(jiao)💌。MC1488的引腳(jiao)(2)、(4,5)、(9,10)和(12,13)接TTL輸(shu)入。引腳(jiao)3、6、8、11輸出端(duan)接EIA-RS-232C。MC1498的14的(de)1、4、10、13腳接EIA輸(shu)入,而3、6、8、11腳(jiao)接TTL輸出(chu)。具體連(lian)接方法(fa)如圖2所(suo)示。圖中(zhong)的左邊(bian)是微機(ji)串行接(jie)口電路(lu)中的主(zhu)👺芯片UART,它(ta)是TTL器件(jian),右邊是(shi)EIA-RS-232C連接器(qi),要求EIA高(gao)電壓。因(yin)此,RS-232C所有(you)的輸出(chu)、輸入信(xin)号都要(yao)分🧛🏾♀️别經(jing)過MC1488和MC1498轉(zhuan)^換器,進(jin)行電平(ping)轉換後(hou)才能送(song)到連接(jie)器上去(qu)或從連(lian)接器上(shang)送進來(lai)。
2、連接器(qi)的機械(xie)特性:
連(lian)接器: 由(you)于RS-232C并未(wei)定義連(lian)接器的(de)物理特(te)性,因此(ci),出現了(le)DB-25、DB-15和DB-9各😥種(zhong)類型的(de)連接器(qi),其引腳(jiao)的定義(yi)也各不(bu)相同。下(xia)面分别(bie)👨🦰介紹ˇ兩(liang)種👩🍼連接(jie)器。
(1)DB-25: PC和XT機(ji)采用DB-25型(xing)連接器(qi)。DB-25連接器(qi)定義了(le)25根信号(hao)線,分爲(wei)4組:
①異步(bu)通信的(de)9個電壓(ya)信号(含(han)信号地(di)SG)2,3,4,5,6,7,8,20,22
字串6
②20mA電(dian)流環信(xin)号 9個(12,13,14,15,16,17,19,23,24)
③空(kong)6個(9,10,11,18,21,25)
④保護(hu)地(PE)1個,作(zuo)爲設備(bei)接地端(duan)(1腳)
DB-25型連(lian)接器的(de)外形及(ji)信号線(xian)分配如(ru)圖3所示(shi)。注意,20mA電(dian)流環信(xin)号僅IBM PC和(he)IBM PC/XT機提供(gong),至AT機及(ji)以後,已(yi)不支持(chi)。
電纜長(zhang)度:在通(tong)信速率(lü)低于20kb/s時(shi),RS-232C所直接(jie)連接的(de)最大物(wu)理👧🏾距離(li)爲15m(50英尺(chi))。
最大直(zhi)接傳輸(shu)距離說(shuo)明:RS-232C标準(zhun)規定,若(ruo)不使用(yong)MODEM,在碼元(yuan)畸👽變小(xiao)于4%的情(qing)況下,DTE和(he)DCE之間最(zui)大傳輸(shu)距離爲(wei)15m(50英尺)。可(ke)見這😁個(ge)最大的(de)距離是(shi)在碼元(yuan)畸變小(xiao)于4%的前(qian)提下給(gei)出的。爲(wei)👩🏽🐰👩🏿了保證(zheng)碼元畸(ji)變小于(yu)4%的要求(qiu),接口标(biao)準在電(dian)氣特性(xing)中😁規定(ding),驅動器(qi)的負載(zai)電容應(ying)小于2500pF。
3、RS-232C的(de)接口信(xin)号
RS-232C規标(biao)準接口(kou)有25條線(xian),4條數據(ju)線、11條控(kong)制線、3條(tiao)定時線(xian)、7條備用(yong)和未定(ding)義線,常(chang)用的隻(zhi)有9根,它(ta)們是:
(1)聯(lian)絡控制(zhi)信号線(xian) :
數據裝(zhuang)置準備(bei)好(Data set ready-DSR)——有效(xiao)時(ON)狀态(tai),表明MODEM處(chu)于可以(yi)使用🛌🏻的(de)狀态。
數(shu)據終端(duan)準備好(hao)(Data set ready-DTR)——有效時(shi)(ON)狀态,表(biao)明數據(ju)終端可(ke)以使用(yong)。
這兩個(ge)信号有(you)時連到(dao)電源上(shang),一上電(dian)就立即(ji)有效。這(zhe)👨🦰兩個🔞設(she)備狀态(tai)信号有(you)效,隻表(biao)示設備(bei)本身可(ke)用,并不(bu)🤑說明🧜🏼♀️通(tong)信鏈路(lu)可以開(kai)始進行(hang)通信了(le),能否開(kai)⛹🏻♀️始進行(hang)通信要(yao)👧🏾由下面(mian)的控制(zhi)信号決(jue)定。
請求(qiu)發送(Request to send-RTS)——用(yong)來表示(shi)DTE請求DCE發(fa)送數據(ju),即當終(zhong)端要發(fa)送數據(ju)時,使該(gai)信号有(you)效(ON狀态(tai)),向MODEM請求(qiu)發送。它(ta)用來控(kong)制MODEM是否(fou)要進入(ru)發送狀(zhuang)态。
允許(xu)發送(Clear to send-CTS)——用(yong)來表示(shi)DCE準備好(hao)接收DTE發(fa)來的數(shu)據,是對(dui)請👨🦰求發(fa)送信号(hao)RTS的響應(ying)信号。當(dang)MODEM已準備(bei)好接收(shou)終端傳(chuan)來的數(shu)據,并向(xiang)前發送(song)時,使該(gai)信号有(you)效,通知(zhi)終端開(kai)始沿發(fa)送數據(ju)線TxD發送(song)數據。
這(zhe)對RTS/CTS請求(qiu)應答聯(lian)絡信号(hao)是用于(yu)半雙工(gong)MODEM系統中(zhong)發送方(fang)式和接(jie)收方式(shi)之間的(de)切換。在(zai)全
雙工(gong)系統中(zhong)作發送(song)方式和(he)接收方(fang)式之間(jian)的切換(huan)。在全雙(shuang)工系統(tong)中,因配(pei)置雙向(xiang)通道,故(gu)不需要(yao)RTS/CTS聯絡信(xin)号,使其(qi)變高。
接(jie)收線信(xin)号檢出(chu)(Received Line detecTIon-RLSD)——用來表(biao)示DCE已接(jie)通通信(xin)鏈路,告(gao)知DTE準備(bei)接收數(shu)據。當本(ben)地的MODEM收(shou)到由通(tong)信鏈路(lu)另一端(duan)(遠地)的(de)MODEM送來的(de)😺載波信(xin)号🧛🏾♀️時,使(shi)RLSD信号有(you)效,通知(zhi)終端準(zhun)備接收(shou),并且由(you)MODEM将接收(shou)下來的(de)載波⛹🏻♀️信(xin)号解調(diao)成數字(zi)兩數據(ju)後,沿接(jie)收數據(ju)線RxD送到(dao)終端🙂↔️。此(ci)線也叫(jiao)做數據(ju)載波檢(jian)出(Data Carrier dectecTIon-DCD)線。
振(zhen)鈴指示(shi)(Ringing-RI)——當MODEM收到(dao)交換台(tai)送來的(de)振鈴呼(hu)叫信号(hao)時,使👩🏿❤️💋👨🏽該(gai)信号有(you)🛌🏻效(ON狀态(tai)),通知終(zhong)端,已被(bei)呼叫。
(2)數(shu)據發送(song)與接收(shou)線:
發送(song)數據(Transmitted data-TxD)——通(tong)過TxD終端(duan)将串行(hang)數據發(fa)送到MODEM,(DTE→DCE)。
接(jie)收數據(ju)(Received data-RxD)——通過RxD線(xian)終端接(jie)收從MODEM發(fa)來的串(chuan)行數據(ju),(DCE→DTE)。
(3)地線
有(you)兩根線(xian)SG、PG——信号地(di)和保護(hu)地信号(hao)線,無方(fang)向。
上述(shu)控制信(xin)号線何(he)時有效(xiao),何時無(wu)效的順(shun)序表示(shi)了接口(kou)👌信号的(de)傳送過(guo)程。例如(ru),隻有當(dang)DSR和DTR都處(chu)于有效(xiao)(ON)狀态時(shi),才能在(zai)DTE和DCE之間(jian)進行傳(chuan)送操作(zuo)。若DTE要發(fa)送數據(ju),則預先(xian)将DTR線置(zhi)成💁🏼♀️有效(xiao)(ON)狀👹态,等(deng)CTS線👩🏽🐰👩🏿上收(shou)到有效(xiao)(ON)狀态的(de)回🧑🏾🎄答後(hou),才能💘在(zai)TxD線上發(fa)送串行(hang)數據。這(zhe)種順序(xu)的規定(ding)對半雙(shuang)工的通(tong)信線路(lu)特别有(you)用,因爲(wei)半😁雙工(gong)的通信(xin)才能确(que)定DCE已由(you)接收方(fang)向改爲(wei)發🙂↕️送方(fang)向,這時(shi)線路才(cai)能開始(shi)發送。
2個(ge)數據信(xin)号:發送(song)TXD;接收RXD。
1個(ge)信号地(di)線:SG。
6個控(kong)制信号(hao):
DSR??數傳機(ji)(即modem)準備(bei)好,Data Set Ready.
DTR??數據(ju)終端(DTE,即(ji)微機接(jie)口電路(lu),如Intel8250/8251,16550)準備(bei)好,Data Terminal Ready。
RTS??DTE請求(qiu)DCE發送(Request To Send)。
CTS??DCE允(yun)許DTE發送(song)(Clear To Send),該信号(hao)是對RTS信(xin)号的回(hui)答。
DCD??數據(ju)載波檢(jian)出,Data Carrier Detection當本(ben)地DCE設備(bei)(Modem)收到對(dui)方的DCE設(she)備送來(lai)的載波(bo)信🙂↔️号時(shi),使DCD有效(xiao),通知DTE準(zhun)備接收(shou), 并且由(you)DCE将接收(shou)到的載(zai)波信号(hao)解調爲(wei)數字信(xin)号, 經RXD線(xian)送給DTE。
RI??振(zhen)鈴信号(hao) Ringing當DCE收到(dao)交換機(ji)送來的(de)振鈴呼(hu)叫信号(hao)時,使該(gai)信号有(you)效,通知(zhi)DTE已被呼(hu)叫。
遠距(ju)離通信(xin)
第1和第(di)2中情況(kuang)是屬于(yu)遠距離(li)通信(傳(chuan)輸距離(li)大于15m的(de)😸通🧑🏽❤️💋🧑🏻信)的(de)例子,故(gu)一般要(yao)加調制(zhi)解調器(qi)MODEM,因此使(shi)用的信(xin)号線較(jiao)多。注意(yi)👽:在以下(xia)各圖中(zhong),DTE信号爲(wei)RS-232-C信号,DTE與(yu)計算機(ji)間的電(dian)🤑平轉換(huan)電路未(wei)👨🦰畫出。
1、采(cai)用Modem(DCE)和電(dian)話網通(tong)信時的(de)信号連(lian)接:
若在(zai)雙方MODEM之(zhi)間采用(yong)普通電(dian)話交換(huan)線進行(hang)通信,除(chu)了👼🏾需要(yao)2~8号信号(hao)線外還(hai)要增加(jia)RI(22号)和DTR(20号(hao))兩個信(xin)号線進(jin)行聯絡(luo),如圖4所(suo)示。
DSR、DTR:數傳(chuan)機(DCE)準備(bei)好、數據(ju)終端(DTE)準(zhun)備好,隻(zhi)表示設(she)備本身(shen)可用。
首(shou)先,通過(guo)電話機(ji)拔号呼(hu)叫對方(fang),電話交(jiao)換台向(xiang)對方發(fa)出👨🏻🏭拔号(hao)呼叫信(xin)号,當對(dui)方DCE收到(dao)該信号(hao)後,使RI(振(zhen)鈴信号(hao))有效,通(tong)🤶🏾知DTE,已😜被(bei)呼叫。當(dang)對方“摘(zhai)機”後,兩(liang)方建立(li)了通信(xin)鏈路。
若(ruo)計算機(ji)要發送(song)數據至(zhi)對方,首(shou)先通過(guo)接口電(dian)路(DTE)發🧑🏽❤️💋🧑🏻出(chu)RTS(請求發(fa)👺送)信号(hao)。此時,若(ruo)DCE(Modem)允許傳(chuan)送,則向(xiang)DTE回答CTS(允(yun)許發送(song))信号。一(yi)般可直(zhi)接将RTS/CTS接(jie)高電平(ping),即隻要(yao)通信…鏈(lian)路已建(jian)立,就🧜🏼♀️可(ke)傳送信(xin)号。(RTS/CTS可隻(zhi)用于半(ban)雙工系(xi)統中作(zuo)發送😌方(fang)式和接(jie)🔞收方式(shi)的切換(huan)。
當DTE獲得(de)CTS信号後(hou),通過T XD線(xian)向DCE發出(chu)串行信(xin)号,DCE(Modem)将這(zhe)些數字(zi)信号調(diao)制成模(mo)拟信号(hao)(又稱載(zai)波信号(hao)),傳向對(dui)方。
計算(suan)機向DTE“數(shu)據輸出(chu)寄存器(qi)”傳送新(xin)的數據(ju)前,應檢(jian)查Modem狀态(tai)和數✡️據(ju)輸出寄(ji)存器爲(wei)空。當對(dui)方的DCE收(shou)到載👹波(bo)信号後(hou),向對方(fang)的DTE發出(chu)😗DCD信号(數(shu)據載波(bo)檢出),通(tong)知其DTE準(zhun)備接收(shou),同時,将(jiang)載波信(xin)号解調(diao)爲🧎🏻♀️➡️數據(ju)信号,從(cong)…RXD線上送(song)給DTE,DTE通過(guo)串行接(jie)收移位(wei)寄存器(qi)對接收(shou)到的位(wei)流進行(hang)移👧🏾位,當(dang)收到1個(ge)字符的(de)全部位(wei)流後,把(ba)該字符(fu)的數據(ju)🧑🏽❤️💋🧑🏻位送到(dao)數據輸(shu)入寄存(cun)器,CPU可以(yi)從數據(ju)輸入寄(ji)存器讀(du)取字符(fu)。
近距離(li)通信:
當(dang)通信距(ju)離較近(jin)時,可不(bu)需要Modem,通(tong)信雙方(fang)可以直(zhi)接✡️連接(jie),這種情(qing)況下,隻(zhi)需使用(yong)少數幾(ji)根信号(hao)線。最簡(jian)單的情(qing)況,在通(tong)信中根(gen)本🏃🏿♀️➡️不需(xu)要RS-232C的控(kong)制聯絡(luo)信号,隻(zhi)需三根(gen)線(發送(song)線、接👿收(shou)線、信号(hao)地線)便(bian)可實現(xian)全雙工(gong)異步串(chuan)行通信(xin),即是這(zhe)裏💯要讨(tao)論的第(di)一種情(qing)況。
無Modem時(shi),最大通(tong)信距離(li)按如下(xia)方式計(ji)算:
RS-232C标準(zhun)規定:當(dang)誤碼率(lü)小于4%時(shi),要求導(dao)線的電(dian)容值應(ying)小🧛🏽于2500PF。對(dui)于ˇ普🛌🏻通(tong)導線,其(qi)電容值(zhi)約爲170PF/M。則(ze)允許距(ju)離L=2500PF/(170PF/M)=15M
這一(yi)距離的(de)計算,是(shi)偏于保(bao)守的,實(shi)際應用(yong)中,當使(shi)用🏃🏿♀️➡️9600bps,普通(tong)雙絞屏(ping)蔽線時(shi),距離可(ke)達30~35米。