串口通信深度探究
1.1 串行接口簡介
串行接口一般包括RS232/422/485,其技術簡單成熟,性能可靠,價格低廉;所要求的軟/硬件開發(fā)環(huán)境都很低,廣泛應用于計算機及相關領域,如調制解調器(Modem)、串行打印機、各種監(jiān)控模塊、PLC、攝像頭云臺、數控機床、單片機及相關智能設備,甚至路由器也不例外(通過串口設置參數)。
在計算機測控系統(tǒng)中,主控機一般采用PC或IPC,通過串口與測控模塊相連,測控模塊再連接相應的傳感器和執(zhí)行器,如此形成一個簡單的雙層結構的計算機測控系統(tǒng)。這種結構主要用于單獨的中小型企業(yè)或部門,如果屬于綜合型企業(yè)或部門,如電力系統(tǒng)監(jiān)控,高速公路監(jiān)控和收費系統(tǒng),則可以此為基礎結構進行擴充,用集線器將眾多雙層監(jiān)控系統(tǒng)連接起來,再用交換機將若干集線器連接起來,統(tǒng)一接上路由器,從而與Internet互聯,如此即可形成一個龐大的計算機測控網絡。由此可見,盡管現代計算機的新接口層出不窮,各種網絡應用也日新月異,其規(guī)模也越來越大,但是,其基礎結構卻有不少是串行通信系統(tǒng),串行通信也成了其中的核心技術。
1.1.1 串口通信的基本概念
1.并行通信與串行通信
終端與其他設備(例如,其他終端、計算機和外部設備)通過數據傳輸進行通信。數據傳輸可以通過兩種方式進行:并行通信和串行通信。
(1)并行通信。
在計算機和終端之間的數據傳輸通常是靠電纜或信道上的電流或電壓變化實現的。如果一組數據的各數據位在多條線上同時被傳送,這種傳輸方式被稱為并行通信,如圖5-1所示。
圖5-1 并行通信
并行數據傳送的特點是:各數據位同時傳送,傳送速度快、效率高,多用在實時、快速的場合。
并行傳送的數據寬度可以是1位~128位,甚至更寬,但是有多少數據位就需要多少根數據線,因此,傳送的成本較高。在集成電路芯片的內部、同一插件板上各部件之間以及同一機箱內各插件板之間的數據傳送都是并行的。
并行數據傳送只適用于近距離的通信,通常小于30m。
(2)串行通信。
串行通信是指通信的發(fā)送方和接收方之間數據信息的傳輸是在單根數據線上,以每次一個二進制的0、1為最小單位逐位進行傳輸,如圖5-2所示。
圖5-2 串行通信
串行數據傳送的特點是,數據傳送按位順序進行,最少只需要一根傳輸線即可完成,節(jié)省傳輸線。與并行通信相比,串行通信還有較為顯著的優(yōu)點:傳輸距離長,可以從幾米到幾千米;在長距離內串行數據傳送速率會比并行數據傳送速率快;串行通信的通信時鐘頻率容易提高;串行通信的抗干擾能力十分強,其信號間的互相干擾完全可以忽略。但是串行通信傳送速度比并行通信慢得多,并行通信時間為T,則串行時間為NT。
正是由于串行通信的接線少、成本低,因此它在數據采集和控制系統(tǒng)中得到了廣泛的應用,產品也多種多樣。
2.串行通信的工作模式
通過單線傳輸信息是串行數據通信的基礎。數據通常是在兩個站(點對點)之間進行傳送,按照數據流的方向可分成3種傳送模式:單工、半雙工和全雙工。
(1)單工形式。
單工形式的數據傳送是單向的。通信雙方中,一方固定為發(fā)送端,另一方則固定為接收端。信息只能沿一個方向傳送,使用一根傳輸線。如圖5-3所示。
圖5-3 單工形式
單工形式一般用在只向一個方向傳送數據的場合。例如,計算機與打印機之間的通信是單工形式,因為只有計算機向打印機傳送數據,而沒有相反的數據傳送。還有在某些通信信道中,如單工無線發(fā)送等。
(2)半雙工形式。
半雙工通信使用同一根傳輸線,既可發(fā)送數據又可接收數據,但不能同時發(fā)送和接收。在任何時刻只能由其中的一方發(fā)送數據,另一方接收數據。因此半雙工形式既可以使用一條數據線,也可以使用兩條數據線。如圖5-4所示。
圖5-4 半雙工形式
半雙工通信中每一端需有一個收/發(fā)切換電子開關,通過切換來決定數據向哪個方向傳輸。因為有切換,所以會產生時間延遲。信息傳輸效率較低些。但是對于像打印機這樣單方向傳輸的外圍設備,用半雙工方式就能滿足要求了,不必采用全雙工方式,可省一根傳輸線。
(3)全雙工形式。
全雙工數據通信分別由兩根可以在兩個不同的站點同時發(fā)送和接收的傳輸線進行傳送,通信雙方都能在同一時刻進行發(fā)送和接收操作。如圖5-5所示。
圖5-5 全雙工形式
在全雙工方式中,每一端都有發(fā)送器和接收器,有兩條傳送線,可在交互式應用和遠程監(jiān)控系統(tǒng)中使用,信息傳輸效率較高。
3.異步傳輸與同步傳輸
串行傳輸中,數據是一位一位按照到達的順序依次傳輸的,每位數據的發(fā)送和接收都需要時鐘來控制。發(fā)送端通過發(fā)送時鐘確定數據位的開始和結束,接收端需要在適當的時間間隔對數據流進行采樣來正確地識別數據。接收端和發(fā)送端必須保持步調一致,否則就會在數據傳輸中出現差錯。為了解決以上問題,串行傳輸可以采用以下兩種方法:異步傳輸和同步傳輸。
(1)異步傳輸。
異步傳輸方式中,字符是數據傳輸單位。在通信的數據流中,字符間異步,字符內部各位間同步。異步通信方式的“異步”主要體現在字符與字符之間通信沒有嚴格的定時要求。異步傳輸中,字符可以是連續(xù)地、一個個地發(fā)送,也可以是不連續(xù)地,隨機地進行單獨發(fā)送。在一個字符格式的停止位之后,立即發(fā)送下一個字符的起始位,開始一個新的字符的傳輸,這叫做連續(xù)的串行數據發(fā)送,即幀與幀之間是連續(xù)的。斷續(xù)的串行數據傳送是指在一幀結束之后維持數據線的“空閑”狀態(tài),新的起始位可在任何時刻開始。一旦傳送開始,組成這個字符的各個數據位將被連續(xù)發(fā)送,并且每個數據位持續(xù)的時間是相等的。接收端根據這個特點與數據發(fā)送端保持同步,從而正確地恢復數據。收/發(fā)雙方則以預先約定的傳輸速率,在時鐘的作用下,傳送這個字符中的每一位。
(2)同步傳輸。
在同步傳輸方式中,比特塊以穩(wěn)定的比特流的形式傳輸,數據被封裝成更大的傳輸單位,稱為幀。每個幀中含有多個字符代碼,而且字符代碼與字符代碼之間沒有間隙以及起始位和停止位。和異步傳輸相比,數據傳輸單位的加長容易引起時鐘漂移。為了保證接收端能夠正確地區(qū)分數據流中的每個數據位,收發(fā)雙方必須通過某種方法建立起同步的時鐘。可以在發(fā)送器和接收器之間提供一條獨立的時鐘線路,由線路的一端(發(fā)送器或者接收器)定期地在每個比特時間中向線路發(fā)送一個短脈沖信號,另一端則將這些有規(guī)律的脈沖作為時鐘。這種技術在短距離傳輸時表現良好,但在長距離傳輸中,定時脈沖可能會和信息信號一樣受到破壞,從而出現定時誤差。另一種方法是,通過采用嵌有時鐘信息的數據編碼位向接收端提供同步信息。
4.硬件握手與軟件握手
握手信號實際上是控制信號,用來控制數據的傳送。通過握手信號,發(fā)送方可以通知接收方是否有數據要發(fā)送。接收方通過握手信號通知發(fā)送方它是否已經準備好了接收信號。握手信號遵循某種協議。
當發(fā)送方和接收方處理數據的速度不一樣時,可能會造成數據丟失。在傳輸中,如果發(fā)送方的發(fā)送速度大于接收方的接收速度,同時接收方處理數據的速度不夠快的話,那么接收端的緩沖區(qū)必定在一定時間后溢出,從而造成以后發(fā)送過來的數據不能進入緩沖區(qū)而丟失。發(fā)送方何時可以繼續(xù)發(fā)送數據,何時必須暫停發(fā)送,從而讓接收方有時間處理數據,這稱為流量控制,必須靠握手信號來解決這個問題。例如,打印機和計算機進行通信時,一些打印機打印速度可能跟不上計算機發(fā)送數據的速度,就必須要通過握手信號通知計算機暫停發(fā)送數據。
(1)硬件握手。
在硬件握手中,發(fā)送方通過將某一個導線拉到高電平或者低電平,來表示發(fā)送方可以發(fā)送數據。接收方已經準備好接收數據之后,也把某一個導線拉到高電平或者是低電平,來通知發(fā)送方,發(fā)送方一直在檢測這個信號。接收方可以在任何時候把這個信號變?yōu)闊o效,甚至是在接受一個數據塊的過程中。當發(fā)送方檢測到這個信號變?yōu)闊o效之后,就必須停止本次發(fā)送,直到這個信號變?yōu)橛行А?/span>
(2)軟件握手。
在軟件握手中,以數據線上的數據信號來代替實際的硬件電路。這種方法用在直接連接或者通過調制解調器連接的兩臺計算機之間進行雙向通信的場合。
對于軟件握手現在已經建立了一些標準協議,其中最常用的是通信協議。通信協議是指通信雙方的一種約定,約定包括對數據格式、同步方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問題作出統(tǒng)一規(guī)定,通信雙方必須共同遵守,也叫做通信控制規(guī)程或稱傳輸控制規(guī)程,它屬于OSI七層參考模型中的數據鏈路層。
(3)硬件和軟件結合的握手方法。
如果使用計算機或終端通過調制解調器和主計算機進行通信,那么調制解調器使用硬件握手方法和計算機聯系,主計算機和調制解調器之間也使用硬件握手方法,主計算機和計算機之間將使用軟件握手方法進行聯系。因此,計算機必須要編程,僅當調制解調器的DSR(有時可能使用CD)線電位變高和軟件停止信號沒有收到時,軟件才送出一個通知信號。
一些計算機自動監(jiān)測硬件握手信號,這些計算機等待硬件握手信號變高以后送出一個字符,所以程序只需要處理軟件握手信號。
5.串口通信的基本參數
串行端口的通信方式是將字節(jié)拆分成一個接著一個的位再傳送出去。接到此電位信號的一方再將此一個一個的位組合成原來的字節(jié),如此形成一個字節(jié)的完整傳送。
在傳輸進行的過程中,雙方明確傳送信息的具體方式,否則雙方就沒有一套共同的譯碼方式,從而無法了解對方所傳過來的信息的意義。因此雙方為了進行通信,必須遵守一定的通信規(guī)則,這個共同的規(guī)則就是通信端口的初始化。
通信端口的初始化必須對以下幾項參數進行設置。
(1)數據的傳輸速度。
串行通信的傳輸受到通信雙方硬件配備性能及通信線路的特性控制,收、發(fā)雙方必須按照同樣的速率進行串行通信,即收、發(fā)雙方采用同樣的波特率。我們通常將傳輸速度稱為波特率,指的是串行通信中每一秒所傳送的數據位數,單位是bit/s。我們經常可以看到儀器或Modem的規(guī)格書上都寫著19 200bit/s、38 400bit/s,……,所指的就是傳輸速度。
就儀器或工業(yè)場合來說,4 800bit/s、9 600bit/s是最常見的傳輸速度,現在的個人計算機所提供的串行端口的傳輸速度都可以達到15 200bit/s(甚至達到921 600bit/s),若傳輸距離較近而設備也提供時,使用最高的傳輸速度也可以。
例如,在某異步串行通信中,每傳送一個字符需要8位,如果采用波特率4 800bit/s進行傳送,則每秒可以傳送600個字符。
(2)數據的傳送單位。
一般串行通信端口所傳送的數據是字符型,若用來傳輸文件,則會使用二進制的數據型。當使用字符型時,工業(yè)界使用到的有ASCII字符碼及JIS字符碼;ASCII碼使用了8位形成一個字符,而JIS碼則以7位形成一個字符。我們可以發(fā)現,歐美的設備多使用8位的字節(jié),而日本的設備多使用7位為一個字節(jié)。以實際的RS-232傳輸上看來,由于工業(yè)界常使用的PLC大多只是傳送文字碼,因此只要7位就可以將ASCII碼的0~127碼表達出來(2?7=128,共有128種組合方式),所有的可見字符也落在此范圍內,所以只要7個數據位就夠了。不同的情況下(看所使用的協議),會使用到不同的傳送單位。使用多少位合成一個字節(jié)必須先行確定。
(3)起始位與停止位。
由于異步串行傳輸中并沒有使用同步脈沖作基準,故接收端完全不知道發(fā)送端何時將進行數據的傳送。發(fā)送端準備要開始傳送數據時,發(fā)送端會在所送出的字符前后分別加上高電位的起始位(邏輯0)及低電位的停止位(邏輯1),它們分別是所謂的起始位和停止位。也就是說,當發(fā)送端要開始傳送數據時,便將傳輸線上的電位由低電位提升至高電位,而當傳送結束后,再將電位降至低電位。接收端會因起始位的觸發(fā)(因電壓由低電位升至高電位)而開始接收數據,并因停止位的通知(因電壓維持在低電位)而明確數據的字符信號已經結束;當加入了起始位及停止位才比較容易達到多字符的接收能力。起始位固定為1位,而停止位則有1、1.5、2位等多種選擇,如何選擇呢?只要通信雙方協議通過即可,沒有強制規(guī)定。
(4)校驗位。
為了預防錯誤的產生,使用校驗位作為檢查的機制。校驗位是用來檢查所傳送數據的正確性的一種核對碼,又分成奇校驗與偶校驗兩種,分別是檢查字符碼中1的數目是奇數或偶數。以偶校驗為例,“A”的ASCII碼是41H(十六進制),將它以二進制表示時,是01000001,其中1的數目是2,因此校驗位便是0,使1的數目保持偶數。同樣的,校驗位是奇校驗時,“A”的校驗位便是1,使1的數目保持在奇數。接收者重新計算奇偶校驗位,如果新的計算值正確,那么表示正常。如果新的計算值錯誤,那么接收端就會收到一些指示,表示此次接收的數據有誤。
1.1.2 RS-232C串口通信標準
RS-232C是美國電子工業(yè)協會(Electronic Industry Association),EIA于1962年公布,并于1969年修訂的串行接口標準。它已經成為國際上通用的標準。1987年1月,RS-232C經修改后,正式改名為EIA-232D。由于標準修改得并不多,因此現在很多廠商仍用舊的名稱。
RS-232C標準(協議)的全稱是EIA-RS-232C標準,其中RS(Recommended Standard)代表推薦標準,232是標識號,C代表RS-232的最新一次修改(1969年),它適合于數據傳輸速率在0~20 000bit/s范圍內的通信。這個標準對串行通信接口的有關問題,如信號電平、信號線功能、電氣特性、機械特性等都作了明確規(guī)定。
目前RS-232C已成為數據終端設備(Data Terminal Equipment,DTE,如計算機)和數據通信設備(Data Communication Equipment,DCE,如Modem)的接口標準。RS-232C是PC機與通信工業(yè)中應用最廣泛的一種串行接口,
在IBM PC機上的COM1、COM2接口,就是RS-232C接口。
利用RS-232C串行通信接口可實現兩臺個人計算機的點對點的通信;通過RS-232C接口可與其他外設(如打印機、邏輯分析儀、智能調節(jié)儀、PLC等)近距離串行連接;通過RS-232C接口連接調制解調器可遠距離地與其他計算機通信;將RS-232C接口轉換為RS-422或RS-485接口,可實現一臺個人計算機與多臺現場設備之間的通信。
1.接口連接器
由于RS-232C并未定義連接器的物理特性,因此,出現了DB-25和DB-9各種類型的連接器,其引腳的定義也各不相同。現在計算機上一般只提供DB-9連接器,都為公頭。相應的連接線上的串口連接器也有公頭和母頭之分,如圖5-6所示。
作為多功能I/O卡或主板上提供的COM1和COM2兩個串行接口的DB-9連接器,它只提供異步通信的9個信號針腳,如圖5-7所示,各針腳的信號功能描述如表5-1所示。
?
圖5-6 公頭與母頭串口連接器 圖5-7 DB9串口連接器
表5-1?9針串行口的針腳功能
| 針 腳 | 符 號 | 通 信 方 向 | 功 能 |
| 1 | DCD | 計算機→調制解調器 | 載波信號檢測 |
| 2 | RXD | 計算機→調制解調器 | 接收數據 |
| 3 | TXD | 計算機→調制解調器 | 發(fā)送數據 |
| 4 | DTR | 計算機→調制解調器 | 數據終端準備好 |
| 5 | GND | 計算機 = 調制解調器 | 信號地線 |
| 6 | DSR | 計算機→調制解調器 | 數據裝置準備好 |
| 7 | RTS | 計算機→調制解調器 | 請求發(fā)送 |
| 8 | CTS | 計算機→調制解調器 | 清除發(fā)送 |
| 9 | RI | 計算機→調制解調器 | 振鈴信號指示 |
RS-232的每一支腳都有它的作用,也有它信號流動的方向。原來的RS-232是設計用來連接調制解調器作傳輸之用的,因此它的腳位意義通常也和調制解調器傳輸有關。
從功能來看,全部信號線分為3類,即數據線(TXD、RXD)、地線(GND)和聯絡控制線(DSR、DTR、RI、DCD、RTS、CTS)。
以下是這9支腳的相關說明。
· DCD-此腳位是由調制解調器(或其他DCE,以下同)控制。當電話接通之后,傳送的信號被加載在載波信號上面,調制解調器利用此腳位通知計算機檢測到載波,而當載波被檢測到時才可保證此時是處于連接的狀態(tài)。
一般情況下,如果計算機沒有收到此信號,仍會有所響應,并將調制解調器掛起。
· RXD-此腳位負責將傳送過來的遠程信息進行接收。在接收的過程中,由于信息是以數字形式傳送的,讀者可以在調制解調器的RXD指示燈上看到明滅交錯,這是由于0、1交替導致的結果,也就是電位高低所產生的現象。
· TXD-此腳位負責將計算機打算傳送出去的信息傳送出去。在傳送的過程中,由于信息是以數字形式傳送的,讀者可以在調制解調器的TXD指示燈上看到明滅交錯,這是由于0、1交替導致的結果,也就是電位高低所產生的現象。
· DTR-此腳位由計算機(或其他DTE,以下同)控制,用以通知調制解調器可以進行傳輸。高電位時表示計算機已經準備就緒,隨時可以接收信息。
· GND-此腳位為地線,作為計算機與調制解調器之間的參考基準。兩端設備的地線準位必須一樣,否則會產生地回路,使得信號因準位的不同而產生偏移,也會導致結果失常。RS-232信息在傳輸上是采用單向式的信號傳送方式,其特點是信號的電壓基準由參考地線提供,因此傳輸雙方的地線必須連接在一起,以避免基準不同而造成信息的錯誤。
· DSR-此腳位由調制解調器控制,調制解調器用這支腳位的高電位通知計算機一切均準備就緒,可以把信息傳送過來。
· RTS-此腳位由計算機控制,用以通知調制解調器馬上傳送信息到計算機。而當調制解調器收到此信號后,便會將它在電話線上收到的信息傳送給計算機,在此之前若有信息傳送到調制解調器則會暫存在緩沖區(qū)中。
· CTS-此腳位由調制解調器控制,用以通知計算機打算傳送的信息已經到達調制解調器。當計算機收到此腳位信號后,便把準備送出的信息送到調制解調器,而調制解調器則將計算機送過來的信息通過電話線路送出。
· RI-調制解調器通知計算機有電話進來,是否接聽電話則由計算機決定。如果計算機設置調制解調器為自動應答模式,則調制解調器在聽到一定的鈴響后便會自動接聽電話。
上述控制信號線何時有效,何時無效的順序表示了接口信號的傳送過程。例如,只有當DSR和DTR都處于有效(ON)狀態(tài)時,才能在DTE和DCE之間進行數據傳送操作。若DTE要發(fā)送數據,則預先將DTR線置成有效(ON)狀態(tài),等CTS線上收到有效(ON)狀態(tài)的回答后,才能在TXD線上發(fā)送串行數據。這種順序的規(guī)定對半雙工的通信線路特別有用,因為半雙工的通信確定DCE已由接收方向改為發(fā)送方向,這時線路才能開始發(fā)送。
可以從表5-1了解到硬件線路上的方向。另外值得一提的是,如果從計算機的角度來看這些腳位的通信狀況的話,流進計算機端的,可以看為數字輸入;而流出計算機端的,則可以看為數字輸出。
數字輸入與數字輸出的關系是什么呢?從工業(yè)應用的角度來看,所謂的輸入就是用來“監(jiān)測”,而輸出就是用來“控制”的。
2.串口電氣特性
首先需要說明的是,RS-232-C標準最初是為遠程通信數據終端設備(Data Terminal Equipment,DTE)與數據通信設備(Data Communication Equipment,DCE)而制定的,因此這個標準的制定,并未考慮計算機系統(tǒng)的應用要求。但目前它又廣泛地被借來用于計算機(更準確的說,是計算機接口)與終端或外設之間的近端連接標準。顯然,這個標準的有些規(guī)定和計算機系統(tǒng)是不一致的,甚至是相矛盾的。有了對這種背景的了解,我們對RS-232C標準與計算機不兼容的地方就不難理解了。
其次是,RS-232C標準中所提到的“發(fā)送”和“接收”,都是站在DTE立場上,而不是站在DCE的立場來定義的。由于在計算機系統(tǒng)中,往往是CPU和I/O設備之間傳送信息,兩者都是DTE,因此雙方都能發(fā)送和接收數據。
EIA-RS-232C對電氣特性、邏輯電平和各種信號線功能都作了規(guī)定。
在TXD和RXD上:邏輯1為?3V~?15V; 邏輯0為+3~+15V。
在RTS、CTS、DSR、DTR和DCD等控制線上:
信號有效(接通,ON狀態(tài),正電壓)為+3V~+15V。
信號無效(斷開,OFF狀態(tài),負電壓)為?3V~?15V。
以上規(guī)定說明了RS-232C標準對邏輯電平的定義。對于數據(信息碼):邏輯“1”的電平低于?3V,邏輯“0”的電平高于+ 3V。對于控制信號:接通狀態(tài)(ON)即信號有效的電平高于+3V,斷開狀態(tài)(OFF)即信號無效的電平低于?3V,也就是當傳輸電平的絕對值大于3V時,電路可以有效地檢查出來,介于?3~+3V之間的電壓無意義,低于?15V或高于+15V的電壓也認為無意義,因此,實際工作時,應保證電平在±(3~15)V之間。
RS-232C是用正負電壓來表示邏輯狀態(tài)的,與TTL以高低電平表示邏輯狀態(tài)的規(guī)定不同,因此,為了能夠同計算機接口或終端的TTL器件連接,必須在RS-232C與TTL電路之間進行電平和邏輯關系的變換,實現這種變換的方法可用分立元件,也可用集成電路芯片。目前較為廣泛地使用集成電路轉換器件,如MCl488、SN75150芯片可完成TTL電平到EIA電平的轉換,而MCl489和SN75154可實現EIA電平到TTL電平的轉換。
現在常用的RS-232C/TTL轉換芯片是MAX232。MAX232內部有電壓倍增電路和轉換電路,只需+5V電源便可完成TTL與EIA雙向電平轉換。
1.1.3 串口通信線路連接
1.近距離通信線路連接
當兩臺RS-232串口設備通信距離較近時(<15m),可以用電纜線直接將兩臺設備的RS-232端口連接,若通信距離較遠(>15m)時,需附加調制解調器(Modem)。
在RS-232的應用中,很少嚴格按照RS-232標準。其主要原因是,許多定義的信號在大多數的應用中并沒有用上。在許多應用中,例如Modem,只用了9個信號(兩條數據線、6條控制線、一條地線);在其他一些應用中,可能只需要5個信號(兩條數據線、兩條握手線、一條地線);還有一些應用,可能只需要數據線,而不需要握手線,即只需要3個信號線。因為在控制領域,在近距離通信時常采用RS-232,所以這里只對近距離通信的線路連接進行討論。
當通信距離較近時,通信雙方不需要Modem,可以直接連接,這種情況下,只需使用少數幾根信號線。最簡單的情況,在通信中根本不需要RS-232C的控制聯絡信號,只需3根線(發(fā)送線、接收線、信號地線)便可實現全雙工異步串行通信。
圖5-8(a)所示是兩臺串口通信設備之間的最簡單連接(即三線連接),圖中的2號接收腳與3號發(fā)送腳交叉連接是因為在直連方式時,把通信雙方都當作數據終端設備看待,雙方都可以發(fā)送也可接收。在這種方式下,通信雙方的任何一方,只要請求發(fā)送RTS有效和數據終端準備好DTR有效就能開始發(fā)送和接收。
圖5-8 串口設備最簡單的連接
如果只有一臺計算機,而且也沒有兩個串行通信端口可以使用,則將第2腳與第3管腳短路,如圖5-8(b)所示,那么由第3腳的輸出信號就會被傳送到第2腳而送到同一串行端口的輸入緩沖區(qū),程序只要再由相同的串行端口上作讀取的操作,即可將數據讀入,同樣可以形成一個測試環(huán)境。
2.遠距離通信線路連接
一般PC采用RS-232通信接口,當PC與串口設備通信距離較遠時,二者不能用電纜直接連接,可采用RS-485總線。
當PC與多臺具有RS-232接口的設備遠距離通信時,可使用RS-232/RS-485型通信接口轉換器,將計算機上的RS-232通信口轉為RS-485通信口,在信號進入設備前再使用RS-485/RS-232轉換器將RS-485通信口轉為RS-232通信口,再與設備相連,如圖5-9所示。
|
圖5-9 PC與多個RS-232串口設備遠距離連接
當PC與多臺具有RS-485接口的設備通信時,由于兩端設備接口電氣特性不一,不能直接相連,因此,也采用RS-232接口到RS-485接口轉換器將RS-232接口轉換為RS-485信號電平,再與串口設備相連。
如果PC直接提供RS-485接口,與多臺具有RS-485接口的設備通信時不用轉換器可直接相連。
RS-485接口只有兩根線要連接,有+、?端(或稱A、B端)區(qū)分,用雙絞線將所有串口設備的接口并聯在一起即可。
1.1.4 計算機中的串行端口
在PC上,有各種各樣的接頭,其中有兩個9針的接頭區(qū),如圖5-10所示,這就是串行通信端口。PC上的串行接口有多個名稱:232口、串口、通信口、COM口和異步口等。
圖5-10 PC上的串行端口
1.串行端口的中斷
(1)中斷概述。
中斷即IRQ(Interrupt Request)。CPU一般情況下是連續(xù)進行工作,一旦外圍設備(如打印機、串行端口等)需要CPU處理事件時,就會通過硬件線路(即中斷線路)來通知CPU。CPU收到通知后,就會停下正在做的工作,轉而去執(zhí)行外圍設備的請求。
(2)查看計算機內的中斷。
在Windows系統(tǒng)中,打開設備管理器,在“查看”菜單項選擇“依照類型排序資源”,打開中斷請求(IRQ)項,可以看到計算機中各設備的中斷分配信息。如圖5-11所示。
2.串行端口的地址
(1)地址概述。
在計算機內,每個設備都有一個地址。當CPU需要傳送信息或者是從外圍設備讀取信息時,必須知道信息在什么地方,這個具體地方就是外圍設備的地址。在計算機內部使用十六進制的方式記錄每個外圍設備的地址,每個設備的地址都是不一樣的,這樣才能保證信息的讀寫不會出錯。一個設備所要占用的地址號碼可能不止一個,如果需要占用多個地址,那么所占用的地址一般情況下是連續(xù)的。
(2)查看計算機內的地址
在Windows系統(tǒng)中,打開設備管理器,在“查看”菜單項選擇“依照類型排序資源”,打開輸入/輸出(IO)項,可以看到計算機中各設備的地址分配信息。如圖5-12所示。
?
圖5-11 查看計算機內設備中斷信息 圖5-12 查看計算機內的設備地址信息界面
每個與計算機相連的具有交互能力的設備,一定擁有惟一的地址即在圖5-12的列表中所顯示的。而且這些地址的長度為一個字節(jié)。一個設備可能由于功能較多,無法簡單地使用一個字節(jié)完整地表達,因此,可能會占用一段連續(xù)的地址。
3.查看串行端口信息
(1)查看設備信息。
進入Windows系統(tǒng)中,單擊“我的電腦”圖標在彈出的菜單中選擇屬性項,在出現的系統(tǒng)屬性窗口中選擇“硬件”項中的“設備管理器”,出現設備管理器列表,此列表中有端口COM和LPT設備信息,如圖5-13所示。
(2)查看端口屬性。
選擇通信端口COM1,單擊右鍵,選擇“屬性”,可以查看端口的低級設置(圖5-14)及其資源(圖5-15)。
?
圖5-13 查看串口設備信息界面 圖5-14 查看端口設置界面
在“端口設置”選項卡中,可以看到默認的波特率和其他設置,這些設置可以在端口設置中改變,也可以在應用程序中很方便地編程修改。
在“資源”選項卡中,可以看到一般PC上COM1口使用4號中斷,輸入/輸出范圍(即地址)為03F8-03FF;按相同方法可以看到,COM2口使用3號中斷,輸入/輸出范圍為02F8-02FF。
COM1與COM2的地址是3F8~3FF和2F8~2FF,在這個范圍內的每個地址都有不同的功能,這些功能分別通過寄存器來實現。寄存器是用來暫時存放信息的地方。這些信息以位的形式存儲,一般以一個字節(jié)作為一個單位。讀/寫寄存器就是讀取這些位所代表的狀態(tài),以便可以執(zhí)行與串行端口相關的功能。
總結
- 上一篇: 串口起始位检测
- 下一篇: 基于FPGA的UART接口协议设计