




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第11章串行通信及接口電路 本章講述:11.1串行通信11.2Intel8251A可編程通信接口11.1串行通信
11.1.1概述
CPU與外部的信息交換稱(chēng)為通信(Communication)?;镜耐ㄐ欧绞接袃煞N: 并行通信——數(shù)據(jù)的各位同時(shí)傳送; 串行通信——數(shù)據(jù)一位一位順序傳送。 并行通信與串行通信方式如圖11-1所示。1.串行通信的優(yōu)點(diǎn) 從圖11-1中可以看到,在并行通信中數(shù)據(jù)有多少位就要有同樣數(shù)量的傳送線(xiàn),而串行通信只要一條傳送線(xiàn)。故串行通信節(jié)省傳送線(xiàn),特別是當(dāng)位數(shù)很多和長(zhǎng)距離傳送時(shí),這個(gè)優(yōu)點(diǎn)就更為突出。例如,微型計(jì)算機(jī)要將數(shù)據(jù)傳送到遠(yuǎn)方的終端,或傳送到大的計(jì)算中心,則常用通信線(xiàn)路(電話(huà)線(xiàn)等)進(jìn)行傳送,這時(shí)采用串行傳送可以大大減少傳送線(xiàn),從而大大地降低成本。但是串行傳送的速度慢,若并行傳送所需的時(shí)間為T(mén),則串行傳送的時(shí)間至少為NT(其中N為位數(shù))。2.同步通信與異步通信 在串行通信中,有兩種最基本的通信方式: (1)非同步(異步)通信ASYNC(AsynchronousDataCommunication)
它用一個(gè)起始位表示字符的開(kāi)始,用停止位表示字符的結(jié)束來(lái)構(gòu)成一幀。如圖11-2所示。起始位占1位,字符編碼為7位(ASCII碼),第8位為奇偶校驗(yàn)位,即加上這一位(第8位)使字符中為“1”的位為奇數(shù)(或偶數(shù)),停止位可以是1位、1.5位或2位。于是一個(gè)字符就由10個(gè)或10.5個(gè)或11個(gè)二進(jìn)制位構(gòu)成。 用這樣的方式表示字符,則字符可以一個(gè)挨著一個(gè)傳送。 在非同步數(shù)據(jù)傳送中,在CPU與外設(shè)之間必須有兩項(xiàng)規(guī)定: ①字符格式 即前述的字符的編碼形式,奇偶校驗(yàn)形式,以及起始位和停止位的規(guī)定。例如,用ASCII編碼,字符為7位,加一位奇偶校驗(yàn)位,一位起始位,以及一位停止位,共10位。 ②數(shù)據(jù)信號(hào)傳送速率 數(shù)據(jù)信號(hào)傳送速率的規(guī)定,對(duì)于CPU與外界的通信是很重要的。假如數(shù)據(jù)傳送的速率是120字符/秒,而每一字符包含10個(gè)數(shù)據(jù)位,則每秒傳送的二進(jìn)制位數(shù)(b/s,常稱(chēng)為bps)為: 10×120=1200(位/秒)=1200(bps)
則每一位的傳送時(shí)間即為:
Td=1/1200=0.833(ms) ③波特率(Baudrate)
串行通信的信號(hào)常常要通過(guò)調(diào)制解調(diào)器進(jìn)行傳送。 在數(shù)據(jù)源出口與調(diào)制器入口之間,或者解調(diào)器出口與數(shù)據(jù)信宿入口之間,用數(shù)據(jù)信號(hào)傳輸率(bps)來(lái)描述數(shù)字信號(hào)的傳輸速度;而在調(diào)制器出口、通信線(xiàn)路與解調(diào)器入口之間,用單位時(shí)間內(nèi)線(xiàn)路狀態(tài)變化(電信號(hào)變化)的數(shù)目即波特率來(lái)描述傳輸速度,如圖11-3所示。 當(dāng)采用“零調(diào)制”或“空調(diào)制”,即基波傳輸時(shí),或者在單位時(shí)間內(nèi)僅調(diào)制或解調(diào)一個(gè)信號(hào)時(shí),則數(shù)字信號(hào)傳輸率(bps)與波特率是一致的。在采用調(diào)制解調(diào)器的載波傳輸系統(tǒng)中,兩者間的關(guān)系為:
C=B·log2n其中:
C——數(shù)據(jù)信號(hào)傳輸速率(bps); B——調(diào)制速率(baud); n——調(diào)制信號(hào)數(shù)或線(xiàn)路狀態(tài)數(shù),它是2的整數(shù)倍。 異步通信的傳送速度在50~9600波特之間,常用于計(jì)算機(jī)到CRT終端和字符打印機(jī)之間的通信,直通電報(bào)以及無(wú)線(xiàn)電通信的數(shù)據(jù)發(fā)送等。 (2)同步傳送 在異步傳送中,每一個(gè)字符要用起始位和停止位作為字符開(kāi)始和結(jié)束的標(biāo)志,占用了時(shí)間。所以,在數(shù)據(jù)塊傳送時(shí),為了提高速度,就去掉這些標(biāo)志,采用同步傳送,于是在數(shù)據(jù)塊開(kāi)始處就要用同步字符來(lái)指示。如圖11-4所示。 同步傳送的速度高于異步,通常為幾十~幾百千波特(kilobaud)。但它要求有時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端與接收端之間的同步,故而硬件復(fù)雜。常應(yīng)用于: ①計(jì)算機(jī)到計(jì)算機(jī)之間的通信。 ②計(jì)算機(jī)到CRT/外設(shè)之間的通信等。3.數(shù)據(jù)傳送方向 通常串行通信,數(shù)據(jù)在兩個(gè)站之間是雙向傳送的,A站可作為發(fā)送端,B站作為接收端;也可以A站作為接收端而B(niǎo)站作為發(fā)送端。根據(jù)要求又可以分為: (1)半雙工(HalfDuplex)
半雙工如圖11-5所示。 每次只能有一個(gè)站發(fā)送,即只能是由A站發(fā)送到B站,或是由B站發(fā)送到A站,不能A站和B站同時(shí)發(fā)送。 (2)完全雙工(FullDuplex)
完全雙工即兩個(gè)站同時(shí)都能發(fā)送。如圖11-6所示。4.信號(hào)的調(diào)制和解調(diào) 計(jì)算機(jī)通信是一種數(shù)字信號(hào)的通信,如圖11-7所示。
它要求傳送線(xiàn)的頻帶很寬,而在長(zhǎng)距離通信時(shí),通常是利用電話(huà)線(xiàn)傳送的,電話(huà)線(xiàn)不可能有這樣寬的頻帶,其寬帶如圖11-8所示。所以若有數(shù)字信號(hào)直接通信,經(jīng)過(guò)傳送線(xiàn),信號(hào)就會(huì)產(chǎn)生畸變,如圖11-9所示。 所以,要用調(diào)制器(Modulator)把數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào);用解調(diào)器(Demodulator)檢測(cè)此模擬信號(hào),再把它轉(zhuǎn)換成數(shù)字信號(hào),如圖11-10所示。
FSK(FrequencyShiftKeying)是一種常用的調(diào)制方法:它把數(shù)字信號(hào)的“1”與“0”調(diào)制成不同頻率(易于鑒別)的模擬信號(hào),其原理如圖11-11所示。 兩個(gè)不同頻率的模擬信號(hào),分別由電子開(kāi)關(guān)控制,在運(yùn)算放大器的輸入端相加,而電子開(kāi)關(guān)由要傳輸?shù)臄?shù)字信號(hào)(即數(shù)據(jù))控制。當(dāng)信號(hào)為“1”時(shí),控制上面的電子開(kāi)關(guān)導(dǎo)通,送出一串頻率較高的模擬信號(hào);當(dāng)信號(hào)為“0”時(shí),控制下面的電子開(kāi)關(guān)導(dǎo)通,送出一串頻率較低的模擬信號(hào),于是在運(yùn)算放大器的輸出端,就得到了調(diào)制后的信號(hào)。5.串行I/O的實(shí)現(xiàn) 如上所述,串行傳送時(shí)數(shù)據(jù)是一位接一位依次順序傳送的,而在計(jì)算機(jī)中數(shù)據(jù)是并行傳送的。所以當(dāng)數(shù)據(jù)由計(jì)算機(jī)送至數(shù)據(jù)終端時(shí),先要把并行的數(shù)據(jù)轉(zhuǎn)換為串行的再傳送,而在計(jì)算機(jī)接收由終端送來(lái)的數(shù)據(jù)時(shí),先要把串行的數(shù)據(jù)轉(zhuǎn)換為并行的數(shù)據(jù)才能處理加工,這樣的轉(zhuǎn)換可以用軟件也可以用硬件實(shí)現(xiàn)。 (1)要實(shí)現(xiàn)CPU的并行數(shù)據(jù)變成串行數(shù)據(jù)輸出,或串行輸入的數(shù)據(jù)在CPU內(nèi)部要變成并行的數(shù)據(jù),可以由CPU通過(guò)軟件來(lái)實(shí)現(xiàn)。 串→并轉(zhuǎn)換或者并→串轉(zhuǎn)換完全可以由CPU通過(guò)軟件來(lái)實(shí)現(xiàn),外部只要增加簡(jiǎn)單的電平轉(zhuǎn)換電路就可以了。但是這樣一來(lái),CPU就要用相當(dāng)多的時(shí)間來(lái)進(jìn)行串→并、并→串的轉(zhuǎn)換任務(wù),因此降低了CPU的利用率。為減輕CPU的負(fù)擔(dān),可以用硬件來(lái)實(shí)現(xiàn)。 (2)硬件UART(UniversalAsynchronousReceiver/Transmitter)——通用非同步(異步)接收器/發(fā)送器 硬件UART電路如圖11-12所示。 硬件UART既能發(fā)送,由并行→串行輸出;又能接收,由串行→并行輸入。它的每一部分都是一個(gè)雙緩沖器結(jié)構(gòu)。當(dāng)輸入時(shí),由RxD來(lái)的串行數(shù)據(jù)先進(jìn)入移位寄存器,然后并行輸入給緩沖器(變?yōu)椴⑿械?,由數(shù)據(jù)總線(xiàn)輸入至CPU。
在發(fā)送時(shí),由CPU來(lái)的并行數(shù)據(jù)由緩沖器接收,然后送至移位寄存器,由TxD一位一位移位輸出(變?yōu)榇械?。 在UART中,還有一些控制和狀態(tài)信息。在UART工作時(shí),接收器部分始終監(jiān)視著RxD線(xiàn),當(dāng)發(fā)現(xiàn)一個(gè)起始位時(shí),就開(kāi)始了一個(gè)新的字符的接收過(guò)程。
UART是用外部時(shí)鐘來(lái)和接收的數(shù)據(jù)同步的。外部時(shí)鐘的周期Tc和數(shù)據(jù)位的周期Td之間的關(guān)系為:
Tc=Td/K其中,K=16或64。 若K=16,在每一個(gè)時(shí)鐘脈沖的上升沿采樣接收數(shù)據(jù)線(xiàn),若發(fā)現(xiàn)了第一個(gè)“0”(即是起始位的開(kāi)始),以后又連續(xù)采樣到8個(gè)“0”,則確定它是起始位(不是干擾信號(hào)),以后每隔16個(gè)時(shí)鐘脈沖采樣一次數(shù)據(jù)線(xiàn),作為輸入數(shù)據(jù)。如圖11-13所示。 為了檢測(cè)長(zhǎng)距離傳送中可能發(fā)生的錯(cuò)誤,通常增加一個(gè)奇偶校驗(yàn)位。UART在發(fā)送時(shí),檢查每個(gè)要傳送的字符中的“1”的個(gè)數(shù),自動(dòng)在奇偶校驗(yàn)位上填“1”或“0”,使得“1”的總和(包括奇偶校驗(yàn)位)為偶數(shù)即偶校驗(yàn)(在奇校驗(yàn)中則為奇數(shù)),如圖11-14所示。 在接收時(shí),UART檢查字符的每一位以及奇偶校驗(yàn)位的“1”的個(gè)數(shù)是否為偶數(shù),以確定是否發(fā)生傳送錯(cuò)誤,如圖11-15所示。 為了使傳送過(guò)程更可靠,在UART中還設(shè)立了各種出錯(cuò)標(biāo)志。常用的出錯(cuò)標(biāo)志有以下三種: ①奇偶錯(cuò)誤(Parityerror)
在接收時(shí),UART檢查接收到的每一個(gè)字符“1”的個(gè)數(shù),若不符合要求,則置這個(gè)標(biāo)志,發(fā)出奇偶校驗(yàn)出錯(cuò)信息。 ②幀錯(cuò)誤(Frameerror)
若接收到的字符格式不符合規(guī)定(例如缺少停止位等),則置出錯(cuò)標(biāo)志,發(fā)出幀錯(cuò)誤信息。 ③溢出(丟失)錯(cuò)誤(Overrunerror) 上述的UART是一種雙緩沖器結(jié)構(gòu)。例如在接收時(shí),接收的數(shù)據(jù)先由移位寄存器移位,把串行的變?yōu)椴⑿械?,然后送到接收?shù)據(jù)寄存器,由輸入指令輸入至CPU中,若數(shù)據(jù)已變?yōu)椴⑿星宜椭两邮諗?shù)據(jù)寄存器中時(shí),UART就可以接收另一個(gè)新的字符。但是,若已接收到第二個(gè)字符的停止位,且要把第二個(gè)字符傳送到接收數(shù)據(jù)寄存器中時(shí),CPU還未取走上一個(gè)數(shù)據(jù),于是就會(huì)出現(xiàn)數(shù)據(jù)丟失,這樣就置溢出錯(cuò)誤標(biāo)志。由此可見(jiàn),若數(shù)據(jù)緩沖器的級(jí)數(shù)越多,則溢出錯(cuò)誤的幾率就越少。6.串行通信的校驗(yàn)方法 串行通信主要適用于遠(yuǎn)距離通信,因而噪聲和干擾較大,為了保證高效而無(wú)差錯(cuò)地傳送數(shù)據(jù),對(duì)傳送的數(shù)據(jù)進(jìn)行校驗(yàn)就成了串行通信中必不可少的重要環(huán)節(jié)。常用的校驗(yàn)方法有:奇偶校驗(yàn),循環(huán)冗余校驗(yàn)CRC(CyclicRedundancyCheck)等。 (1)奇偶校驗(yàn) 奇偶校驗(yàn)這種校驗(yàn)方法主要用于對(duì)一個(gè)字符的傳送過(guò)程進(jìn)行校驗(yàn)。在發(fā)送時(shí),在每一個(gè)字符的最高位之后(發(fā)送總是最低有效位D0先發(fā)送)都附加一個(gè)奇偶校驗(yàn)位,這個(gè)校驗(yàn)位本身有可能是“1”或“0”,加上這個(gè)校驗(yàn)位,使所發(fā)送的任何字符中的“1”的個(gè)數(shù)始終為奇數(shù)——奇校驗(yàn),或偶數(shù)——偶校驗(yàn)。 接收時(shí),檢查所接收的字符連同這個(gè)奇偶校驗(yàn)位,其為“1”的個(gè)數(shù)是否符合規(guī)定,若不符合規(guī)定就置出錯(cuò)標(biāo)志,供CPU查詢(xún)及處理。 根據(jù)國(guó)際電報(bào)電話(huà)咨詢(xún)委員會(huì)CCITT(ConsultativeCommitteeInternationalTelegraphandTelephone)的建議:在異步操作中使用偶校驗(yàn),而在同步操作中使用奇校驗(yàn)。 奇偶校驗(yàn)位的產(chǎn)生和檢驗(yàn),可用軟件或硬件的方法實(shí)現(xiàn)。 ①軟件奇偶校驗(yàn) 在8088(8086)中,有判斷字符奇偶性的標(biāo)志以及相應(yīng)的轉(zhuǎn)移指令。所以,用軟件產(chǎn)生奇偶較驗(yàn)位(發(fā)送時(shí)),或進(jìn)行奇偶校驗(yàn)(接收時(shí))是比較方便的。 若每字符為7位,用偶校驗(yàn),產(chǎn)生奇偶校驗(yàn)位的程序如下:
MOV AL,DATA;取出要發(fā)送的數(shù)據(jù)
AND AL,AL;檢查數(shù)據(jù)本身的奇偶性
JPE TRANS;若“1”的個(gè)數(shù)已為偶數(shù)則 直接發(fā)送
OR AL,10000000B;否則,置最高 位為“1”TRANS:OUT (UART),AL;輸出 進(jìn)行奇偶校驗(yàn)的程序如下:
IN AL,UART;輸入接收的數(shù)據(jù)
AND AL,AL;檢查“1”的個(gè)數(shù)的奇 偶性
JP OERROR;若“1”的個(gè)數(shù)為奇 數(shù),轉(zhuǎn)至出錯(cuò)處理
MOV DATA,AL;否則存入內(nèi)存 ②硬件奇偶校驗(yàn) 目前現(xiàn)有單片的專(zhuān)門(mén)的奇偶發(fā)生器/校驗(yàn)器器件,可對(duì)7位或8位字符進(jìn)行奇偶校驗(yàn),這是一種中規(guī)模TTL集成電路。如SN54/742809位奇偶發(fā)生器位/校驗(yàn)器(8位數(shù)據(jù)位加1位校驗(yàn)位)和SN54/741808位奇偶發(fā)生器/校驗(yàn)器(7位數(shù)據(jù)位加1位校驗(yàn)位)。 但在實(shí)際的串行通信中,我們通常采用可編程的串行通信接口芯片如Intel8251A。這些芯片中包含硬件的奇偶校驗(yàn)和產(chǎn)生電路,可用程序選擇是否用奇偶校驗(yàn),或選擇是奇校驗(yàn)還是偶校驗(yàn)。11.1.2串行接口標(biāo)準(zhǔn)EIARS-232C接口
EIA(ElectronicsIndustriesAssociation)RS(RecommendedStandard)-232C是目前最常用的一種串行通信接口。實(shí)質(zhì)上這是一種標(biāo)準(zhǔn),它是一個(gè)25腳的連接器,它的每一個(gè)引腳的規(guī)定是標(biāo)準(zhǔn)的,對(duì)各種信號(hào)的電平規(guī)定也是標(biāo)準(zhǔn)的,因而便于互相連接。其最基本的最常用的信號(hào)規(guī)定,如圖11-17所示。 凡是符合RS-232C標(biāo)準(zhǔn)的計(jì)算機(jī)或外設(shè),都把它們往外發(fā)送的數(shù)據(jù)線(xiàn)連至25個(gè)引腳的連接器的插座的2號(hào)引腳,接收的數(shù)據(jù)線(xiàn)連至3號(hào)引腳。顯然在插頭連線(xiàn)時(shí),一方的接收數(shù)據(jù)線(xiàn)應(yīng)連至對(duì)方的發(fā)送數(shù)據(jù)線(xiàn),反之亦然。 在串行通信中,除了數(shù)據(jù)線(xiàn)和地線(xiàn)以外,為了保證信息的可靠傳送,還有若干條聯(lián)絡(luò)控制信息線(xiàn)。 請(qǐng)求發(fā)送RTS#(RequestToSend)
通常當(dāng)一個(gè)通信站的發(fā)送器已經(jīng)做好了發(fā)送的準(zhǔn)備,為了了解接收方是否做好了接收的準(zhǔn)備,是否可以開(kāi)始發(fā)送,就向?qū)Ψ捷敵鲆粋€(gè)有效的RTS#信號(hào)(RTS#信號(hào)在轉(zhuǎn)換為T(mén)TL電平時(shí)為低電平有效,但在RS-232C的標(biāo)準(zhǔn)中另有規(guī)定,見(jiàn)下面的介紹),以等待對(duì)方的回答。 準(zhǔn)許發(fā)送CTS#(ClearToSend)
通常當(dāng)接收方做好了接收的準(zhǔn)備,在接收到發(fā)送方送來(lái)的有效的RTS#信號(hào)以后,就以有效的CTS#信號(hào)作為回答。 數(shù)據(jù)終端準(zhǔn)備好DTR#(DataTerminalReady)
通常當(dāng)某一個(gè)站的接收器已做好了接收的準(zhǔn)備,為了通知發(fā)送器可以發(fā)送了,就向發(fā)送器送出一個(gè)有效的DTR#信號(hào)。 數(shù)據(jù)裝置裝備好DSR#(DataSetReady)
當(dāng)發(fā)送方接收到接收方送來(lái)的有效的DTR#信號(hào),在發(fā)送方做好了發(fā)送的準(zhǔn)備后,就向接收方送出一個(gè)有效的DSR#信號(hào)作為回答。 載波檢測(cè)CD#(CarriedDetect)
有的器件把它當(dāng)作DSR#來(lái)使用。 總之,為了使設(shè)備具有通用性和互換性就制訂了標(biāo)準(zhǔn),凡是遵照RS-232C標(biāo)準(zhǔn)的設(shè)備,它們的各種信號(hào)線(xiàn)都按規(guī)定的標(biāo)準(zhǔn)(即指定的引腳)連接。 其次,標(biāo)準(zhǔn)的另一個(gè)重要含義是這些信號(hào)的電氣性能也是標(biāo)準(zhǔn)的。
RS-232C對(duì)各種信號(hào)的規(guī)定如下: (1)在TxD和RxD線(xiàn)上
MARK(即表示為1)=-3V~-25V SPACE(即表示為0)=+3V~+25V例如:是符合標(biāo)準(zhǔn)的。 (2)在RTS#、CTS#、DSR#、DTR#、CD#等線(xiàn)上:
ON=+3V~+25V OFF=-3V~-25V
顯然,RS-232C規(guī)定的信號(hào)電平及極性與TTL是不同的,需要經(jīng)過(guò)轉(zhuǎn)換。需要從TTL轉(zhuǎn)換為RS-232C的電平,或從RS-232C轉(zhuǎn)換為T(mén)TL的電平。因此,RS-232C本來(lái)是一種標(biāo)準(zhǔn),它規(guī)定了為了進(jìn)行串行通信所需要的信號(hào),規(guī)定了它們的引腳號(hào),也規(guī)定了它們的電氣性能。由于目前大部分微機(jī)是TTL電平的,所以需要有轉(zhuǎn)換電路。于是,凡具有RS-232C串行接口的都需要有一個(gè)轉(zhuǎn)換電路(接口電路)。 1488和1498就是能實(shí)現(xiàn)從TTL→RS-232C(發(fā)送器)及從RS-232C→TTL(接收器)的器件,如圖11-18所示。
EIA電纜的任何一腳能夠直接接至任何別的腳而不會(huì)引起對(duì)驅(qū)動(dòng)器和接受器的損壞。 對(duì)于計(jì)算機(jī)像對(duì)于CRT終端一樣,都看成是數(shù)據(jù)終端設(shè)備。 計(jì)算機(jī)和遠(yuǎn)方以及當(dāng)?shù)亟K端(用查詢(xún)方式交換信號(hào))的連接的示意圖見(jiàn)圖11-19。當(dāng)?shù)亟K端可直接通過(guò)RS-232接口連接;而遠(yuǎn)方的要經(jīng)過(guò)調(diào)制后通過(guò)電話(huà)線(xiàn)傳送。在數(shù)據(jù)終端與調(diào)制器之間用RS-232接口。11.2Intel8251A可編程通信接口
11.2.18251的基本功能
Intel8251具有以下基本功能: (1)可用于同步和異步傳送。 (2)同步傳送:5~8位/字符,內(nèi)部或外部同步,可自動(dòng)插入同步字符。 (3)異步傳送:5~8位/字符,時(shí)鐘速率為通信波特率的1、16或64倍。 (4)可產(chǎn)生中止字符(BreakCharacter);可產(chǎn)生1、1.5或2位的停止位??蓹z查假啟動(dòng)位,自動(dòng)檢測(cè)和處理中止字符。 (5)波特率:
DC—19.2K(異步);DC—64K(同步)。 (6)完全雙工,雙緩沖器發(fā)送器和接收器。 (7)出錯(cuò)檢測(cè):具有奇偶、溢出和幀錯(cuò)誤等檢測(cè)電路。11.2.28251的方框圖 可編程串行通信接口芯片8251的結(jié)構(gòu),如圖11-20所示。整個(gè)8251可以分成5個(gè)主要部分:接收器、發(fā)送器、調(diào)制控制、讀寫(xiě)控制以及I/O緩沖器。而I/O緩沖器由狀態(tài)緩沖器、發(fā)送數(shù)據(jù)/命令緩沖器和接收數(shù)據(jù)緩沖器三部分組成。8251的內(nèi)部由內(nèi)部數(shù)據(jù)總線(xiàn)實(shí)現(xiàn)相互之間的通信。1.接收器 接收器接收在RxD腳上的串行數(shù)據(jù),并按規(guī)定的格式把它轉(zhuǎn)換為并行數(shù)據(jù),存放在接收數(shù)據(jù)緩沖器中。當(dāng)8251工作于異步方式且允許接收和準(zhǔn)備好接收數(shù)據(jù)時(shí),它監(jiān)視RxD線(xiàn)。在無(wú)字符傳送時(shí),RxD線(xiàn)為高電平(即所謂Mark),當(dāng)發(fā)現(xiàn)RxD線(xiàn)上出現(xiàn)低電平時(shí),則認(rèn)為它是起始位(即所謂Space),就啟動(dòng)一個(gè)內(nèi)部計(jì)數(shù)器,當(dāng)計(jì)數(shù)到一個(gè)數(shù)據(jù)位寬度的一半(若時(shí)鐘脈沖頻率為波特率的16倍時(shí),則為計(jì)數(shù)到第8個(gè)脈沖)時(shí),又重新采樣RxD線(xiàn),若其仍為低電平,則確認(rèn)它為起始位,而不是噪聲信號(hào)。此后,每隔16個(gè)脈沖,采樣一次RxD線(xiàn)作為輸入信號(hào),送至移位寄存器,經(jīng)過(guò)移位,又經(jīng)過(guò)奇偶校驗(yàn)和去掉停止位后,就得到了轉(zhuǎn)換為并行的數(shù)據(jù),經(jīng)過(guò)8251的內(nèi)部數(shù)據(jù)總線(xiàn)傳送至接收數(shù)據(jù)緩沖器,同時(shí)發(fā)出RxRDY信號(hào),告訴CPU字符已經(jīng)可用。 在同步方式,USART監(jiān)視RxD線(xiàn),每出現(xiàn)一個(gè)數(shù)據(jù)位就把它移一位,然后把接收寄存器與含有同步字符(由程序給定)的寄存器相比較,看是否相等,若不相等則USART重復(fù)上述過(guò)程。當(dāng)找到同步字符后(若規(guī)定為兩個(gè)同步字符,則必須出現(xiàn)在RxD線(xiàn)上的兩個(gè)相鄰字符與規(guī)定的同步字符相同),則置SYNDET信號(hào),表示已找到同步字符。在找到同步字符后,利用時(shí)鐘采樣和移位RxD線(xiàn)上的數(shù)據(jù)位,并且按規(guī)定的位數(shù),把它送至接收數(shù)據(jù)緩沖器,同時(shí)發(fā)出RxRDY信號(hào)。2.發(fā)送器 發(fā)送器接收CPU送來(lái)的并行數(shù)據(jù),加上起始位、奇偶校驗(yàn)位和停止位,然后由TxD腳發(fā)送。 在異步方式時(shí),發(fā)送器加上起始位,檢查并根據(jù)程序規(guī)定的檢驗(yàn)要求(奇校驗(yàn)還是偶校驗(yàn))加上適當(dāng)?shù)男r?yàn)位,最后根據(jù)程序的規(guī)定,加上1位、1.5位或2位停止位。 在同步方式,發(fā)送器在數(shù)據(jù)發(fā)送前插入一個(gè)或兩個(gè)同步字符(這些都在初始化時(shí)由程序給定),而在數(shù)據(jù)中,除了奇偶校驗(yàn)位外,不再插入別的位。只有在USART工作于同步發(fā)送方式,而CPU來(lái)不及把新的字符送給它,則USART自動(dòng)地在TxD線(xiàn)上插入同步字符,因?yàn)樵谕椒绞綍r(shí)字符之間是不允許存在間隙的。 不論是在同步或異步工作方式,只有當(dāng)程序設(shè)置了TxEN(TransmitterEnable——允許發(fā)送)和CTS#(CleartoSend——這是對(duì)調(diào)制器發(fā)出的請(qǐng)求發(fā)送的響應(yīng)信號(hào))有效時(shí),才能發(fā)送。 另外,發(fā)送器的另一個(gè)功能是能發(fā)送中止符(BREAK)。中止符是由在通信線(xiàn)上的連續(xù)的Space符組成,它是用來(lái)在完全雙工通信時(shí)中止發(fā)送終端的。只要8251的命令寄存器的位3(SBRK)為“1”,則USART就始終發(fā)送中止符。3.I/O控制 讀/寫(xiě)控制邏輯對(duì)CPU輸出的控制信號(hào)進(jìn)行譯碼以實(shí)現(xiàn)如表11-1所示的讀/寫(xiě)功能。USART是以RD#或WR#信號(hào)中的一個(gè)為“0”來(lái)實(shí)現(xiàn)I/O操作的。若兩者中無(wú)一為“0”,則USART不執(zhí)行I/O操作;若兩者全為“0”,這是一種無(wú)確定結(jié)果的非法狀態(tài)。11.2.38251的接口信號(hào) 8251是用來(lái)作為CPU與外設(shè)或調(diào)制解調(diào)器之間的接口,如圖11-21所示。故它的接口信號(hào)可以分為兩組:一組為與CPU接口的信號(hào);另一組為與外設(shè)(或調(diào)制解調(diào)器)接口的信號(hào)。1.與CPU的接口信號(hào) ①DB7~DB0——8251的外部三態(tài)雙向數(shù)據(jù)總線(xiàn),它可以連到CPU的數(shù)據(jù)總線(xiàn)。CPU與8251之間的命令、數(shù)據(jù)以及狀態(tài)信息都是通過(guò)這組數(shù)據(jù)總線(xiàn)傳送的。 ②CLK——由這個(gè)CLK輸入產(chǎn)生8251的內(nèi)部時(shí)序。CLK的頻率在同步方式工作時(shí),必須大于接收器和發(fā)送器輸入時(shí)鐘頻率的30倍;在異步方式工作時(shí),必須大于輸入時(shí)鐘的4.5倍。 另外,規(guī)定CLK的周期要在0.42μs~1.35μs的范圍內(nèi)。 ③CS#——選片信號(hào),它應(yīng)由CPU的IO/M#及地址信號(hào)經(jīng)譯碼后供給。 ④C/D#——控制/數(shù)據(jù)端。在CPU讀操作時(shí),若此端為高電平,由數(shù)據(jù)總線(xiàn)讀入的是8251的狀態(tài)信息;低電平時(shí),讀入的是數(shù)據(jù)。在CPU寫(xiě)操作時(shí),此端為高電平,CPU通過(guò)數(shù)據(jù)總線(xiàn)輸出的是命令信息;低電平時(shí),輸出的是數(shù)據(jù)。此端通常連到CPU的地址總線(xiàn)的A0。 ⑤TxRDY(TransmitterReady)——發(fā)送準(zhǔn)備好信號(hào)。只有當(dāng)USART允許發(fā)送(即CTS#是低電平和TxEN是高電平),且發(fā)送命令/數(shù)據(jù)緩沖器為空時(shí),此信號(hào)有效。它用以通知CPU,8251已準(zhǔn)備好接收一個(gè)數(shù)據(jù)。當(dāng)CPU與8251之間用查詢(xún)方式(Polling)交換信息時(shí),此信號(hào)可作為一個(gè)“狀態(tài)”信號(hào)(handshake);在用中斷方式交換信息時(shí),此信號(hào)可作為8251的一個(gè)中斷請(qǐng)求信號(hào)。當(dāng)USART從CPU接收了一個(gè)字符時(shí),TxRDY復(fù)位。 ⑥TxE(TransmitterEmpty)——發(fā)送器空信號(hào)。當(dāng)它有效(高電平有效)時(shí),表示發(fā)送器中的并行到串行轉(zhuǎn)換器空。在同步方式工作時(shí),若CPU來(lái)不及輸出一個(gè)新的字符,則它變高,同時(shí)發(fā)送器在輸出線(xiàn)上插入同步字符,以填補(bǔ)傳送空隙。 ⑦RxRDY(ReceiverReady)——接收器準(zhǔn)備好信號(hào)。若命令寄存器的RxE(ReceiverEnable)位置位時(shí),當(dāng)8251已經(jīng)從它的串行輸入端接受了一個(gè)字符,可以傳送到CPU時(shí),此信號(hào)有效。在查詢(xún)方式時(shí),此信號(hào)可作為一個(gè)“狀態(tài)”信號(hào);在中斷方式時(shí)可作為一個(gè)中斷請(qǐng)求信號(hào)。當(dāng)CPU讀了一個(gè)字符后,此信號(hào)復(fù)位。 ⑧SYNDET(SynchronousDetect)——同步檢測(cè)信號(hào)。它只用于同步方式。它是作為輸入還是輸出,取決于初始化程序?qū)?251是工作于內(nèi)同步或外同步的規(guī)定。在RESET時(shí),此信號(hào)復(fù)位。當(dāng)工作于內(nèi)同步方式時(shí),在8251已經(jīng)檢測(cè)到所要求的同步字符,此信號(hào)為高,輸出以指示USART已達(dá)到同步。若8251由程序規(guī)定為雙字符同步時(shí),此信號(hào)在第二個(gè)同步字符的最后一位的中間變高。當(dāng)CPU執(zhí)行一次讀狀態(tài)操作時(shí),SYNDET復(fù)位。 當(dāng)在外同步方式工作時(shí),從這個(gè)輸入端輸入的一個(gè)正跳沿,使8251在下一個(gè)RxC的下降沿開(kāi)始收集字符。SYNDET輸入高電平至少應(yīng)維持一個(gè)RxC周期,直至RxC出現(xiàn)下一個(gè)下降沿。2.與裝置的接口信號(hào) ①DTR#(DataTerminalReady)——數(shù)據(jù)終端準(zhǔn)備好。這是一個(gè)通用的輸出信號(hào),低電平有效。它能由命令指令的位置“1”變?yōu)橛行В靡员硎綜PU準(zhǔn)備就緒。 ②DSR#(DataSetReady)——數(shù)據(jù)裝置準(zhǔn)備好。這是一個(gè)通用的輸入信號(hào),低電平有效。用以表示調(diào)制解調(diào)器或外設(shè)已準(zhǔn)備好。CPU可通過(guò)讀入狀態(tài)操作,在狀態(tài)寄存器的位7檢測(cè)這個(gè)信號(hào)。DTR#與DSR#是一組信號(hào),通常用于接收器。 ③RTS#(ReguestToSend)——讀求傳送,這是一個(gè)輸出信號(hào)等效于DTR。這個(gè)信號(hào)用于通知調(diào)制器CPU準(zhǔn)備好發(fā)送。可由命令指令的位5置1來(lái)使其有效(低電平有效)。 ④CTS#(ClearToSend)——準(zhǔn)許傳送,這是調(diào)制器對(duì)USART的RTS信號(hào)的響應(yīng),當(dāng)其有效時(shí)(低電平)USART發(fā)送數(shù)據(jù)。 ⑤RxC(ReceiverClock)——接收器時(shí)鐘。這個(gè)時(shí)鐘控制USART接收字符的速度。 在同步方式,RxC等于波特率,由調(diào)制解調(diào)器供給。 在異步方式,RxC是波特率的1、16或64倍,由方式控制指令預(yù)先選擇。USART在RxC的上升沿采樣數(shù)據(jù)。 ⑥RxD#(ReceiverData)——接收器數(shù)據(jù),字符在這條線(xiàn)上串行地被接收,在USART中轉(zhuǎn)換為并行的字符。高電平表示Mark即“1”。 ⑦TxC#(TransmitterClock)——發(fā)送器時(shí)鐘,這個(gè)時(shí)鐘控制USART發(fā)送字符的速度。時(shí)鐘速度與波特率之間的關(guān)系同RxC#。數(shù)據(jù)在TxC#的下降沿由USART移位輸出。 ⑧TxD#(TransmitterData)——發(fā)送器數(shù)據(jù)。由CPU送來(lái)的并行的字符在這條線(xiàn)上被串行地發(fā)送。高電平代表Mark即“1”。11.2.48251的編程 8251是一個(gè)可編程的多功能通信接口。所以在具體使用時(shí)必須對(duì)它進(jìn)行初始化編程,以確定它的具體工作方式。例如:規(guī)定工作于同步還是異步方式;傳送的波特率;字符格式等。 初始化編程必須在系統(tǒng)復(fù)位(RESET)以后,在USART工作以前進(jìn)行,即USART不論工作于任何方式,都必須先經(jīng)過(guò)初始化。 初始化編程過(guò)程的流程圖如圖11-22所示。1.方式選擇指令 方式選擇指令格式如圖11-23所示。 指令可以分為四組,每組兩位。首先,由D1D0確定是工作于同步方式還是異步方式。當(dāng)D1D0=00時(shí),則為同步方式;而在D1D0≠00時(shí),則為異步方式,且D1D0的三種組合用以選擇輸入時(shí)鐘頻率與波特率之間的系數(shù)。
D3D2用以確定字符的位數(shù),D5D4用以確定奇偶校驗(yàn)的性質(zhì),它們的規(guī)定都是很明確的。D7D6在同步和異步方式時(shí)的意義是不同的,異步時(shí)用以規(guī)定停止位的位數(shù);同步時(shí)用以確定是內(nèi)同步還是外同步,以及同步字符的個(gè)數(shù)。 在同步方式時(shí),緊跟在方式指令后面的是由程序輸入的同步字符。它是用與方式指令類(lèi)似的方法由CPU輸給USART的。2.命令指令 在輸入同步字符后,或在異步方式時(shí),在方式選擇指令后應(yīng)由CPU輸給命令指令,其格式如圖11-24所示。 方式選擇指令是規(guī)定8251的工作方式,而命令指令直接使8251處于規(guī)定的工作狀態(tài),以準(zhǔn)備接收或發(fā)送數(shù)據(jù)。3.狀態(tài)寄存器 8251上還有狀態(tài)寄存器,CPU可通過(guò)I/O讀操作把8251的狀態(tài)字讀入CPU,用以控制CPU與8251之間的數(shù)據(jù)交換。 讀狀態(tài)字時(shí),C/D#端為“1”。狀態(tài)字的格式如圖11-25所示。 狀態(tài)寄存器的TxRDY,只要數(shù)據(jù)緩沖器一空就置位;而引腳TxRDY只能當(dāng)條件: 數(shù)據(jù)緩沖器空·CTS#·TxEN成立時(shí),才置位。11.2.58251應(yīng)用舉例 我們以?xún)膳_(tái)微型計(jì)算機(jī)之間進(jìn)行雙機(jī)串行通信的硬件連接和軟件編程來(lái)說(shuō)明,8251在實(shí)際中是如何應(yīng)用的。1.要求 在A、B兩臺(tái)微機(jī)之間進(jìn)行串行通信,A機(jī)發(fā)送,B機(jī)接收。要求把A機(jī)上開(kāi)發(fā)的應(yīng)用程序(其長(zhǎng)度為2DH)傳送到B機(jī)中去。采用異步方式,字符長(zhǎng)度為8位,2個(gè)停止位,波特率因子為64,無(wú)校驗(yàn),波特率為4800。CPU與8251之間采用查詢(xún)方式交換數(shù)據(jù)。端口地址分配是:命令/狀態(tài)口為309H,數(shù)據(jù)口為308H。2.分析 由于是近距離傳輸,可以不用MODEM,而直接互連。同時(shí)采用查詢(xún)方式,故接收/發(fā)送程序中只需要檢查發(fā)送/接收的準(zhǔn)備好狀態(tài)位是否置位,在準(zhǔn)備好時(shí)就發(fā)送或者接收一個(gè)字節(jié)。3.設(shè)計(jì) (1)硬件連接 根據(jù)以上分析把兩臺(tái)微機(jī)都當(dāng)作DTE。它們之間只需TxD、RxD和SG(信號(hào)地)三根線(xiàn)連接就能通信。采用8251A作為接口的主芯片再配置少量的附加電路,如波特率發(fā)生器、RS-232C與TTL電平轉(zhuǎn)換電路、地址譯碼器電路等就可構(gòu)成一個(gè)串行通信接口。如圖11-26所示。 (2)軟件編程 接收程序和發(fā)送程序分開(kāi)編寫(xiě),
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 語(yǔ)文作文教學(xué)策略?xún)?yōu)化-深度研究
- 生態(tài)旅游度假村發(fā)展-深度研究
- 疳積散國(guó)際化合作模式-深度研究
- 非遺資源在劇目創(chuàng)作的價(jià)值挖掘-深度研究
- 畜牧項(xiàng)目可行性研究報(bào)告
- 新型抗綠膿桿菌抗生素研發(fā)-深度研究
- 綠色制造與節(jié)能減排-深度研究
- GPS時(shí)間同步技術(shù)-深度研究
- 天然氣需求預(yù)測(cè)與市場(chǎng)策略-深度研究
- 園林施工信息化建設(shè)-深度研究
- 精品紅四川大學(xué)信紙?zhí)ь^logo
- 建設(shè)項(xiàng)目職業(yè)病防護(hù)設(shè)施設(shè)計(jì)專(zhuān)篇編制導(dǎo)則
- C21甾體化合物 (2)
- 船舶安檢缺陷處理建議表籍國(guó)內(nèi)航行海船
- 輻照交聯(lián)電線(xiàn)電纜型號(hào)說(shuō)明
- 雨污水管道溝槽開(kāi)挖專(zhuān)項(xiàng)施工方案(改)
- 云南省作家協(xié)會(huì)入會(huì)申請(qǐng)表及說(shuō)明
- 城軌道交通認(rèn)知實(shí)習(xí)任務(wù)書(shū)及指導(dǎo)書(shū)
- 避免同業(yè)競(jìng)爭(zhēng)承諾函
- 中國(guó)民主同盟入盟申請(qǐng)表(填寫(xiě)樣表)
- 新西蘭交通規(guī)則非常適用精編版
評(píng)論
0/150
提交評(píng)論