第8章-串行通信接口_第1頁
第8章-串行通信接口_第2頁
第8章-串行通信接口_第3頁
第8章-串行通信接口_第4頁
第8章-串行通信接口_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2024/9/25計(jì)算機(jī)接口技術(shù)1第8章串行通信接口本章內(nèi)容

串行通信的基本概念

串行通信協(xié)議串行通信接口標(biāo)準(zhǔn)串行通信接口電路RS-232C標(biāo)準(zhǔn)的串行通信接口設(shè)計(jì)RS-485標(biāo)準(zhǔn)的串行通信接口設(shè)計(jì)基于UART的串行通信接口2024/9/25計(jì)算機(jī)接口技術(shù)28.1串行通信的基本概念

串行傳送是在一根或一對傳輸線上,在時鐘的作用下,一位一位地傳送信息,這根(對)線既作為數(shù)據(jù)線又作為聯(lián)絡(luò)線??梢岳秒娫捑€進(jìn)行數(shù)據(jù)傳送,從而大大降低了成本,特別適用于遠(yuǎn)距離通信,但傳送速度較慢。2024/9/25計(jì)算機(jī)接口技術(shù)38.1.1串行通信的基本特點(diǎn)1.采用1根或1對傳輸線按位傳送信息。傳輸線既作為數(shù)據(jù)線又作為聯(lián)絡(luò)線;

2.為了對傳輸中的信息進(jìn)行識別,要求有固定的數(shù)據(jù)格式,分同步和異步數(shù)據(jù)格式;

3.為了保持雙方的收\發(fā)速度一致,串行傳輸?shù)乃俾市枰刂疲捎秒p方約定的波特率進(jìn)行傳輸。

4.串行通信易受干擾,特別是遠(yuǎn)距離傳輸,出錯難以避免,故需要進(jìn)行差錯的檢測與控制,如奇偶校驗(yàn),CRC等。5.串行通信中對信號的邏輯定義和TTL不一定兼容,需要進(jìn)行邏輯關(guān)系和邏輯電平轉(zhuǎn)換;總之,串行通信制定了各種通信協(xié)議與標(biāo)準(zhǔn),來規(guī)范串行通信雙方共同遵守的操作規(guī)則。2024/9/25計(jì)算機(jī)接口技術(shù)48.1.2串行通信的工作制式1.全雙工

全雙工是通信雙方同時進(jìn)行發(fā)送和接收操作。為此,要設(shè)置兩根(或兩對)傳輸線,分別發(fā)送和接收數(shù)據(jù),使數(shù)據(jù)的發(fā)送與接收分流,如圖8.1所示。全雙工方式在通信過程中,無須進(jìn)行接收/發(fā)送方向的切換,因此,沒有切換操作所產(chǎn)生的時間延遲,有利于遠(yuǎn)程實(shí)時監(jiān)測與控制。圖8.1全雙工方式示意圖2024/9/25計(jì)算機(jī)接口技術(shù)52.半雙工

半雙工是通信雙方分時進(jìn)行發(fā)送和接收操作,即雙方都可發(fā)可收,但不能在同一時刻發(fā)送和接收,如圖8.2所示。因?yàn)榘腚p工只設(shè)置1根(或1對)傳輸線,用于發(fā)送時就不能接收,用于接收時就不能發(fā)送。所以在半雙工通信過程中,需要進(jìn)行接收/發(fā)送方向的切換,會有延時產(chǎn)生。圖8.2半雙工方式示意圖3.單工

單工是通信雙方只能進(jìn)行一個方向的傳輸,不能有雙向傳輸。此方式目前很少使用了。2024/9/25計(jì)算機(jī)接口技術(shù)68.1.3串行通信的基本方式1.異步通信方式

異步通信是以字符為單位傳輸?shù)?,每個字符經(jīng)過格式化之后,作為獨(dú)立的一幀數(shù)據(jù),可以隨機(jī)由發(fā)送端發(fā)出去,即發(fā)送端發(fā)出的每個字符在通信線上出現(xiàn)的時間是任意的。因此異步通信不要求在收雙方之間使用同一根時鐘線。2.同步通信方式

同步通信是以數(shù)據(jù)塊(字符塊)為單位傳輸?shù)?,每個數(shù)據(jù)塊經(jīng)過格式化之后,形成一幀數(shù)據(jù),作為一個整體進(jìn)行發(fā)送與接收,因此,傳輸一旦開始,就要求數(shù)據(jù)塊內(nèi)部的每一位都要同步。為此,收/發(fā)兩端必須使用同一時鐘來控制數(shù)據(jù)塊內(nèi)部位與位之間的定時,因此同步通信要求雙方之間必須設(shè)置一根時鐘線。異步通信方式的傳輸速率低,同步通信方式的傳輸速率高。異步傳輸?shù)膫鬏斣O(shè)備簡單,易于實(shí)現(xiàn),同步傳輸?shù)膫鬏斣O(shè)備復(fù)雜,技術(shù)要求高。因此,異步串行通信一般用在數(shù)據(jù)傳輸時間不能確定、發(fā)送數(shù)據(jù)不連續(xù)、數(shù)據(jù)量較少和數(shù)據(jù)傳輸速率較低的場合;而同步串行通信則用在要求快速、連續(xù)傳輸大批量數(shù)據(jù)的場合。

2024/9/25計(jì)算機(jī)接口技術(shù)78.1.4串行通信的調(diào)制與解調(diào)

串行通信是數(shù)字通信,包含了從低頻到高頻的諧波成分,因此要求傳輸線的頻帶很寬。在遠(yuǎn)距離通信時,為了降低成本,通信線路利用普通電話線,而這種電話線的頻帶寬度有限。如果用數(shù)字信號直接傳輸,高次諧波的衰減就會很厲害,從而使傳輸?shù)男盘柈a(chǎn)生嚴(yán)重的畸變和失真;若用模擬信號傳輸時,則失真較小。因此需要在通信雙方采用MODEM進(jìn)行數(shù)字信號與模擬信號轉(zhuǎn)換,調(diào)制與解調(diào)如圖8.3所示。圖8.3調(diào)制與解調(diào)示意圖2024/9/25計(jì)算機(jī)接口技術(shù)88.2

串行通信協(xié)議

所謂通信協(xié)議(也叫做通信控制規(guī)程)是指通信雙方的一種約定,約定中包括對數(shù)據(jù)格式、傳輸速度、檢糾錯方式、傳送步驟,以及控制字符定義等問題作出統(tǒng)一規(guī)定,通信雙方必須共同遵守。

8.2.1串行通信中的傳輸速率控制1.數(shù)據(jù)傳輸速率控制的實(shí)現(xiàn)方法

串行通信時,要求雙方的傳輸速率嚴(yán)格一致,并在傳輸開始之前,要預(yù)先設(shè)定,否則,會發(fā)生錯誤。在數(shù)字通信中,傳輸速率的控制是通過波特率時鐘發(fā)生器和設(shè)置波特率因子或波特率除數(shù)來實(shí)現(xiàn)的。2024/9/25計(jì)算機(jī)接口技術(shù)92.波特率、發(fā)送/接收時鐘波特率因子

(1)什么是波特率

波特率(Baud)是每秒傳輸串行數(shù)據(jù)的位數(shù)。例如,每秒傳輸1b,就是1波特;每秒傳輸1200b,就是1200波特。其單位是b/s(位/秒),也可寫成bps。例如,串行通信的數(shù)據(jù)傳輸率為1200b/s,則每一個數(shù)據(jù)位的傳輸時間Td為波特率的倒數(shù),即:

(2)發(fā)送/接收時鐘

發(fā)送時,發(fā)送端在發(fā)送時鐘脈TxC的作用下,將發(fā)送寄存器的數(shù)據(jù)按位串行移位輸出,送到通信線上;接收時,接收端在接收時鐘脈沖RxC的作用下,對來自通信線上的串行數(shù)據(jù),按位串行移入接收寄存器,故發(fā)送/接收時鐘脈沖又可稱為移位脈沖。2024/9/25計(jì)算機(jī)接口技術(shù)10(3)波特率因子

發(fā)送/接收時鐘的頻率,一般都設(shè)置為波特率的整數(shù)倍,如1、16、32、64倍。并且,把這個波特率的倍數(shù)稱為波特率因子(factor)或波特率系數(shù),其含義是每傳輸一個數(shù)據(jù)位需要多是個移位脈沖,單位是個/位。因此,可得出發(fā)送/接收時鐘頻率TxC、波特率因子factor和波特率Baud三者之間的關(guān)系,即:

TxC=factor×Baud(8.1)

例如,某一串行接口電路的波特率為1200b/s,波特因子為16個/位,則發(fā)送時鐘的頻率為:

TxC=16個/b×1200b/s=19200Hz際上,波特率因子可理解為發(fā)送或接收1b數(shù)據(jù)所需的時鐘脈沖個數(shù)。引用波特率因子的目的是為了提高定位采樣的分辨率,有利于鑒別干擾和提高異步串行通信的可靠性。這一點(diǎn)可從圖8.4中看出。如果沒有這種倍頻關(guān)系,定位采樣頻率和傳輸波特率相同,則在一個位周期中,只能采樣一次,這樣就容易產(chǎn)生錯誤。2024/9/25計(jì)算機(jī)接口技術(shù)11

圖8.416倍波特率時鐘的作用例如,為了檢測起始位下降沿的出現(xiàn),在檢測起始位的前夕采樣一次,下次采樣要到起始位結(jié)束前夕才進(jìn)行,假若在這個位周期期間,因某種原因恰好使接收端時鐘往后偏移了一點(diǎn)點(diǎn),就會錯過起始位,從而造成后面整個各位檢測和識別的錯誤。2024/9/25計(jì)算機(jī)接口技術(shù)123.波特率時鐘發(fā)生器

波特率時鐘發(fā)生器可由定時/計(jì)數(shù)器82C54A來實(shí)現(xiàn),關(guān)鍵是要找出波特率的發(fā)送/接收時針脈沖與定時/計(jì)數(shù)器的定時常數(shù)之間的關(guān)系,從第4章定時/計(jì)數(shù)器82C54A的工作原理可知,定時器82C54A的輸出OUT、輸入CLK及定時常數(shù)TC的關(guān)系式如下:

OUT=CLK/TC

(8-2)

(8-2)式中,OUT為輸出波形頻率;CLK為輸入時針頻率(通常是晶振的輸出頻率);TC為定時常數(shù)。如果把82C54A的輸出方波OUT作為串行通信的發(fā)送/接收時鐘TxC,則有

OUT=TxC

(8-3)將式(8-1)和式(8-2)代入式(8-3),可得CLK/TC=Baud×factor所以

TC=CLK/(Baud×factor)

(8-4)2024/9/25計(jì)算機(jī)接口技術(shù)13

從式(8-4)可知,當(dāng)輸入時鐘頻率和波特率因子選定后,求波特率的問題就變成了求定時器82C54A的定時常數(shù)TC的問題了。而這個定時常數(shù)也就是波特率時鐘發(fā)生器的輸入時鐘頻率的分頻系數(shù),或叫波特率除數(shù)。

例如,要求串行通信的傳輸率為9600波特,波特率因子為16,82C54A的輸入時鐘為1.19318MHz,則82C54A的定時常數(shù),根據(jù)(8-4)式為:TC=1.19318×106次/s/(9600b/s×16次/b)=8因此,利用82C54A作波特率時鐘發(fā)生器,就需要利用式(8-4)計(jì)算出波特率相對應(yīng)的定時常數(shù),然后,將定時常數(shù)裝入82C54A的計(jì)數(shù)初值寄存器啟動定時器即可。2024/9/25計(jì)算機(jī)接口技術(shù)148.2.2串行通信中的差錯檢測1.誤碼率的控制

所謂誤碼率,是指數(shù)據(jù)經(jīng)過傳輸后發(fā)生錯誤的位數(shù)與

總傳輸位數(shù)之比。在計(jì)算機(jī)通信中,一般要求誤碼率達(dá)到10-6數(shù)量級。2.檢糾錯編碼方法的使用在實(shí)際應(yīng)用中,具體實(shí)現(xiàn)檢錯編碼的方法很多,而在串行通信中應(yīng)用最多的是奇偶校驗(yàn)和循環(huán)冗余碼校驗(yàn)。

錯誤檢測只在接收方進(jìn)行,并且是在接收程序中通過軟件來檢測。3.錯誤狀態(tài)的分析與處理①

奇偶校驗(yàn)錯:通常是由噪聲干擾而引起的,發(fā)生這種錯誤時,采用要求發(fā)送方重發(fā)。②溢出錯:通常是由收發(fā)雙方的速率不匹配而引起的,可以采用降低發(fā)送方的發(fā)送速率或者在接收方設(shè)置FIFO緩沖區(qū)的方法來減少這種錯誤。③幀格式錯:這種錯誤大多是由于雙方數(shù)據(jù)格式約定不一致或干擾造成的,可通過核對雙方的數(shù)據(jù)格式減少錯誤。④超時錯:一般是由于接口硬件電路速度跟不上而產(chǎn)生。2024/9/25計(jì)算機(jī)接口技術(shù)158.2.3串行通信中的數(shù)據(jù)格式1.起止式異步通信數(shù)據(jù)幀格式

所謂起止式是在每個字符的前面加起始位,后面加停止位,中間可以加奇偶校驗(yàn)位,空閑位,形成一個完整的字符幀格式,如圖8.5所示。圖8.5起止式異步通信數(shù)據(jù)格式2024/9/25計(jì)算機(jī)接口技術(shù)16下面分析起/止式數(shù)據(jù)格式每幀信息的內(nèi)容及起/止位的作用。從圖8.5可以看出,每個字符幀由4個部分組成。

●1位起始位,低電平,邏輯值0。

●5~8位數(shù)據(jù)位,緊跟在起始位后,是要傳輸?shù)挠行畔ⅰR?guī)定從低位至高位依次傳輸。

●1位校驗(yàn)位(也可以沒有校驗(yàn)位)。

●1位,或1位半,或2位停止位,高電平(邏輯值1)。

停止位后面是不定長度的空閑位。

停止位和空閑位都規(guī)定為高電平,這樣就保證起始位開始處

一定有一個下跳變。

現(xiàn)在看看起/止位的作用。起始位和停止位是作為聯(lián)絡(luò)信號而附加進(jìn)來的,它們在異步通信格式中起著至關(guān)重要的作用。當(dāng)起始位由高電平變?yōu)榈碗娖降南绿儠r,告訴接收方數(shù)據(jù)的傳輸開始。它的到來,表示下面接著是數(shù)據(jù)位來了,要接收方準(zhǔn)備開始接收。而停止位標(biāo)志一個字符的結(jié)束,它的出現(xiàn),表示一個字符傳輸結(jié)束。這樣,就為通信雙方提供了何時開始收發(fā)、何時結(jié)束的標(biāo)志。2024/9/25計(jì)算機(jī)接口技術(shù)172.面向字符的同步通信數(shù)據(jù)格式

面向字符數(shù)據(jù)格式的典型代表是IBM公司的二進(jìn)制同步通信協(xié)議(BSC)。它的特點(diǎn)是一次傳送由若干個字符組成的數(shù)據(jù)塊,并規(guī)定了10個特殊字符作為這個數(shù)據(jù)塊的開頭與結(jié)束標(biāo)志以及整個傳輸過程的控制信息,它們也叫做通信控制字,如圖8.6所示。圖8.6面向字符的同步通信數(shù)據(jù)塊的幀格式2024/9/25計(jì)算機(jī)接口技術(shù)183.面向比特的同步通信數(shù)據(jù)格式

面向比特的協(xié)議有同步數(shù)據(jù)鏈路控制規(guī)程SDLC、高級數(shù)據(jù)鏈路控制規(guī)程HDL、先進(jìn)數(shù)據(jù)通信規(guī)程ADCCP等。這些協(xié)議的特點(diǎn)是所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位,而且它是靠約定的位組合模式,而不是字符,故稱“面向比特”的協(xié)議,其數(shù)據(jù)格式如圖8.7所示。圖8.7面向比特的同步通信數(shù)據(jù)幀格式8位位8位位8位位≥0位0位16位位8位位01111110ACIFC01111110開始標(biāo)志地址場控制場信息場校驗(yàn)場結(jié)束標(biāo)志2024/9/25計(jì)算機(jī)接口技術(shù)194.I2C串行總線數(shù)據(jù)格式

I2C串行總線是Philips公司開發(fā)的可連接多個主設(shè)備及具有不同速度的設(shè)備的串行總線,它只使用兩根雙向信號線:串行數(shù)據(jù)線SDA和串行時鐘線SCL,其數(shù)據(jù)格式如圖8.8所示。圖8.8I2C總線一幀完整的數(shù)據(jù)格式圖2024/9/25計(jì)算機(jī)接口技術(shù)20下面通過I2C數(shù)據(jù)格式來了解I2C的傳輸過程與工作原理。

從圖8.8可以看到,數(shù)據(jù)格式是以主設(shè)備通過數(shù)據(jù)線發(fā)送啟動信號Start開始,發(fā)停止信號Stop結(jié)束。

在啟動信號后面,跟著發(fā)送第一字節(jié),此字節(jié)的高7位為從設(shè)備地址,最低位為指明數(shù)據(jù)傳送方向的R/W(讀/寫)位,該位為0表示主設(shè)備向從設(shè)備發(fā)送數(shù)據(jù),為1表示從設(shè)備向主設(shè)備發(fā)送數(shù)據(jù)。

地址字節(jié)后面,接著就可發(fā)送所要傳輸?shù)臄?shù)據(jù)字節(jié)(DATA)。通信過程中,每次傳送的字節(jié)數(shù)沒有限制,即在Start與Stop之間的字節(jié)數(shù)可以是任意多個,但各字節(jié)之間必須插入一個應(yīng)答位(ACK),以表示是否收到對方傳來的數(shù)據(jù)。

數(shù)據(jù)字節(jié)從最高位開始發(fā)送,全部數(shù)據(jù)發(fā)送完后,就發(fā)停止信號結(jié)束一次數(shù)據(jù)傳輸。2024/9/25計(jì)算機(jī)接口技術(shù)218.3

串行通信接口標(biāo)準(zhǔn)

串行接口所直接面向的并不是某個具體的通信設(shè)備,而是一種串行通信的接口標(biāo)準(zhǔn)。所以,要進(jìn)行串行通信接口設(shè)計(jì),就必須先討論串行通信接口標(biāo)準(zhǔn),然后,按照標(biāo)準(zhǔn)來設(shè)計(jì)接口電路。這里以RS-232C和RS-485為主來討論。8.3.1RS-232C標(biāo)準(zhǔn)EIA-RS-232C標(biāo)準(zhǔn)是美國EIA(電子工業(yè)聯(lián)合會)與BELL等公司一起開發(fā)的通信協(xié)議。它適合于數(shù)據(jù)傳輸速率在0~20000b/s范圍內(nèi)的通信,廣泛用于計(jì)算機(jī)與計(jì)算機(jī),計(jì)算機(jī)與外設(shè)近距離串行連接。2024/9/25計(jì)算機(jī)接口技術(shù)221.RS-232C標(biāo)準(zhǔn)對信號線的定義RS-232C定義的主信道信號使用9根線,包括2根數(shù)據(jù)線和1根地線,以及用于聯(lián)絡(luò)的6根控制線。6根聯(lián)絡(luò)控制信號線僅用于遠(yuǎn)距離通信加MODEM的應(yīng)用環(huán)境,而近距離通信不加MODEM,故只使用3根信號線,其定義如下。

2號線發(fā)送數(shù)據(jù)(Transmitteddata—TxD)線

3號線接收數(shù)據(jù)(Receiveddata—RxD)線

7號線信號地(Signalgroud—SG)線

不使用MODEM的通信,稱為零MODEM方式,俗稱“3線制”RS-232標(biāo)準(zhǔn)。零MODEM方式的連接如圖8.9所示。圖8.93線制零MODEM方式2024/9/25計(jì)算機(jī)接口技術(shù)232.RS-232C標(biāo)準(zhǔn)對信號的邏輯定義(1)RS-232C標(biāo)準(zhǔn)對信號的邏輯定義采用EIA邏輯,規(guī)定:

邏輯1(Mark)在驅(qū)動器輸出端為?5~?15V,在負(fù)載端要求小于?3V。

邏輯0(Space)在驅(qū)動器輸出端為+5~+15V,在負(fù)載端要求大于+3V。

可見,RS-232C采用的是負(fù)邏輯,并且邏輯電平幅值很高,擺幅很大。顯然,RS-232C標(biāo)準(zhǔn)所采用的EIA與計(jì)算機(jī)終端所采用的TTL在邏輯電平和邏輯關(guān)系上并不兼容,故需要經(jīng)過轉(zhuǎn)換,才能與計(jì)算機(jī)或終端進(jìn)行數(shù)據(jù)交換。

(2)EIA與TTL之間的轉(zhuǎn)換

EIA與TTL之間的轉(zhuǎn)換采用專用芯片來完成。常用的轉(zhuǎn)換芯片有單向轉(zhuǎn)換芯片(如MC1488、SN75150),雙向轉(zhuǎn)換芯片(如MAX232),可實(shí)現(xiàn)TTL與EIA之間的雙向轉(zhuǎn)換,一個MAX232芯片可實(shí)現(xiàn)兩對接收/發(fā)送數(shù)據(jù)線的轉(zhuǎn)換。2024/9/25計(jì)算機(jī)接口技術(shù)24MAX232的外部引腳和內(nèi)部邏輯如圖8.10所示。從圖8.10可知,通過MAX232可將TTL/CMOS電平(0~5V)轉(zhuǎn)換成RS-232C的EIA電平(+10V~?10V)。圖8.10MAX232的內(nèi)部邏輯框圖2024/9/25計(jì)算機(jī)接口技術(shù)25(3)RS-232C標(biāo)準(zhǔn)的連接器及通信線電纜

1)連接器

連接器即通信電纜的插頭插座。RS-232C有DB-25型和DB-9型兩種不同的連接器,其引腳號的排列順序各不相同。目前大多數(shù)都采用DB-9型連接器。DB-9型連接器的外形及信號引腳分配如圖8.11所示。如前所述,若采用“3線制”進(jìn)行近距離通信連接時,還應(yīng)將DB-9型連接器的4號線與5號線,以及6號線與20號線短接。圖8.11DB-9型連接器的外形及信號引腳分配2)通信電纜長度RS-232C標(biāo)準(zhǔn)規(guī)定當(dāng)采用雙絞線屏蔽電纜,傳輸速率為20kb/s時,在零MODEMR下,兩臺計(jì)算機(jī)或終端的直接連接的最大物理距離為15m。2024/9/25計(jì)算機(jī)接口技術(shù)268.3.2RS-485標(biāo)準(zhǔn)

RS-485標(biāo)準(zhǔn)是在RS-232C的基礎(chǔ)上,針對在不使用MODEM情況下,進(jìn)行遠(yuǎn)距離串行通信而提出的,因此只對RS-485標(biāo)準(zhǔn)的數(shù)據(jù)信號線和信號邏輯重新進(jìn)行了定義,不涉及其他控制信號線的定義,而通信過程中所傳輸?shù)臄?shù)據(jù)幀格式沿用RS-232C的。1.RS-485標(biāo)準(zhǔn)對信號線的定義

RS-485標(biāo)準(zhǔn)與RS-232C標(biāo)準(zhǔn)最主要的差別是采用雙線平衡方式傳輸數(shù)據(jù),而不是使用單線對地的方式傳輸數(shù)據(jù)。所謂平衡方式,是指雙端發(fā)送和雙端接收,所以傳輸信號需要兩條線AA′和BB′,發(fā)送端和接收端分別采用平衡發(fā)送器(驅(qū)動器)和差動接收器,如圖8.12所示。

發(fā)送端通過平衡發(fā)送器把邏輯電平轉(zhuǎn)換成電位差,根據(jù)兩條傳輸線之間的電位差值來定義邏輯1和邏輯0,進(jìn)行傳輸,最后到達(dá)接收端。接收端通過差動接收器,把差動信號轉(zhuǎn)換為邏輯電平。

圖8.12RS-485標(biāo)準(zhǔn)的傳輸連接2024/9/25計(jì)算機(jī)接口技術(shù)272.RS-485標(biāo)準(zhǔn)對信號的邏輯定義(電氣特性)

RS-485標(biāo)準(zhǔn)采用電位差值定義信號邏輯,當(dāng)AA′線的電平比BB′線的電平高200mV時,表示邏輯1;當(dāng)AA′線的電平比BB′的電平低200mV時,表示邏輯0。3.RS-485標(biāo)準(zhǔn)的連接器與通信電纜

RS-485標(biāo)準(zhǔn)采用4芯水晶頭連接器進(jìn)行全雙工異步通信,4芯水晶頭連接器使用方便且價格低廉。RS-485標(biāo)準(zhǔn)的通信電纜為屏蔽雙絞線,半雙工是一對雙絞線,全雙工是兩對雙絞線。4.RS-485總線標(biāo)準(zhǔn)的特點(diǎn)(1)由于采用差動發(fā)送/接收和雙絞線平衡傳輸,所以共模抑制比高,抗干擾能力強(qiáng)。因此,特別適合在干擾比較嚴(yán)重的環(huán)境下工作(2)傳輸速率高,可達(dá)10Mb/s(傳輸距離為15m)。(3)傳輸距離長,不使用MODEM,采用雙絞線,傳輸距離1.2km(4)能實(shí)現(xiàn)一點(diǎn)對多點(diǎn)、多點(diǎn)對多點(diǎn)通信。2024/9/25計(jì)算機(jī)接口技術(shù)288.4串行通信接口電路

串行傳輸相比并行傳輸而言有許多特殊問題需要解決,因此,串行通信接口設(shè)計(jì)所涉及的內(nèi)容要復(fù)雜得多。下面先分析串行通信接口電路的任務(wù)(功能)及組成,然后具體討論串行接口電路設(shè)計(jì)。8.4.1串行通信接口電路的基本任務(wù)由于各個串行總線的功能及用途不一樣,串行接口電路的任務(wù)也不同,有的復(fù)雜,有的簡單,其基本任務(wù)有如下幾個方面。1.進(jìn)行串-并轉(zhuǎn)換串行通信接口的首要任務(wù)是進(jìn)行數(shù)據(jù)的串/并轉(zhuǎn)換。在發(fā)送端,把由計(jì)算機(jī)送來的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),然后再發(fā)送出去。在接收端,把從接收器接收的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)后,再送至計(jì)算機(jī)或終端。2.提供串行通信總線標(biāo)準(zhǔn)所定義的信號線

串行通信接口的第二個任務(wù)是提供符合串行通信總線標(biāo)準(zhǔn)所定義的信號線。例如,RS-232C標(biāo)準(zhǔn)的2號線TxD、3號線RxD和7號線SG。I2C標(biāo)準(zhǔn)的串行數(shù)據(jù)線SDA和串行時鐘線SCL。2024/9/25計(jì)算機(jī)接口技術(shù)293.實(shí)現(xiàn)串行通信的數(shù)據(jù)格式化串行通信接口的第三個任務(wù)是實(shí)現(xiàn)串行通信協(xié)議的數(shù)據(jù)格式化。因?yàn)閬碜杂?jì)算機(jī)的數(shù)據(jù)是普通并行數(shù)據(jù),所以接口電路應(yīng)具有使數(shù)據(jù)格式化的功能,實(shí)現(xiàn)不同串行通信方式下的數(shù)據(jù)格式化。例如,對RS-232C標(biāo)準(zhǔn),接口電路需自動生成異步通信的起止式數(shù)據(jù)幀格式。4.進(jìn)行錯誤檢測

串行通信接口的第四個任務(wù)是檢測并報(bào)告通信過程中所產(chǎn)生的差錯。在發(fā)送端,接口電路需對傳輸?shù)淖址麛?shù)據(jù)自動生成奇偶校驗(yàn)位或其他校驗(yàn)碼。在接收端,接口電路需要對所接收的字符數(shù)據(jù)進(jìn)行奇偶校驗(yàn)或其他校驗(yàn)碼的檢測,以確定所接收的數(shù)據(jù)中是否有錯誤信息和是什么性質(zhì)的錯誤。5.進(jìn)行數(shù)據(jù)傳輸速率的控制

串行通信接口的第五個任務(wù)是對數(shù)據(jù)傳輸速率進(jìn)行控制,確保串行通信雙方的數(shù)據(jù)傳輸速率一致。這意味著接口電路需設(shè)置波特率時鐘發(fā)生器。2024/9/25計(jì)算機(jī)接口技術(shù)308.4.2串行通信接口電路的解決方案

本章串行接口的解決方案是采用可編程通用串行通信接口芯片構(gòu)成外置式的接口電路。1.串行通信接口電路的組成

串行通信接口電路一般由串行通信接口芯片、波特率時鐘發(fā)生器、EIA與TTL轉(zhuǎn)換器以及地址譯碼電路組成。若采用RS-485總線標(biāo)準(zhǔn),則接口電路還應(yīng)包括平衡發(fā)送器和平衡接收器。

串行接口芯片是串行通信接口電路的核心,能實(shí)現(xiàn)上面提出的串行通信接口基本任務(wù)的大部分工作,采用它們來設(shè)計(jì)串行通信接口,會使電路結(jié)構(gòu)比較簡單。

在微機(jī)系統(tǒng)中,使用較多的串行通信接口芯片有異步收/發(fā)器(UART)16550和同步/異步收/發(fā)器(USART)8251A,它們都是CPU的重要的串行通信接口支持芯片,其特點(diǎn)與所實(shí)現(xiàn)的功能基本相同,16550作為異步通信的性能更優(yōu),而8251A應(yīng)用更簡潔。本章將對兩種接口芯片的應(yīng)用分別進(jìn)行討論。2.串行通信接口的配置方式

串行通信接口電路的配置有3種形式:外置式獨(dú)立的接口芯片,用于臺式微機(jī)系統(tǒng);內(nèi)置式接口模塊,用于ARM和MCU系統(tǒng);用戶用FPGA構(gòu)建的接口電路,并與應(yīng)用系統(tǒng)其他硬件在一起開發(fā)。2024/9/25計(jì)算機(jī)接口技術(shù)318.5

RS-232C標(biāo)準(zhǔn)的串行通信接口設(shè)計(jì)例8.1采用RS-232C標(biāo)準(zhǔn)的異步串行通信接口設(shè)計(jì)8.5.1

設(shè)計(jì)要求

設(shè)計(jì)甲乙兩臺微機(jī)之間串行通信接口電路。

要求按RS-232C標(biāo)準(zhǔn)進(jìn)行半雙工異步串行通信,把甲機(jī)上開發(fā)的步進(jìn)電機(jī)控制用程序傳送到乙機(jī)中去,以便在乙機(jī)上運(yùn)行。字符幀格式采用起止式異步方式,字符長度為8位,停止位為2位,波特率因子為64,無校驗(yàn)。波特率為4800b/s。CPU與接口芯片8251A之間用查詢方式交換數(shù)據(jù)。2024/9/25計(jì)算機(jī)接口技術(shù)321.8251A的外部特性251A的外部引腳如圖8.14所示。引腳信號線定義表8.2所示。圖8.148251A引腳圖表8.28251A外部引腳功能8.5.2設(shè)計(jì)方案分析本方案是采用可編程通用接口芯片8251A構(gòu)成‘外置式’的接口電路。因此,先分析與介紹8251A的外部特性和編程模型2024/9/25計(jì)算機(jī)接口技術(shù)332.8251A的編程模型

8251A的編程模型包括內(nèi)部可訪問的寄存器、分配給寄存器的端口地址,以及編程命令。用戶利用8251A的編程模型進(jìn)行串行通信程序設(shè)計(jì)。

(1)8251A內(nèi)部寄存器及端口地址

8251A內(nèi)部設(shè)置有收/發(fā)數(shù)據(jù)寄存器,端口地址為308H。方式命令寄存器、工作命令寄存器和狀態(tài)寄存器,3個寄存器共用1個端口,端口地址為309H。向該端口寫操作時,是寫命令字;從該端口讀操作時,是讀狀態(tài)字。

2024/9/25計(jì)算機(jī)接口技術(shù)34

例如在某異步通信中,數(shù)據(jù)格式采用8位數(shù)據(jù)位,1位起始位,2位停止位,奇校驗(yàn),波特率因子是16,其方式字為11011110B。

異步通信方式設(shè)置的程序段如下。MOVDX,309H;8251A命令口MOVAL,11011110B

;方式命令字OUTDX,AL(2)方式命令

方式命令格式如8.15所示。圖8.158251A通信方式命令的格式2024/9/25計(jì)算機(jī)接口技術(shù)35(3)工作命令工作命令的格式如圖8.16所示。圖8.168251A工作命令的格式例如,在異步通信時,若允許接收,同時允許發(fā)送,則工作命令字=00000101B。程序段如下。MOVDX,309H ;命令口MOVAL,00000101B ;工作命令字OUTDX,AL2024/9/25計(jì)算機(jī)接口技術(shù)36(4)狀態(tài)字

狀態(tài)字格式如圖8.17所示。圖8.178251A狀態(tài)字的格式例如,串行通信時,在發(fā)送程序中,需檢查狀態(tài)字的D0位是否置1,即查是否TxRDY=1?,其程序段如下。L:MOVDX,309H ;8251A狀態(tài)端口INAL,DX

ANDAL,01H ;查是否TxRDY=1?JZL ;未就緒,則等待2024/9/25計(jì)算機(jī)接口技術(shù)373.8251A的初始化(1)初始化內(nèi)容在異步方式下,8251A的初始化內(nèi)容包括:先寫內(nèi)部復(fù)位命令,再寫方式命令,最后寫工作命令幾部分。為了提高可靠性,往往還在寫內(nèi)部復(fù)位命令之前,向命令口寫一長串0,作為空操作。在同步方式下,8251A的初始化還包括設(shè)置同步字符。(2)初始化順序

初始化順序如圖8.18所示。這種順序不能顛倒或改變,若改變了這種順序,8251A就不能識別,也就不能正確執(zhí)行。圖8.18向8251A命令端口寫入命令的順序2024/9/25計(jì)算機(jī)接口技術(shù)388.5.3電路與程序設(shè)計(jì)1.串行接口電路設(shè)計(jì)

由于是近距離傳輸,不需要MODEM,故采用“3線制”的3芯屏蔽通信電纜,把甲乙兩臺微機(jī)直接互連,異步串行通信接口電路如圖8.19所示。接口電路以8251A為主芯片,再加上波特率時鐘發(fā)生器、電平轉(zhuǎn)換器、地址譯碼器等。圖8.19RS-232C標(biāo)準(zhǔn)半雙工異步串行通信接口電路框圖2024/9/25計(jì)算機(jī)接口技術(shù)392.串行通信程序設(shè)計(jì)

整個通信程序由甲機(jī)的發(fā)送程序和乙機(jī)的接收程序兩部分組成,分別采用匯編語言與C語言編寫。(1)甲機(jī)的發(fā)送程序DATASEGMENTBUF_TDB45DUP(?)DATDENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX2024/9/25計(jì)算機(jī)接口技術(shù)40MOVDX,309H;8251A初始化MOVAL,00H;空操作,向命令端口發(fā)送任意數(shù)OUTDX,ALMOVAL,01000000B;內(nèi)部復(fù)位(使D6=1)OUTDX,ALNOPMOVAL,11001111B;方式命令字(8位數(shù)據(jù),2位停止,無校驗(yàn),;波特因子為64)OUTDX,ALMOVAL,00110111B;工作命令字(RTS、ER、RxE、DTR、TxEN置1)OUTDX,ALMOVSI,OFFSETBUF_T ;發(fā)送區(qū)首址

MOVCX,45;字節(jié)數(shù)L1:MOVDX,309H;查狀態(tài),可否發(fā)送INAL,DX

ANDAL,01H;查發(fā)送是否準(zhǔn)備好(TxRDY=1)JZL1;發(fā)送未準(zhǔn)備好,則等待2024/9/25計(jì)算機(jī)接口技術(shù)41MOVDX,308HMOVAL,[SI];發(fā)送準(zhǔn)備好,則從發(fā)送區(qū)取1個字節(jié)發(fā)送OUTDX,ALINCSI;發(fā)送區(qū)地址加1DECCX;字節(jié)數(shù)減1JNZL1;未發(fā)送完,繼續(xù)

MOVAX,4C00H;已發(fā)送完,回DOSINT21HCODEENDSENDSTART2024/9/25計(jì)算機(jī)接口技術(shù)42unsignedinti;unsignedcharsend[45]; //發(fā)送緩沖區(qū)unsignedchar*p;p=send;outportb(0x309,0x00); //空操作,向命令端口發(fā)送任意數(shù)outportb(0x309,0x40); //內(nèi)部復(fù)位(使D6=1)delay(1);outportb(0x309,0x0cf); //方式命令字outportb(0x309,0x37); //工作命令字 //(RTS、ER、RxE、DTR、TxEN均置1)for(i=0;i<45;i++){while(inportb(0x309)&0x01==0); //查發(fā)送是否準(zhǔn)備好 //(TxRDY=1)outportb(0x308,*p); //發(fā)送一個字節(jié)p++;}2024/9/25計(jì)算機(jī)接口技術(shù)43(2)乙機(jī)的接收程序接收程序要先檢測有無差錯,若有,則需處理差錯。DATASEGMENTBUF_R45DUP(?)ERROR_MESSDB'ERR0R!'0DH,0AH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEGIN:MOVAX,DATAMOVDS,AX2024/9/25計(jì)算機(jī)接口技術(shù)44MOVDX,309H;8251A初始化MOVAL,0AAH;空操作,向命令端口送任意數(shù)OUTDX,ALMOVAL,01010000B

;內(nèi)部復(fù)位(含D6=1)OUTDX,ALNOPMOVAL,11001111B;方式字(與甲機(jī)的相同)OUTDX,ALMOVAL,00010100B ;工作命令字(ER、RxE置1)OUTDX,ALMOVDI,OFFSETBUF_R ;接收區(qū)首址

MOVCX,45;字節(jié)數(shù)L2:MOVDX,309H;查狀態(tài),可否接收INAL,DX;先查接收是否出錯

TESTAL,38H;同時查3種錯誤JNZERR;有錯,轉(zhuǎn)出錯處理

ANDAL,02H;再查接收是否準(zhǔn)備好(RxRDY=1)JZL2;接收未準(zhǔn)備好,則等待2024/9/25計(jì)算機(jī)接口技術(shù)45MOVDX,308H;接收數(shù)據(jù)INAL,DX;接收準(zhǔn)備好,則接收1個字節(jié)MOV[DI],AL;并存入接收區(qū)INCDI;接收區(qū)地址加1LOOPL2;未接收完,繼續(xù)JMPSTOP;已完,程序結(jié)束,退出

ERR:LEADX,ERROR_MESS

;錯誤處理子程序MOVAH,09HINT21H

STOP:MOVAX,4C00H;返回DOSINT21HCODEENDSENDBEGIN2024/9/25計(jì)算機(jī)接口技術(shù)46

unsignedcharrecv[45];

unsignedchari,tmp;

voidmain(){

outportb(0x309,0x0aa);//空操作,向命令端口送任意數(shù)

outportb(0x309,0x50);

//內(nèi)部復(fù)位(含D6=1)

delay(1);

outportb(0x309,0x0cf); //方式字

outportb(0x309,0x14); //工作命令字(ER、RxE置1)

for(i=0;i<45;i++){ tmp=inportb(0x309); //讀狀態(tài)端口 if(tmp&0x38!=0x00){ //先查接收是否出錯

printf("Error!\n"); //打印出錯信息

break; //退出 } else{

if(tmp&0x02==0x00)//再查接收是否準(zhǔn)備好(RxRDY=1)

break;

else

recv[i]=inportb(0x308);//準(zhǔn)備好則接收1個字節(jié) }

}

}2024/9/25計(jì)算機(jī)接口技術(shù)478.6

RS-485標(biāo)準(zhǔn)的串行通信接口設(shè)計(jì)例8.2采用RS-485標(biāo)準(zhǔn)的異步串行通信接口設(shè)計(jì)8.6.1

設(shè)計(jì)要求

要求在甲乙兩臺微機(jī)之間按RS-485標(biāo)準(zhǔn)進(jìn)行全雙工異步串行通信,也就是雙方在各自的鍵盤上按鍵向?qū)Ψ桨l(fā)送字符時,同時又可接收對方發(fā)來的字符。字符幀格式采用異步起/止方式,1位停止位,7位數(shù)據(jù)位,無校驗(yàn),波特率因子為16。按ESC鍵退出。2024/9/25計(jì)算機(jī)接口技術(shù)488.6.2設(shè)計(jì)方案分析

本例與前面例8.1不同之處有兩點(diǎn):一是通信標(biāo)準(zhǔn)不同,本例采用RS-485標(biāo)準(zhǔn),而例8.1采用RS-232C;二是傳送方式不同,本例是全雙工,例8.1是半雙工。因此,在接口電路組成、通信電纜、連接器有所不同。但兩者的通信方式相同,都是異步通信,故串行通信程序的編寫步驟與方法相同。

RS-485標(biāo)準(zhǔn)與RS-232C標(biāo)準(zhǔn)的不同之處主要是使用了平衡發(fā)送器/差動接收器,實(shí)現(xiàn)雙線平衡差動方式傳輸數(shù)據(jù)。平衡發(fā)送器/差動接收器,簡稱收發(fā)器,如MAX485/MAX491芯片。

本方案是采用可編程通用接口芯片構(gòu)成外置式的接口電路,來實(shí)現(xiàn)RS-485標(biāo)準(zhǔn)的接口設(shè)計(jì)要求,為此將“8251A+MAX491“作為接口電路的核心。下面先介紹MAX491的外部特性以及使用。2024/9/25計(jì)算機(jī)接口技術(shù)491.收發(fā)器芯片MAX491的外部特性

MAX491的引腳如圖8.20所示,其引腳功能的定義如表8.3所示。圖8.20MAX491外部引腳2024/9/25計(jì)算機(jī)接口技術(shù)50引腳名稱功能MAX485MAX49112RO接收器輸出:當(dāng)VA-VB≥+200mV時,RO=1;當(dāng)+200mV時,RO=1;當(dāng)VA-VB≤-200mV時,RO=0時,RO=023RE接收器輸出允許:當(dāng)RE=0時,允許輸出;當(dāng)RE=1時,輸出呈高阻(三態(tài))RE=0時,允許輸出;當(dāng)RE=1時,輸出呈高阻(三態(tài))34DE驅(qū)動器輸出允許:當(dāng)DE=1時,允許輸出;當(dāng)DE=0時,輸出呈高阻(三態(tài))DE=1時,允許輸出;當(dāng)DE=0時,輸出呈高阻(三態(tài))45DI驅(qū)動器輸入:當(dāng)DI=0時,Y=0,Z=1;當(dāng)DI=1時,Y=1,Z=0DI=0時,Y=0,Z=1;當(dāng)DI=1時,Y=1,Z=056,7GND接地—9Y驅(qū)動器非反向輸出—10Z驅(qū)動器反向輸出6—A接收器非反向輸入和驅(qū)動器非反向輸出—12A接收器非反向輸入7—B接收器反向輸入和驅(qū)動器反向輸出—11B接收器反向輸入814VCC正電源:4.75V≤4.75V≤VCC≤5.25V5.25V—1,8,13NC不連接表8.3 MAX485/491引腳功能的定義2024/9/25計(jì)算機(jī)接口技術(shù)512.信號的邏輯定義MAX485/491芯片信號邏輯定義如表8.4所示發(fā)送端(驅(qū)動器)接收端(接收器)輸入輸出輸入輸出(DI)DI)Y(A)(A)Z(B)(B)VA-VB(RO)RO)110≥+0.2V+0.2V1001≤-0.2V-0.2V0表8.4 MAX485/491對信號的邏輯定義從表8.4可知,MAX485/491對接收端的信號邏輯定義如下。當(dāng)差動輸入(VA?VB)≥+200mV時,輸出為邏輯1;當(dāng)差動輸入(VA?VB)≤?200mV時,輸出為邏輯0。8.6.3電路與程序設(shè)計(jì)2024/9/25計(jì)算機(jī)接口技術(shù)528.6.3電路與程序設(shè)計(jì)

1.串口電路設(shè)計(jì)

由于RS-485標(biāo)準(zhǔn)是把原來由RS-232C標(biāo)準(zhǔn)采用單端發(fā)送/單端接收的信號,改成差動發(fā)送和差動接收,因此,RS-485接口電路的組成是在圖8.19的基礎(chǔ)上,增加差動收/發(fā)器MAX491,便可實(shí)現(xiàn)從單端到差動的轉(zhuǎn)換和全雙工通信,而電路的其他部分(如波特率時鐘發(fā)生器)與RS-232C的要求一樣。

接口電路框圖如圖8.21所示。是一點(diǎn)對多點(diǎn)的全雙工通信網(wǎng)絡(luò),各通信站點(diǎn)之間通過接線盒轉(zhuǎn)接,并采用帶4芯水晶插頭的雙絞線進(jìn)行連接。

2024/9/25計(jì)算機(jī)接口技術(shù)53接口電路框圖如圖8.21所示圖8.21RS-485標(biāo)準(zhǔn)全雙工異步串行通信接口電路框圖(甲機(jī)一側(cè))2024/9/25計(jì)算機(jī)接口技術(shù)542.雙工串行通信程序設(shè)計(jì)

RS-485標(biāo)準(zhǔn)所采用的通信方式和數(shù)據(jù)格式及數(shù)據(jù)傳輸速率的控制方法均與RS-232C標(biāo)準(zhǔn)相同,只是傳輸信號時所用的數(shù)據(jù)線及對信號的邏輯定義有所不同。這些物理層的定義并不影響通信軟件編程,因此,RS-485程序的編寫與RS-232C程序的編程完全一樣,在RS-232C標(biāo)準(zhǔn)下編寫的發(fā)送/接收程序在RS-485標(biāo)準(zhǔn)下同樣可以運(yùn)行。

程序流程圖如圖8.22所示。具體程序見教材P151-152。2024/9/25計(jì)算機(jī)接口技術(shù)55圖8.22接口程序流程。圖8.22RS-485全雙工異步串行通信程序流程圖2024/9/25計(jì)算機(jī)接口技術(shù)568.7

基于UART的串行通信接口

UART是一種通用異步收發(fā)器,是臺式微機(jī)PC系統(tǒng)配置的外置式串行接口芯片,也是嵌入式微機(jī)和MCU中以接口模塊方式作為內(nèi)置式串行接口,它支持RS-232C接口標(biāo)準(zhǔn),能實(shí)現(xiàn)異步全雙工通信。以16550為例,它比8251A具有更強(qiáng)的中斷控制能力,并且自帶內(nèi)置式波特率時鐘發(fā)生器和16B的FIFO數(shù)據(jù)存儲器,從而提高了數(shù)據(jù)吞吐量和傳輸速率。下面以臺式微機(jī)PC與實(shí)驗(yàn)平臺串行通信接口程序設(shè)計(jì)為例說明UART16550的使用方法。例8.3PC微機(jī)與實(shí)驗(yàn)平臺的串行通信接口及程序設(shè)計(jì)8.7.1設(shè)計(jì)要求

要求PC機(jī)通過串口COM1采用查詢方式發(fā)送1K字節(jié)數(shù)據(jù)到實(shí)驗(yàn)平臺MFID。通信的數(shù)據(jù)格式為8位數(shù)據(jù),1位停止位,奇校驗(yàn)。波特率為2400b/s。2024/9/25計(jì)算機(jī)接口技術(shù)578.7.2設(shè)計(jì)方案分析

由于PC微機(jī)的串口COM1是采用16550芯片,因此,先介紹它的外部特性與編程模型,然后討論基于16550的串行通信程序設(shè)計(jì)。1.16550(UART)的外部特性串行接口芯片16550的外部引腳

如圖8.23所示。

1655023各引腳的功能定義

如表8.5所示。(參見教材P153-154)圖8.2316550外部引腳圖2024/9/25計(jì)算機(jī)接口技術(shù)582.16550的編程模型16550的編程模型包括內(nèi)部寄存器及相應(yīng)的編程命令和端口地址。(1)16550內(nèi)部寄存器及其端口地址

16550的內(nèi)部寄存器及端口地址,如表8.6所示。表8.616550內(nèi)部寄存器及端口地址2024/9/25計(jì)算機(jī)接口技術(shù)59(2)16550內(nèi)部寄存器的格式

在實(shí)際應(yīng)用中,如果是進(jìn)行近距離、零MODEM方式傳送,就有些寄存器不使用(如MCR、MSR)。另外,如果與CPU交換數(shù)據(jù)是采用查詢方式,則有關(guān)中斷處理的幾個寄存器也不使用。下面介紹幾個常用的基本寄存器,進(jìn)行重點(diǎn)學(xué)習(xí)。①線路控制寄存器LCR

LCR的的作用是用來約定雙方通信的數(shù)據(jù)幀格式,如圖8.24所示。圖8.24線路控制寄存器LCR的格式2024/9/25計(jì)算機(jī)接口技術(shù)60

例如,若數(shù)據(jù)幀格式為8位數(shù)據(jù)位,2位停止位,校驗(yàn)允許,偶校驗(yàn),無附加位,無空隔發(fā)送,禁止除數(shù)鎖存,則LCR的代碼為00011111B,其選擇起止式數(shù)據(jù)幀格式的程序段如下。MOVDX,3FBH ;COM1的LCR的端口地址MOVAL,00011111B;LCR數(shù)據(jù)格式OUTDX,AL2024/9/25計(jì)算機(jī)接口技術(shù)61②線路狀態(tài)寄存器LSR

LSR的作用是提供接收/發(fā)送過程中產(chǎn)生的狀態(tài),包括發(fā)送和接收是否準(zhǔn)備好,接收過程是否發(fā)生錯誤,以及什么性質(zhì)的錯誤等。LSR的格式如圖8.25所示。圖8.25線路狀態(tài)寄存器LSR的格式2024/9/25計(jì)算機(jī)接口技術(shù)62例如,利用查詢LSR的內(nèi)容進(jìn)行收/發(fā)操作處理,其匯編語言程序段如下。START:MOVDX,3FDH ;LSR端口地址INAL,DX ;讀取LSR的內(nèi)容TESTAL,00011110B ;檢查有無接收錯誤及中止信號JNZERR ;有錯,轉(zhuǎn)出錯處理

TESTAL,01H ;無錯,查接收是否準(zhǔn)備好DR=1?JNZRECEIVE ;接收已準(zhǔn)備好,則轉(zhuǎn)接收程序

TESTAL,20H ;接收未準(zhǔn)備好,查發(fā)送是否準(zhǔn)備;;好THRE=1?JNZTRANS ;發(fā)送已準(zhǔn)備好,則轉(zhuǎn)發(fā)送程序JMPSTART ;發(fā)送也未準(zhǔn)備好,等待ERR:(略)TRANS:(略)RECEIVE:(略)2024/9/25計(jì)算機(jī)接口技術(shù)63③波特率除數(shù)寄存器波特率除數(shù)寄存器,分高字節(jié)DLM和低字節(jié)DLL兩個除數(shù)寄存器。在設(shè)置波特率時,先將80H寫入線路控制寄存器LCR,使波特率除數(shù)寄存器的訪問位DL置1,再將波特率除數(shù)按先低8位和后高8位,分別寫入DLL和DLM。16550內(nèi)部自帶波特率時鐘發(fā)生器,對1.8432MHz的晶振源進(jìn)行分頻,波特率除數(shù)的計(jì)算公式為

除數(shù)=1843200÷(波特率×16) (8-5)式中的16是波特率因子,即波特率的倍數(shù)。利用式(8-5)可算出不同波特率的除數(shù)。表8.7中列出了幾種常用的波特率所對應(yīng)的除數(shù)。表8.7波特率與除數(shù)(分頻系數(shù))對照表2024/9/25計(jì)算機(jī)接口技術(shù)64例如,當(dāng)要求波特率為19200b/s時,設(shè)置除數(shù)寄存器。其匯編語言程序段如下。MOVDX,3FBH ;LCR寄存器端口地址MOVAL,10000000B ;除數(shù)寄存器訪問位DL置1OUTDX,ALMOVDX,3F8H ;DLL寄存器端口地址MOVAL,06H ;寫入低位除數(shù)OUTDX,ALMOVDX,3F9H ;DLM寄存器端口地址MOVAL,0 ;寫入高位除數(shù)OUTDX,AL2024/9/25計(jì)算機(jī)接口技術(shù)65④數(shù)據(jù)寄存器THR和RBR

16550內(nèi)部有兩個數(shù)據(jù)寄存器都是8位,并共用一個端口。用于發(fā)送的稱為發(fā)送保持寄存器THR,用于接收的稱為接收緩沖寄存器RBR。3.16550的初始化

初始化在硬件或軟件復(fù)位后進(jìn)行,其內(nèi)容是通過對LCR編程,約定異步通信的數(shù)據(jù)幀格式,通過對波特除數(shù)寄存器編程確定串行傳輸?shù)乃俾省?/p>

例如,當(dāng)使用COM1接口時,進(jìn)行異步通信的數(shù)據(jù)格式為:8位數(shù)據(jù)位,偶校驗(yàn),1位停止位,波特率為4800b/s。則初始化匯編語言程序段如下。2024/9/25計(jì)算機(jī)接口技術(shù)66初始化匯編語言程序段:STARTPROCNEARLCREQU3FBH;LCR的端口DLLEQU3F8H;DLL的端口DLMEQU3F9H ;DLM的端口MOVAL,10000000B ;波特率除數(shù)寄存器訪問位置1OUTLCR,ALMOVAX,0018H;波特率除數(shù)OUTDLL

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論