第 11 章 串行通信及接口電路_第1頁
第 11 章 串行通信及接口電路_第2頁
第 11 章 串行通信及接口電路_第3頁
第 11 章 串行通信及接口電路_第4頁
第 11 章 串行通信及接口電路_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第11章串行通信及接口電路 本章講述:11.1串行通信11.2Intel8251A可編程通信接口11.1串行通信

11.1.1概述

CPU與外部的信息交換稱為通信(Communication)?;镜耐ㄐ欧绞接袃煞N: 并行通信——數(shù)據(jù)的各位同時傳送; 串行通信——數(shù)據(jù)一位一位順序傳送。 并行通信與串行通信方式如圖11-1所示。1.串行通信的優(yōu)點 從圖11-1中可以看到,在并行通信中數(shù)據(jù)有多少位就要有同樣數(shù)量的傳送線,而串行通信只要一條傳送線。故串行通信節(jié)省傳送線,特別是當(dāng)位數(shù)很多和長距離傳送時,這個優(yōu)點就更為突出。例如,微型計算機要將數(shù)據(jù)傳送到遠方的終端,或傳送到大的計算中心,則常用通信線路(電話線等)進行傳送,這時采用串行傳送可以大大減少傳送線,從而大大地降低成本。但是串行傳送的速度慢,若并行傳送所需的時間為T,則串行傳送的時間至少為NT(其中N為位數(shù))。2.同步通信與異步通信 在串行通信中,有兩種最基本的通信方式: (1)非同步(異步)通信ASYNC(AsynchronousDataCommunication)

它用一個起始位表示字符的開始,用停止位表示字符的結(jié)束來構(gòu)成一幀。如圖11-2所示。起始位占1位,字符編碼為7位(ASCII碼),第8位為奇偶校驗位,即加上這一位(第8位)使字符中為“1”的位為奇數(shù)(或偶數(shù)),停止位可以是1位、1.5位或2位。于是一個字符就由10個或10.5個或11個二進制位構(gòu)成。 用這樣的方式表示字符,則字符可以一個挨著一個傳送。 在非同步數(shù)據(jù)傳送中,在CPU與外設(shè)之間必須有兩項規(guī)定: ①字符格式 即前述的字符的編碼形式,奇偶校驗形式,以及起始位和停止位的規(guī)定。例如,用ASCII編碼,字符為7位,加一位奇偶校驗位,一位起始位,以及一位停止位,共10位。 ②數(shù)據(jù)信號傳送速率 數(shù)據(jù)信號傳送速率的規(guī)定,對于CPU與外界的通信是很重要的。假如數(shù)據(jù)傳送的速率是120字符/秒,而每一字符包含10個數(shù)據(jù)位,則每秒傳送的二進制位數(shù)(b/s,常稱為bps)為: 10×120=1200(位/秒)=1200(bps)

則每一位的傳送時間即為:

Td=1/1200=0.833(ms) ③波特率(Baudrate)

串行通信的信號常常要通過調(diào)制解調(diào)器進行傳送。 在數(shù)據(jù)源出口與調(diào)制器入口之間,或者解調(diào)器出口與數(shù)據(jù)信宿入口之間,用數(shù)據(jù)信號傳輸率(bps)來描述數(shù)字信號的傳輸速度;而在調(diào)制器出口、通信線路與解調(diào)器入口之間,用單位時間內(nèi)線路狀態(tài)變化(電信號變化)的數(shù)目即波特率來描述傳輸速度,如圖11-3所示。 當(dāng)采用“零調(diào)制”或“空調(diào)制”,即基波傳輸時,或者在單位時間內(nèi)僅調(diào)制或解調(diào)一個信號時,則數(shù)字信號傳輸率(bps)與波特率是一致的。在采用調(diào)制解調(diào)器的載波傳輸系統(tǒng)中,兩者間的關(guān)系為:

C=B·log2n其中:

C——數(shù)據(jù)信號傳輸速率(bps); B——調(diào)制速率(baud); n——調(diào)制信號數(shù)或線路狀態(tài)數(shù),它是2的整數(shù)倍。 異步通信的傳送速度在50~9600波特之間,常用于計算機到CRT終端和字符打印機之間的通信,直通電報以及無線電通信的數(shù)據(jù)發(fā)送等。 (2)同步傳送 在異步傳送中,每一個字符要用起始位和停止位作為字符開始和結(jié)束的標志,占用了時間。所以,在數(shù)據(jù)塊傳送時,為了提高速度,就去掉這些標志,采用同步傳送,于是在數(shù)據(jù)塊開始處就要用同步字符來指示。如圖11-4所示。 同步傳送的速度高于異步,通常為幾十~幾百千波特(kilobaud)。但它要求有時鐘來實現(xiàn)發(fā)送端與接收端之間的同步,故而硬件復(fù)雜。常應(yīng)用于: ①計算機到計算機之間的通信。 ②計算機到CRT/外設(shè)之間的通信等。3.數(shù)據(jù)傳送方向 通常串行通信,數(shù)據(jù)在兩個站之間是雙向傳送的,A站可作為發(fā)送端,B站作為接收端;也可以A站作為接收端而B站作為發(fā)送端。根據(jù)要求又可以分為: (1)半雙工(HalfDuplex)

半雙工如圖11-5所示。 每次只能有一個站發(fā)送,即只能是由A站發(fā)送到B站,或是由B站發(fā)送到A站,不能A站和B站同時發(fā)送。 (2)完全雙工(FullDuplex)

完全雙工即兩個站同時都能發(fā)送。如圖11-6所示。4.信號的調(diào)制和解調(diào) 計算機通信是一種數(shù)字信號的通信,如圖11-7所示。

它要求傳送線的頻帶很寬,而在長距離通信時,通常是利用電話線傳送的,電話線不可能有這樣寬的頻帶,其寬帶如圖11-8所示。所以若有數(shù)字信號直接通信,經(jīng)過傳送線,信號就會產(chǎn)生畸變,如圖11-9所示。 所以,要用調(diào)制器(Modulator)把數(shù)字信號轉(zhuǎn)換為模擬信號;用解調(diào)器(Demodulator)檢測此模擬信號,再把它轉(zhuǎn)換成數(shù)字信號,如圖11-10所示。

FSK(FrequencyShiftKeying)是一種常用的調(diào)制方法:它把數(shù)字信號的“1”與“0”調(diào)制成不同頻率(易于鑒別)的模擬信號,其原理如圖11-11所示。 兩個不同頻率的模擬信號,分別由電子開關(guān)控制,在運算放大器的輸入端相加,而電子開關(guān)由要傳輸?shù)臄?shù)字信號(即數(shù)據(jù))控制。當(dāng)信號為“1”時,控制上面的電子開關(guān)導(dǎo)通,送出一串頻率較高的模擬信號;當(dāng)信號為“0”時,控制下面的電子開關(guān)導(dǎo)通,送出一串頻率較低的模擬信號,于是在運算放大器的輸出端,就得到了調(diào)制后的信號。5.串行I/O的實現(xiàn) 如上所述,串行傳送時數(shù)據(jù)是一位接一位依次順序傳送的,而在計算機中數(shù)據(jù)是并行傳送的。所以當(dāng)數(shù)據(jù)由計算機送至數(shù)據(jù)終端時,先要把并行的數(shù)據(jù)轉(zhuǎn)換為串行的再傳送,而在計算機接收由終端送來的數(shù)據(jù)時,先要把串行的數(shù)據(jù)轉(zhuǎn)換為并行的數(shù)據(jù)才能處理加工,這樣的轉(zhuǎn)換可以用軟件也可以用硬件實現(xiàn)。 (1)要實現(xiàn)CPU的并行數(shù)據(jù)變成串行數(shù)據(jù)輸出,或串行輸入的數(shù)據(jù)在CPU內(nèi)部要變成并行的數(shù)據(jù),可以由CPU通過軟件來實現(xiàn)。 串→并轉(zhuǎn)換或者并→串轉(zhuǎn)換完全可以由CPU通過軟件來實現(xiàn),外部只要增加簡單的電平轉(zhuǎn)換電路就可以了。但是這樣一來,CPU就要用相當(dāng)多的時間來進行串→并、并→串的轉(zhuǎn)換任務(wù),因此降低了CPU的利用率。為減輕CPU的負擔(dān),可以用硬件來實現(xiàn)。 (2)硬件UART(UniversalAsynchronousReceiver/Transmitter)——通用非同步(異步)接收器/發(fā)送器 硬件UART電路如圖11-12所示。 硬件UART既能發(fā)送,由并行→串行輸出;又能接收,由串行→并行輸入。它的每一部分都是一個雙緩沖器結(jié)構(gòu)。當(dāng)輸入時,由RxD來的串行數(shù)據(jù)先進入移位寄存器,然后并行輸入給緩沖器(變?yōu)椴⑿械?,由數(shù)據(jù)總線輸入至CPU。

在發(fā)送時,由CPU來的并行數(shù)據(jù)由緩沖器接收,然后送至移位寄存器,由TxD一位一位移位輸出(變?yōu)榇械?。 在UART中,還有一些控制和狀態(tài)信息。在UART工作時,接收器部分始終監(jiān)視著RxD線,當(dāng)發(fā)現(xiàn)一個起始位時,就開始了一個新的字符的接收過程。

UART是用外部時鐘來和接收的數(shù)據(jù)同步的。外部時鐘的周期Tc和數(shù)據(jù)位的周期Td之間的關(guān)系為:

Tc=Td/K其中,K=16或64。 若K=16,在每一個時鐘脈沖的上升沿采樣接收數(shù)據(jù)線,若發(fā)現(xiàn)了第一個“0”(即是起始位的開始),以后又連續(xù)采樣到8個“0”,則確定它是起始位(不是干擾信號),以后每隔16個時鐘脈沖采樣一次數(shù)據(jù)線,作為輸入數(shù)據(jù)。如圖11-13所示。 為了檢測長距離傳送中可能發(fā)生的錯誤,通常增加一個奇偶校驗位。UART在發(fā)送時,檢查每個要傳送的字符中的“1”的個數(shù),自動在奇偶校驗位上填“1”或“0”,使得“1”的總和(包括奇偶校驗位)為偶數(shù)即偶校驗(在奇校驗中則為奇數(shù)),如圖11-14所示。 在接收時,UART檢查字符的每一位以及奇偶校驗位的“1”的個數(shù)是否為偶數(shù),以確定是否發(fā)生傳送錯誤,如圖11-15所示。 為了使傳送過程更可靠,在UART中還設(shè)立了各種出錯標志。常用的出錯標志有以下三種: ①奇偶錯誤(Parityerror)

在接收時,UART檢查接收到的每一個字符“1”的個數(shù),若不符合要求,則置這個標志,發(fā)出奇偶校驗出錯信息。 ②幀錯誤(Frameerror)

若接收到的字符格式不符合規(guī)定(例如缺少停止位等),則置出錯標志,發(fā)出幀錯誤信息。 ③溢出(丟失)錯誤(Overrunerror) 上述的UART是一種雙緩沖器結(jié)構(gòu)。例如在接收時,接收的數(shù)據(jù)先由移位寄存器移位,把串行的變?yōu)椴⑿械?,然后送到接收?shù)據(jù)寄存器,由輸入指令輸入至CPU中,若數(shù)據(jù)已變?yōu)椴⑿星宜椭两邮諗?shù)據(jù)寄存器中時,UART就可以接收另一個新的字符。但是,若已接收到第二個字符的停止位,且要把第二個字符傳送到接收數(shù)據(jù)寄存器中時,CPU還未取走上一個數(shù)據(jù),于是就會出現(xiàn)數(shù)據(jù)丟失,這樣就置溢出錯誤標志。由此可見,若數(shù)據(jù)緩沖器的級數(shù)越多,則溢出錯誤的幾率就越少。6.串行通信的校驗方法 串行通信主要適用于遠距離通信,因而噪聲和干擾較大,為了保證高效而無差錯地傳送數(shù)據(jù),對傳送的數(shù)據(jù)進行校驗就成了串行通信中必不可少的重要環(huán)節(jié)。常用的校驗方法有:奇偶校驗,循環(huán)冗余校驗CRC(CyclicRedundancyCheck)等。 (1)奇偶校驗 奇偶校驗這種校驗方法主要用于對一個字符的傳送過程進行校驗。在發(fā)送時,在每一個字符的最高位之后(發(fā)送總是最低有效位D0先發(fā)送)都附加一個奇偶校驗位,這個校驗位本身有可能是“1”或“0”,加上這個校驗位,使所發(fā)送的任何字符中的“1”的個數(shù)始終為奇數(shù)——奇校驗,或偶數(shù)——偶校驗。 接收時,檢查所接收的字符連同這個奇偶校驗位,其為“1”的個數(shù)是否符合規(guī)定,若不符合規(guī)定就置出錯標志,供CPU查詢及處理。 根據(jù)國際電報電話咨詢委員會CCITT(ConsultativeCommitteeInternationalTelegraphandTelephone)的建議:在異步操作中使用偶校驗,而在同步操作中使用奇校驗。 奇偶校驗位的產(chǎn)生和檢驗,可用軟件或硬件的方法實現(xiàn)。 ①軟件奇偶校驗 在8088(8086)中,有判斷字符奇偶性的標志以及相應(yīng)的轉(zhuǎn)移指令。所以,用軟件產(chǎn)生奇偶較驗位(發(fā)送時),或進行奇偶校驗(接收時)是比較方便的。 若每字符為7位,用偶校驗,產(chǎn)生奇偶校驗位的程序如下:

MOV AL,DATA;取出要發(fā)送的數(shù)據(jù)

AND AL,AL;檢查數(shù)據(jù)本身的奇偶性

JPE TRANS;若“1”的個數(shù)已為偶數(shù)則 直接發(fā)送

OR AL,10000000B;否則,置最高 位為“1”TRANS:OUT (UART),AL;輸出 進行奇偶校驗的程序如下:

IN AL,UART;輸入接收的數(shù)據(jù)

AND AL,AL;檢查“1”的個數(shù)的奇 偶性

JP OERROR;若“1”的個數(shù)為奇 數(shù),轉(zhuǎn)至出錯處理

MOV DATA,AL;否則存入內(nèi)存 ②硬件奇偶校驗 目前現(xiàn)有單片的專門的奇偶發(fā)生器/校驗器器件,可對7位或8位字符進行奇偶校驗,這是一種中規(guī)模TTL集成電路。如SN54/742809位奇偶發(fā)生器位/校驗器(8位數(shù)據(jù)位加1位校驗位)和SN54/741808位奇偶發(fā)生器/校驗器(7位數(shù)據(jù)位加1位校驗位)。 但在實際的串行通信中,我們通常采用可編程的串行通信接口芯片如Intel8251A。這些芯片中包含硬件的奇偶校驗和產(chǎn)生電路,可用程序選擇是否用奇偶校驗,或選擇是奇校驗還是偶校驗。11.1.2串行接口標準EIARS-232C接口

EIA(ElectronicsIndustriesAssociation)RS(RecommendedStandard)-232C是目前最常用的一種串行通信接口。實質(zhì)上這是一種標準,它是一個25腳的連接器,它的每一個引腳的規(guī)定是標準的,對各種信號的電平規(guī)定也是標準的,因而便于互相連接。其最基本的最常用的信號規(guī)定,如圖11-17所示。 凡是符合RS-232C標準的計算機或外設(shè),都把它們往外發(fā)送的數(shù)據(jù)線連至25個引腳的連接器的插座的2號引腳,接收的數(shù)據(jù)線連至3號引腳。顯然在插頭連線時,一方的接收數(shù)據(jù)線應(yīng)連至對方的發(fā)送數(shù)據(jù)線,反之亦然。 在串行通信中,除了數(shù)據(jù)線和地線以外,為了保證信息的可靠傳送,還有若干條聯(lián)絡(luò)控制信息線。 請求發(fā)送RTS#(RequestToSend)

通常當(dāng)一個通信站的發(fā)送器已經(jīng)做好了發(fā)送的準備,為了了解接收方是否做好了接收的準備,是否可以開始發(fā)送,就向?qū)Ψ捷敵鲆粋€有效的RTS#信號(RTS#信號在轉(zhuǎn)換為TTL電平時為低電平有效,但在RS-232C的標準中另有規(guī)定,見下面的介紹),以等待對方的回答。 準許發(fā)送CTS#(ClearToSend)

通常當(dāng)接收方做好了接收的準備,在接收到發(fā)送方送來的有效的RTS#信號以后,就以有效的CTS#信號作為回答。 數(shù)據(jù)終端準備好DTR#(DataTerminalReady)

通常當(dāng)某一個站的接收器已做好了接收的準備,為了通知發(fā)送器可以發(fā)送了,就向發(fā)送器送出一個有效的DTR#信號。 數(shù)據(jù)裝置裝備好DSR#(DataSetReady)

當(dāng)發(fā)送方接收到接收方送來的有效的DTR#信號,在發(fā)送方做好了發(fā)送的準備后,就向接收方送出一個有效的DSR#信號作為回答。 載波檢測CD#(CarriedDetect)

有的器件把它當(dāng)作DSR#來使用。 總之,為了使設(shè)備具有通用性和互換性就制訂了標準,凡是遵照RS-232C標準的設(shè)備,它們的各種信號線都按規(guī)定的標準(即指定的引腳)連接。 其次,標準的另一個重要含義是這些信號的電氣性能也是標準的。

RS-232C對各種信號的規(guī)定如下: (1)在TxD和RxD線上

MARK(即表示為1)=-3V~-25V SPACE(即表示為0)=+3V~+25V例如:是符合標準的。 (2)在RTS#、CTS#、DSR#、DTR#、CD#等線上:

ON=+3V~+25V OFF=-3V~-25V

顯然,RS-232C規(guī)定的信號電平及極性與TTL是不同的,需要經(jīng)過轉(zhuǎn)換。需要從TTL轉(zhuǎn)換為RS-232C的電平,或從RS-232C轉(zhuǎn)換為TTL的電平。因此,RS-232C本來是一種標準,它規(guī)定了為了進行串行通信所需要的信號,規(guī)定了它們的引腳號,也規(guī)定了它們的電氣性能。由于目前大部分微機是TTL電平的,所以需要有轉(zhuǎn)換電路。于是,凡具有RS-232C串行接口的都需要有一個轉(zhuǎn)換電路(接口電路)。 1488和1498就是能實現(xiàn)從TTL→RS-232C(發(fā)送器)及從RS-232C→TTL(接收器)的器件,如圖11-18所示。

EIA電纜的任何一腳能夠直接接至任何別的腳而不會引起對驅(qū)動器和接受器的損壞。 對于計算機像對于CRT終端一樣,都看成是數(shù)據(jù)終端設(shè)備。 計算機和遠方以及當(dāng)?shù)亟K端(用查詢方式交換信號)的連接的示意圖見圖11-19。當(dāng)?shù)亟K端可直接通過RS-232接口連接;而遠方的要經(jīng)過調(diào)制后通過電話線傳送。在數(shù)據(jù)終端與調(diào)制器之間用RS-232接口。11.2Intel8251A可編程通信接口

11.2.18251的基本功能

Intel8251具有以下基本功能: (1)可用于同步和異步傳送。 (2)同步傳送:5~8位/字符,內(nèi)部或外部同步,可自動插入同步字符。 (3)異步傳送:5~8位/字符,時鐘速率為通信波特率的1、16或64倍。 (4)可產(chǎn)生中止字符(BreakCharacter);可產(chǎn)生1、1.5或2位的停止位??蓹z查假啟動位,自動檢測和處理中止字符。 (5)波特率:

DC—19.2K(異步);DC—64K(同步)。 (6)完全雙工,雙緩沖器發(fā)送器和接收器。 (7)出錯檢測:具有奇偶、溢出和幀錯誤等檢測電路。11.2.28251的方框圖 可編程串行通信接口芯片8251的結(jié)構(gòu),如圖11-20所示。整個8251可以分成5個主要部分:接收器、發(fā)送器、調(diào)制控制、讀寫控制以及I/O緩沖器。而I/O緩沖器由狀態(tài)緩沖器、發(fā)送數(shù)據(jù)/命令緩沖器和接收數(shù)據(jù)緩沖器三部分組成。8251的內(nèi)部由內(nèi)部數(shù)據(jù)總線實現(xiàn)相互之間的通信。1.接收器 接收器接收在RxD腳上的串行數(shù)據(jù),并按規(guī)定的格式把它轉(zhuǎn)換為并行數(shù)據(jù),存放在接收數(shù)據(jù)緩沖器中。當(dāng)8251工作于異步方式且允許接收和準備好接收數(shù)據(jù)時,它監(jiān)視RxD線。在無字符傳送時,RxD線為高電平(即所謂Mark),當(dāng)發(fā)現(xiàn)RxD線上出現(xiàn)低電平時,則認為它是起始位(即所謂Space),就啟動一個內(nèi)部計數(shù)器,當(dāng)計數(shù)到一個數(shù)據(jù)位寬度的一半(若時鐘脈沖頻率為波特率的16倍時,則為計數(shù)到第8個脈沖)時,又重新采樣RxD線,若其仍為低電平,則確認它為起始位,而不是噪聲信號。此后,每隔16個脈沖,采樣一次RxD線作為輸入信號,送至移位寄存器,經(jīng)過移位,又經(jīng)過奇偶校驗和去掉停止位后,就得到了轉(zhuǎn)換為并行的數(shù)據(jù),經(jīng)過8251的內(nèi)部數(shù)據(jù)總線傳送至接收數(shù)據(jù)緩沖器,同時發(fā)出RxRDY信號,告訴CPU字符已經(jīng)可用。 在同步方式,USART監(jiān)視RxD線,每出現(xiàn)一個數(shù)據(jù)位就把它移一位,然后把接收寄存器與含有同步字符(由程序給定)的寄存器相比較,看是否相等,若不相等則USART重復(fù)上述過程。當(dāng)找到同步字符后(若規(guī)定為兩個同步字符,則必須出現(xiàn)在RxD線上的兩個相鄰字符與規(guī)定的同步字符相同),則置SYNDET信號,表示已找到同步字符。在找到同步字符后,利用時鐘采樣和移位RxD線上的數(shù)據(jù)位,并且按規(guī)定的位數(shù),把它送至接收數(shù)據(jù)緩沖器,同時發(fā)出RxRDY信號。2.發(fā)送器 發(fā)送器接收CPU送來的并行數(shù)據(jù),加上起始位、奇偶校驗位和停止位,然后由TxD腳發(fā)送。 在異步方式時,發(fā)送器加上起始位,檢查并根據(jù)程序規(guī)定的檢驗要求(奇校驗還是偶校驗)加上適當(dāng)?shù)男r炍?,最后根?jù)程序的規(guī)定,加上1位、1.5位或2位停止位。 在同步方式,發(fā)送器在數(shù)據(jù)發(fā)送前插入一個或兩個同步字符(這些都在初始化時由程序給定),而在數(shù)據(jù)中,除了奇偶校驗位外,不再插入別的位。只有在USART工作于同步發(fā)送方式,而CPU來不及把新的字符送給它,則USART自動地在TxD線上插入同步字符,因為在同步方式時字符之間是不允許存在間隙的。 不論是在同步或異步工作方式,只有當(dāng)程序設(shè)置了TxEN(TransmitterEnable——允許發(fā)送)和CTS#(CleartoSend——這是對調(diào)制器發(fā)出的請求發(fā)送的響應(yīng)信號)有效時,才能發(fā)送。 另外,發(fā)送器的另一個功能是能發(fā)送中止符(BREAK)。中止符是由在通信線上的連續(xù)的Space符組成,它是用來在完全雙工通信時中止發(fā)送終端的。只要8251的命令寄存器的位3(SBRK)為“1”,則USART就始終發(fā)送中止符。3.I/O控制 讀/寫控制邏輯對CPU輸出的控制信號進行譯碼以實現(xiàn)如表11-1所示的讀/寫功能。USART是以RD#或WR#信號中的一個為“0”來實現(xiàn)I/O操作的。若兩者中無一為“0”,則USART不執(zhí)行I/O操作;若兩者全為“0”,這是一種無確定結(jié)果的非法狀態(tài)。11.2.38251的接口信號 8251是用來作為CPU與外設(shè)或調(diào)制解調(diào)器之間的接口,如圖11-21所示。故它的接口信號可以分為兩組:一組為與CPU接口的信號;另一組為與外設(shè)(或調(diào)制解調(diào)器)接口的信號。1.與CPU的接口信號 ①DB7~DB0——8251的外部三態(tài)雙向數(shù)據(jù)總線,它可以連到CPU的數(shù)據(jù)總線。CPU與8251之間的命令、數(shù)據(jù)以及狀態(tài)信息都是通過這組數(shù)據(jù)總線傳送的。 ②CLK——由這個CLK輸入產(chǎn)生8251的內(nèi)部時序。CLK的頻率在同步方式工作時,必須大于接收器和發(fā)送器輸入時鐘頻率的30倍;在異步方式工作時,必須大于輸入時鐘的4.5倍。 另外,規(guī)定CLK的周期要在0.42μs~1.35μs的范圍內(nèi)。 ③CS#——選片信號,它應(yīng)由CPU的IO/M#及地址信號經(jīng)譯碼后供給。 ④C/D#——控制/數(shù)據(jù)端。在CPU讀操作時,若此端為高電平,由數(shù)據(jù)總線讀入的是8251的狀態(tài)信息;低電平時,讀入的是數(shù)據(jù)。在CPU寫操作時,此端為高電平,CPU通過數(shù)據(jù)總線輸出的是命令信息;低電平時,輸出的是數(shù)據(jù)。此端通常連到CPU的地址總線的A0。 ⑤TxRDY(TransmitterReady)——發(fā)送準備好信號。只有當(dāng)USART允許發(fā)送(即CTS#是低電平和TxEN是高電平),且發(fā)送命令/數(shù)據(jù)緩沖器為空時,此信號有效。它用以通知CPU,8251已準備好接收一個數(shù)據(jù)。當(dāng)CPU與8251之間用查詢方式(Polling)交換信息時,此信號可作為一個“狀態(tài)”信號(handshake);在用中斷方式交換信息時,此信號可作為8251的一個中斷請求信號。當(dāng)USART從CPU接收了一個字符時,TxRDY復(fù)位。 ⑥TxE(TransmitterEmpty)——發(fā)送器空信號。當(dāng)它有效(高電平有效)時,表示發(fā)送器中的并行到串行轉(zhuǎn)換器空。在同步方式工作時,若CPU來不及輸出一個新的字符,則它變高,同時發(fā)送器在輸出線上插入同步字符,以填補傳送空隙。 ⑦RxRDY(ReceiverReady)——接收器準備好信號。若命令寄存器的RxE(ReceiverEnable)位置位時,當(dāng)8251已經(jīng)從它的串行輸入端接受了一個字符,可以傳送到CPU時,此信號有效。在查詢方式時,此信號可作為一個“狀態(tài)”信號;在中斷方式時可作為一個中斷請求信號。當(dāng)CPU讀了一個字符后,此信號復(fù)位。 ⑧SYNDET(SynchronousDetect)——同步檢測信號。它只用于同步方式。它是作為輸入還是輸出,取決于初始化程序?qū)?251是工作于內(nèi)同步或外同步的規(guī)定。在RESET時,此信號復(fù)位。當(dāng)工作于內(nèi)同步方式時,在8251已經(jīng)檢測到所要求的同步字符,此信號為高,輸出以指示USART已達到同步。若8251由程序規(guī)定為雙字符同步時,此信號在第二個同步字符的最后一位的中間變高。當(dāng)CPU執(zhí)行一次讀狀態(tài)操作時,SYNDET復(fù)位。 當(dāng)在外同步方式工作時,從這個輸入端輸入的一個正跳沿,使8251在下一個RxC的下降沿開始收集字符。SYNDET輸入高電平至少應(yīng)維持一個RxC周期,直至RxC出現(xiàn)下一個下降沿。2.與裝置的接口信號 ①DTR#(DataTerminalReady)——數(shù)據(jù)終端準備好。這是一個通用的輸出信號,低電平有效。它能由命令指令的位置“1”變?yōu)橛行В靡员硎綜PU準備就緒。 ②DSR#(DataSetReady)——數(shù)據(jù)裝置準備好。這是一個通用的輸入信號,低電平有效。用以表示調(diào)制解調(diào)器或外設(shè)已準備好。CPU可通過讀入狀態(tài)操作,在狀態(tài)寄存器的位7檢測這個信號。DTR#與DSR#是一組信號,通常用于接收器。 ③RTS#(ReguestToSend)——讀求傳送,這是一個輸出信號等效于DTR。這個信號用于通知調(diào)制器CPU準備好發(fā)送??捎擅钪噶畹奈?置1來使其有效(低電平有效)。 ④CTS#(ClearToSend)——準許傳送,這是調(diào)制器對USART的RTS信號的響應(yīng),當(dāng)其有效時(低電平)USART發(fā)送數(shù)據(jù)。 ⑤RxC(ReceiverClock)——接收器時鐘。這個時鐘控制USART接收字符的速度。 在同步方式,RxC等于波特率,由調(diào)制解調(diào)器供給。 在異步方式,RxC是波特率的1、16或64倍,由方式控制指令預(yù)先選擇。USART在RxC的上升沿采樣數(shù)據(jù)。 ⑥RxD#(ReceiverData)——接收器數(shù)據(jù),字符在這條線上串行地被接收,在USART中轉(zhuǎn)換為并行的字符。高電平表示Mark即“1”。 ⑦TxC#(TransmitterClock)——發(fā)送器時鐘,這個時鐘控制USART發(fā)送字符的速度。時鐘速度與波特率之間的關(guān)系同RxC#。數(shù)據(jù)在TxC#的下降沿由USART移位輸出。 ⑧TxD#(TransmitterData)——發(fā)送器數(shù)據(jù)。由CPU送來的并行的字符在這條線上被串行地發(fā)送。高電平代表Mark即“1”。11.2.48251的編程 8251是一個可編程的多功能通信接口。所以在具體使用時必須對它進行初始化編程,以確定它的具體工作方式。例如:規(guī)定工作于同步還是異步方式;傳送的波特率;字符格式等。 初始化編程必須在系統(tǒng)復(fù)位(RESET)以后,在USART工作以前進行,即USART不論工作于任何方式,都必須先經(jīng)過初始化。 初始化編程過程的流程圖如圖11-22所示。1.方式選擇指令 方式選擇指令格式如圖11-23所示。 指令可以分為四組,每組兩位。首先,由D1D0確定是工作于同步方式還是異步方式。當(dāng)D1D0=00時,則為同步方式;而在D1D0≠00時,則為異步方式,且D1D0的三種組合用以選擇輸入時鐘頻率與波特率之間的系數(shù)。

D3D2用以確定字符的位數(shù),D5D4用以確定奇偶校驗的性質(zhì),它們的規(guī)定都是很明確的。D7D6在同步和異步方式時的意義是不同的,異步時用以規(guī)定停止位的位數(shù);同步時用以確定是內(nèi)同步還是外同步,以及同步字符的個數(shù)。 在同步方式時,緊跟在方式指令后面的是由程序輸入的同步字符。它是用與方式指令類似的方法由CPU輸給USART的。2.命令指令 在輸入同步字符后,或在異步方式時,在方式選擇指令后應(yīng)由CPU輸給命令指令,其格式如圖11-24所示。 方式選擇指令是規(guī)定8251的工作方式,而命令指令直接使8251處于規(guī)定的工作狀態(tài),以準備接收或發(fā)送數(shù)據(jù)。3.狀態(tài)寄存器 8251上還有狀態(tài)寄存器,CPU可通過I/O讀操作把8251的狀態(tài)字讀入CPU,用以控制CPU與8251之間的數(shù)據(jù)交換。 讀狀態(tài)字時,C/D#端為“1”。狀態(tài)字的格式如圖11-25所示。 狀態(tài)寄存器的TxRDY,只要數(shù)據(jù)緩沖器一空就置位;而引腳TxRDY只能當(dāng)條件: 數(shù)據(jù)緩沖器空·CTS#·TxEN成立時,才置位。11.2.58251應(yīng)用舉例 我們以兩臺微型計算機之間進行雙機串行通信的硬件連接和軟件編程來說明,8251在實際中是如何應(yīng)用的。1.要求 在A、B兩臺微機之間進行串行通信,A機發(fā)送,B機接收。要求把A機上開發(fā)的應(yīng)用程序(其長度為2DH)傳送到B機中去。采用異步方式,字符長度為8位,2個停止位,波特率因子為64,無校驗,波特率為4800。CPU與8251之間采用查詢方式交換數(shù)據(jù)。端口地址分配是:命令/狀態(tài)口為309H,數(shù)據(jù)口為308H。2.分析 由于是近距離傳輸,可以不用MODEM,而直接互連。同時采用查詢方式,故接收/發(fā)送程序中只需要檢查發(fā)送/接收的準備好狀態(tài)位是否置位,在準備好時就發(fā)送或者接收一個字節(jié)。3.設(shè)計 (1)硬件連接 根據(jù)以上分析把兩臺微機都當(dāng)作DTE。它們之間只需TxD、RxD和SG(信號地)三根線連接就能通信。采用8251A作為接口的主芯片再配置少量的附加電路,如波特率發(fā)生器、RS-232C與TTL電平轉(zhuǎn)換電路、地址譯碼器電路等就可構(gòu)成一個串行通信接口。如圖11-26所示。 (2)軟件編程 接收程序和發(fā)送程序分開編寫,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論