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

下載本文檔

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

文檔簡介

2024/3/21計算機接口技術1第8章串行通信接口本章內(nèi)容

串行通信的基本概念

串行通信協(xié)議串行通信接口標準串行通信接口電路RS-232C標準的串行通信接口設計RS-485標準的串行通信接口設計基于UART的串行通信接口2024/3/21計算機接口技術28.1串行通信的基本概念

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

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

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

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

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

特點:①每一端都有發(fā)送器和接收器②有二條傳送線應用:交互式應用,遠程監(jiān)測控制2024/3/21計算機接口技術52.半雙工

半雙工是通信雙方分時進行發(fā)送和接收操作,即雙方都可發(fā)可收,但不能在同一時刻發(fā)送和接收,如圖8.2所示。因為半雙工只設置1根(或1對)傳輸線,用于發(fā)送時就不能接收,用于接收時就不能發(fā)送。所以在半雙工通信過程中,需要進行接收/發(fā)送方向的切換,會有延時產(chǎn)生。圖8.2半雙工方式示意圖特點:①每端需有一個收/發(fā)切換電子開關②因有切換,會產(chǎn)生時間延遲應用:打印機串口,單向傳送設備,發(fā)送器→接收器3.單工

單工是通信雙方只能進行一個方向的傳輸,不能有雙向傳輸。此方式目前很少使用了。2024/3/21計算機接口技術78.1.3串行通信的基本方式1.異步通信方式

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

同步通信是以數(shù)據(jù)塊(字符塊)為單位傳輸?shù)?,每個數(shù)據(jù)塊經(jīng)過格式化之后,形成一幀數(shù)據(jù),作為一個整體進行發(fā)送與接收,因此,傳輸一旦開始,就要求數(shù)據(jù)塊內(nèi)部的每一位都要同步。為此,收/發(fā)兩端必須使用同一時鐘來控制數(shù)據(jù)塊內(nèi)部位與位之間的定時,因此同步通信要求雙方之間必須設置一根時鐘線。

區(qū)別:異步通信方式的傳輸速率低,同步通信方式的傳輸速率高。異步傳輸?shù)膫鬏斣O備簡單,易于實現(xiàn),同步傳輸?shù)膫鬏斣O備復雜,技術要求高。因此,異步串行通信一般用在數(shù)據(jù)傳輸時間不能確定、發(fā)送數(shù)據(jù)不連續(xù)、數(shù)據(jù)量較少和數(shù)據(jù)傳輸速率較低的場合;而同步串行通信則用在要求快速、連續(xù)傳輸大批量數(shù)據(jù)的場合。

2024/3/21計算機接口技術88.1.3串行通信的基本方式1.異步通信方式

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

同步通信是以數(shù)據(jù)塊(字符塊)為單位傳輸?shù)模總€數(shù)據(jù)塊經(jīng)過格式化之后,形成一幀數(shù)據(jù),作為一個整體進行發(fā)送與接收,因此,傳輸一旦開始,就要求數(shù)據(jù)塊內(nèi)部的每一位都要同步。為此,收/發(fā)兩端必須使用同一時鐘來控制數(shù)據(jù)塊內(nèi)部位與位之間的定時,因此同步通信要求雙方之間必須設置一根時鐘線。

區(qū)別:異步通信方式的傳輸速率低,同步通信方式的傳輸速率高。異步傳輸?shù)膫鬏斣O備簡單,易于實現(xiàn),同步傳輸?shù)膫鬏斣O備復雜,技術要求高。因此,異步串行通信一般用在數(shù)據(jù)傳輸時間不能確定、發(fā)送數(shù)據(jù)不連續(xù)、數(shù)據(jù)量較少和數(shù)據(jù)傳輸速率較低的場合;而同步串行通信則用在要求快速、連續(xù)傳輸大批量數(shù)據(jù)的場合。

2024/3/21計算機接口技術98.1.4串行通信的調(diào)制與解調(diào)

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

調(diào)制就是進行波形變換?;蛘哒f進行頻譜變換,就是將基帶數(shù)字信號的頻譜變換成適合于在模擬信道中傳輸?shù)念l譜。2.作用:

調(diào)制器(Modulator)是一個波形變換器,它將基帶數(shù)字的波形變換成適合于模擬信道傳輸?shù)牟ㄐ?。解調(diào)器是一個波形識別器,將模擬信號恢復成原來的數(shù)字信號。調(diào)制器解調(diào)器010010010010最基本的調(diào)制方法有以下幾種:(1)調(diào)幅(AM)即載波的振幅隨基帶數(shù)字信號而變化.

“1”對應有載波

“0”

對應無載波3.調(diào)制方法:(2)調(diào)頻(FM)即載波頻率隨數(shù)字信號而變化

“0”對應”f1”

“1”對應“f2”(3)調(diào)相(PM)即載波初始相位隨基帶數(shù)字信號而變化.

“0”對應相位0度

“1”對應相位180度f1f2FMAM0100110度180度PM2024/3/21計算機接口技術128.2

串行通信協(xié)議

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

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

串行通信時,要求雙方的傳輸速率嚴格一致,并在傳輸開始之前,要預先設定,否則,會發(fā)生錯誤。在數(shù)字通信中,傳輸速率的控制是通過波特率時鐘發(fā)生器和設置波特率因子或波特率除數(shù)來實現(xiàn)的。2024/3/21計算機接口技術132.波特率、發(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/3/21計算機接口技術14(3)波特率因子

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

TxC=factor×Baud(8.1)

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

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

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

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

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/3/21計算機接口技術17

從式(8-4)可知,當輸入時鐘頻率和波特率因子選定后,求波特率的問題就變成了求定時器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)計算出波特率相對應的定時常數(shù),然后,將定時常數(shù)裝入82C54A的計數(shù)初值寄存器啟動定時器即可。2024/3/21計算機接口技術188.2.2串行通信中的差錯檢測1.誤碼率的控制

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

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

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

奇偶校驗錯:通常是由噪聲干擾而引起的,發(fā)生這種錯誤時,采用要求發(fā)送方重發(fā)。②溢出錯:通常是由收發(fā)雙方的速率不匹配而引起的,可以采用降低發(fā)送方的發(fā)送速率或者在接收方設置FIFO緩沖區(qū)的方法來減少這種錯誤。③幀格式錯:這種錯誤大多是由于雙方數(shù)據(jù)格式約定不一致或干擾造成的,可通過核對雙方的數(shù)據(jù)格式減少錯誤。④超時錯:一般是由于接口硬件電路速度跟不上而產(chǎn)生。4信息的檢錯與糾錯

串行數(shù)據(jù)在傳輸過程中,由于干擾而引起誤碼是難免的,這直接影響通信系統(tǒng)的可靠性,對通信中的檢/糾錯能力是衡是一個通信系統(tǒng)的重要內(nèi)容。

檢錯:如何發(fā)現(xiàn)傳輸中的錯誤,稱為檢錯。糾錯:如何消除錯誤,稱為糾錯.(自動重發(fā)、正向糾錯)

例:奇偶校驗檢錯方陣碼檢錯循環(huán)冗余碼(CRC)檢錯

差錯檢測重要指標:誤碼率P0

是衡量一個信道質(zhì)量的重要參數(shù)。即:P0=發(fā)生差錯的碼元數(shù)接收的總碼元數(shù)

編碼效率R:是衡量編碼性能好壞的重要參數(shù)。即:R=k/n=k/(k+r)其中:k

為碼字中信息位;r為編碼時外加冗余位;

n為編碼后得到的碼長1.水平奇偶校驗碼(奇偶檢錯)I11 I12…

I1q r1I21 I22…

I2q r2

… … …. …Ip1 Ip2…

Ipq rq

信息位冗余位編碼效率:R=q/q+1奇校驗:使字符中的“1”的總數(shù)為奇數(shù)偶校驗:使字符中的“1”的總數(shù)為偶數(shù)1101001001000001101010101111001111000011

0000100(檢驗字符)冗余位2.垂直水平奇偶校驗碼(方正檢錯)

編碼效率:R=pq/(p+1)(q+1)3.循環(huán)冗余碼CRC(最精確、最常用)

循環(huán)冗余碼CRC(CyclicRedundancyCode)又稱多項式碼。任何一個二進制數(shù)位串都可以和一個只含有0和1二系數(shù)的多項式建立一一對應關系。如:1011011x6+x4+x3+x+1K(x)=x6+x4+1信息位:1010001冗余位:1101R(x)=x3+x2+1代碼:10100011101T(x)=x4K(x)+R(x)=x10+x8+x4+x3+x2+12024/3/21計算機接口技術248.2.3串行通信中的數(shù)據(jù)格式1.起止式異步通信數(shù)據(jù)幀格式

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

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

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

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

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

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

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

一定有一個下跳變。

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

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

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

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

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

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

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

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

串行通信接口標準

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

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

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

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

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

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

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

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

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

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

1)連接器

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

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

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

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

圖8.12RS-485標準的傳輸連接2024/3/21計算機接口技術362.RS-485標準對信號的邏輯定義(電氣特性)

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

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

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

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

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

串行通信接口的第五個任務是對數(shù)據(jù)傳輸速率進行控制,確保串行通信雙方的數(shù)據(jù)傳輸速率一致。這意味著接口電路需設置波特率時鐘發(fā)生器。2024/3/21計算機接口技術398.4.2串行通信接口電路的解決方案本章串行接口的解決方案是采用可編程通用串行通信接口芯片構成外置式的接口電路。1.串行通信接口電路的組成

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

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

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

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

RS-232C標準的串行通信接口設計例8.1采用RS-232C標準的異步串行通信接口設計8.5.1

設計要求

設計甲乙兩臺微機之間串行通信接口電路。

要求按RS-232C標準進行半雙工異步串行通信,把甲機上開發(fā)的步進電機控制用程序傳送到乙機中去,以便在乙機上運行。字符幀格式采用起止式異步方式,字符長度為8位,停止位為2位,波特率因子為64,無校驗。波特率為4800b/s。CPU與接口芯片8251A之間用查詢方式交換數(shù)據(jù)。2024/3/21計算機接口技術411.8251A的外部特性251A的外部引腳如圖8.14所示。引腳信號線定義表8.2所示。圖8.148251A引腳圖表8.28251A外部引腳功能8.5.2設計方案分析本方案是采用可編程通用接口芯片8251A構成‘外置式’的接口電路。因此,先分析與介紹8251A的外部特性和編程模型2.功能:(1)具有獨立的發(fā)送和接收器,可單工、半雙工、全雙工的方式通信(2)能夠以同步、異步方式進行通信(3)在同步方式中,每個字符可以定義5-8個數(shù)據(jù)位,通信的波特率:0-64Kbps(4)在異步方式中,每個字符可以定義5-8個數(shù)據(jù)位,波特率系數(shù)為1/16/64,停止位的位數(shù)1/1.5或2位,通信波特率:0-19.2Kbps。(5)可進行奇偶校驗,并可編程選擇奇校驗或偶校驗。(6)出錯檢測。3.組成:

接收器、發(fā)送器、調(diào)制控制、讀/寫控制、數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器讀/寫控制邏輯調(diào)制控制發(fā)送緩沖器發(fā)送控制接收緩沖器接收控制TXDTXRDYTXEMPTYTXCRXDRXRDYSYNDET/BDRXCDTRDSRRTSCTSRESETCLKC/DRDWRCS發(fā)送器準備好發(fā)送數(shù)據(jù)線發(fā)送器空輸入時鐘4.8251A的內(nèi)部邏輯C/D-=1,寫命令,讀狀態(tài);=0,R/W數(shù)據(jù)(1).發(fā)送器(執(zhí)行CPU指令,并行數(shù)據(jù)-發(fā)送緩沖器-發(fā)送移位器并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù))①TXRDY(TransmitterReady):發(fā)送器準備好,高電平有效②TXE(TransmitterEmpty):發(fā)送器空,狀態(tài)線,高有效③TXD:發(fā)送數(shù)據(jù)線④TXC:發(fā)送器輸入時鐘(2).接收器(接收在RxD上的串行數(shù)據(jù)并按規(guī)定的格式轉(zhuǎn)換為并行數(shù)據(jù),存放在接受數(shù)據(jù)緩沖器中)①RXD:接收數(shù)據(jù)線②RXRDY:接收器準備好③SYNDET//BD:雙向信號,同步字符檢出信號(同步方式) /間斷檢出信號(異步方式)④TXC:接收器輸入時鐘(3).與調(diào)制器的接口接號①DTR:數(shù)據(jù)終端準備好②RTS:請發(fā)送③DSR:數(shù)據(jù)裝置準備好④CTS:清除傳送8251讀寫操作CSRDWRC/D操作0010CPU讀8251數(shù)據(jù)0100CPU向8251寫數(shù)據(jù)0011CPU讀8251狀態(tài)字0101CPU向8251寫控制字011*數(shù)據(jù)總線空1***數(shù)據(jù)總線空C/D:控制/數(shù)據(jù)信號輸入端。C/D=1,數(shù)據(jù)總線傳輸?shù)氖强刂菩畔⒑蜖顟B(tài)字;C/D=0,傳送的是數(shù)據(jù)信息。8251A與CPU的連接2024/3/21計算機接口技術486.8251A的編程模型

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

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

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

2024/3/21計算機接口技術49約定雙方的通信方式,數(shù)據(jù)格式,傳送速率.a.作用:對8251A工作方式進行選擇,是異步方式還是同步方式.b.方式命令字格式:例如在某異步通信中,數(shù)據(jù)格式采用8位數(shù)據(jù)位,1位起始位,2位停止位,奇校驗,波特率因子是16,其方式字為11011110B。

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

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

方式命令格式如8.15所示。圖8.158251A通信方式命令的格式2024/3/21計算機接口技術50(3)工作命令工作命令的格式如圖8.16所示。作用:是確定8251A的實際操作,迫使8251A進行某種操作或工作狀態(tài),以便接收或發(fā)送數(shù)據(jù)。圖8.168251A工作命令的格式例如,在異步通信時,若允許接收,同時允許發(fā)送,則工作命令字=00000101B。程序段如下。MOVDX,309H ;命令口MOVAL,00000101B ;工作命令字OUTDX,AL2024/3/21計算機接口技術51(4)狀態(tài)字

狀態(tài)字格式如圖8.17所示。作用:8251A執(zhí)行命令進行數(shù)據(jù)傳送后的狀態(tài)字存放在狀態(tài)寄存器中,CPU通過讀出狀態(tài)字進行分析和判斷,以決定下一步的操作。圖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/3/21計算機接口技術523.8251A的初始化(1)初始化內(nèi)容在異步方式下,8251A的初始化內(nèi)容包括:先寫內(nèi)部復位命令,再寫方式命令,最后寫工作命令幾部分。為了提高可靠性,往往還在寫內(nèi)部復位命令之前,向命令口寫一長串0,作為空操作。在同步方式下,8251A的初始化還包括設置同步字符。(2)初始化順序

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

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

整個通信程序由甲機的發(fā)送程序和乙機的接收程序兩部分組成,分別采用匯編語言與C語言編寫。(1)甲機的發(fā)送程序DATASEGMENTBUF_TDB45DUP(?)DATDENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX2024/3/21計算機接口技術55MOVDX,309H;8251A初始化MOVAL,00H;空操作,向命令端口發(fā)送任意數(shù)OUTDX,ALMOVAL,01000000B;內(nèi)部復位(使D6=1)OUTDX,ALNOPMOVAL,11001111B;方式命令字(8位數(shù)據(jù),2位停止,無校驗,;波特因子為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ā)送是否準備好(TxRDY=1)JZL1;發(fā)送未準備好,則等待2024/3/21計算機接口技術56MOVDX,308HMOVAL,[SI];發(fā)送準備好,則從發(fā)送區(qū)取1個字節(jié)發(fā)送OUTDX,ALINCSI;發(fā)送區(qū)地址加1DECCX;字節(jié)數(shù)減1JNZL1;未發(fā)送完,繼續(xù)

MOVAX,4C00H;已發(fā)送完,回DOSINT21HCODEENDSENDSTART2024/3/21計算機接口技術57unsignedinti;unsignedcharsend[45]; //發(fā)送緩沖區(qū)unsignedchar*p;p=send;outportb(0x309,0x00); //空操作,向命令端口發(fā)送任意數(shù)outportb(0x309,0x40); //內(nèi)部復位(使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ā)送是否準備好 //(TxRDY=1)outportb(0x308,*p); //發(fā)送一個字節(jié)p++;}2024/3/21計算機接口技術58(2)乙機的接收程序接收程序要先檢測有無差錯,若有,則需處理差錯。DATASEGMENTBUF_R45DUP(?)ERROR_MESSDB'ERR0R!'0DH,0AH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEGIN:MOVAX,DATAMOVDS,AX2024/3/21計算機接口技術59MOVDX,309H;8251A初始化MOVAL,0AAH;空操作,向命令端口送任意數(shù)OUTDX,ALMOVAL,01010000B

;內(nèi)部復位(含D6=1)OUTDX,ALNOPMOVAL,11001111B;方式字(與甲機的相同)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;再查接收是否準備好(RxRDY=1)JZL2;接收未準備好,則等待2024/3/21計算機接口技術60MOVDX,308H;接收數(shù)據(jù)INAL,DX;接收準備好,則接收1個字節(jié)MOV[DI],AL;并存入接收區(qū)INCDI;接收區(qū)地址加1LOOPL2;未接收完,繼續(xù)JMPSTOP;已完,程序結束,退出

ERR:LEADX,ERROR_MESS

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

STOP:MOVAX,4C00H;返回DOSINT21HCODEENDSENDBEGIN2024/3/21計算機接口技術61

unsignedcharrecv[45];

unsignedchari,tmp;

voidmain(){

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

outportb(0x309,0x50);

//內(nèi)部復位(含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)//再查接收是否準備好(RxRDY=1)

break;

else

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

}

}2024/3/21計算機接口技術628.6

RS-485標準的串行通信接口設計例8.2采用RS-485標準的異步串行通信接口設計8.6.1

設計要求

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

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

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

本方案是采用可編程通用接口芯片構成外置式的接口電路,來實現(xiàn)RS-485標準的接口設計要求,為此將“8251A+MAX491“作為接口電路的核心。下面先介紹MAX491的外部特性以及使用。2024/3/21計算機接口技術641.收發(fā)器芯片MAX491的外部特性

MAX491的引腳如圖8.20所示,其引腳功能的定義如表8.3所示。圖8.20MAX491外部引腳2024/3/21計算機接口技術65引腳名稱功能MAX485MAX49112RO接收器輸出:當VA-VB≥+200mV時,RO=1;當+200mV時,RO=1;當VA-VB≤-200mV時,RO=0時,RO=023RE接收器輸出允許:當RE=0時,允許輸出;當RE=1時,輸出呈高阻(三態(tài))RE=0時,允許輸出;當RE=1時,輸出呈高阻(三態(tài))34DE驅(qū)動器輸出允許:當DE=1時,允許輸出;當DE=0時,輸出呈高阻(三態(tài))DE=1時,允許輸出;當DE=0時,輸出呈高阻(三態(tài))45DI驅(qū)動器輸入:當DI=0時,Y=0,Z=1;當DI=1時,Y=1,Z=0DI=0時,Y=0,Z=1;當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/3/21計算機接口技術662.信號的邏輯定義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對接收端的信號邏輯定義如下。當差動輸入(VA?VB)≥+200mV時,輸出為邏輯1;當差動輸入(VA?VB)≤?200mV時,輸出為邏輯0。8.6.3電路與程序設計2024/3/21計算機接口技術678.6.3電路與程序設計

1.串口電路設計

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

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

2024/3/21計算機接口技術68接口電路框圖如圖8.21所示圖8.21RS-485標準全雙工異步串行通信接口電路框圖(甲機一側(cè))2024/3/21計算機接口技術692.雙工串行通信程序設計

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

程序流程圖如圖8.22所示。具體程序見教材P151-152。2024/3/21計算機接口技術70圖8.22接口程序流程。圖8.22RS-485全雙工異步串行通信程序流程圖2024/3/21計算機接口技術718.7

基于UART的串行通信接口

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

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

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

如圖8.23所示。

1655023各引腳的功能定義

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

16550的內(nèi)部寄存器及端口地址,如表8.6所示。表8.616550內(nèi)部寄存器及端口地址2024/3/21計算機接口技術74(2)16550內(nèi)部寄存器的格式在實際應用中,如果是進行近距離、零MODEM方式傳送,就有些寄存器不使用(如MCR、MSR)。另外,如果與CPU交換數(shù)據(jù)是采用查詢方式,則有關中斷處理的幾個寄存器也不使用。下面介紹幾個常用的基本寄存器,進行重點學習。①線路控制寄存器LCR

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

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

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

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

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

除數(shù)=1843200÷(波特率×16) (8-5)式中的16是波特率因子,即波特率的倍數(shù)。利用式(8-5)可算出不同波特率的除數(shù)。表8.7中列出了幾種常用的波特率所對應的除數(shù)。表8.7波特率與除數(shù)(分頻系數(shù))對照表2024/3/21計算機接口技術79例如,當要求波特率為19200b/s時,設置除數(shù)寄存器。其匯編語言程序段如下。MOVDX,3FBH ;LCR寄存器端口地址MOVAL,10000000B ;除數(shù)寄存器訪問位DL置1OUTDX,ALMOVDX,3F8H ;DLL寄存器端口地址MOVAL,06H ;寫入低位除數(shù)OUTDX,ALMOVDX,3F9H ;DLM寄存器端口地址MOVAL,0 ;寫入高位除數(shù)OUTDX,AL2024/3/21計算機接口技術80④數(shù)據(jù)寄存器THR和RBR16550內(nèi)部有兩個數(shù)據(jù)寄存器都是8位,并共用一個端口。用于發(fā)送的稱為發(fā)送保持寄存器THR,用于接收的稱為接收緩沖寄存器RBR。3.16550的初始化

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

溫馨提示

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

評論

0/150

提交評論