ARM的串行口試驗_第1頁
ARM的串行口試驗_第2頁
ARM的串行口試驗_第3頁
ARM的串行口試驗_第4頁
ARM的串行口試驗_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、ARM的串行口試驗一、 試驗目的1. 掌握ARM的串行口工作原理2. 學習編程實現(xiàn)ARM的UART通訊3. 掌握CPU利用串口通訊的方法二、 試驗內(nèi)容學習串行通訊原理,了解串行通訊控制器,閱讀ARM芯片文檔,掌握ARM的UART相關(guān)寄存器的功能,熟悉ARM系統(tǒng)硬件的UART相關(guān)接口。編程實現(xiàn)ARM和計算機實現(xiàn)串行通訊:ARM監(jiān)視串行口,將接受到的字符再發(fā)送給串口(計算機與開發(fā)板是通過超級終端通訊的),即按PC鍵盤通過超級終端發(fā)送數(shù)據(jù),開發(fā)板將接受到的數(shù)據(jù)再返送給PC,在超級終端上顯示。三、 預備知識1. 用ARM ADS1.2集成開發(fā)環(huán)境,編寫和調(diào)試程序的基本過程。2. ARM應用程序的框架結(jié)

2、構(gòu)。3. 了解串行總線。四、 試驗設備及工具硬件:ARM嵌入式開發(fā)平臺、PC機Pentium100以上、用于ARM920T的JTAG仿真器、串口線。軟件:PC機操作系統(tǒng)Win2000或WinXP、ARM ADS1.2集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。五、 試驗原理及說明隨著計算機系統(tǒng)的應用和微機網(wǎng)絡的發(fā)展,通信功能越來越顯的重要。這里所說的通信是指計算機與外界的信息交換。因此,通信既包括計算機與外部設備之間,也包括計算機和計算機之間的信息交換。由于串行通信是在一根傳輸線上一位一位的傳送信息,所用的傳輸線少,并且可以借助現(xiàn)成的電話網(wǎng)進行信息傳送,因此,特別適合于遠距離傳輸。對于那些

3、與計算機相距不遠的人機交換設備和串行存儲的外部設備如終端、打印機、邏輯分析儀、磁盤等,采用串行方式交換數(shù)據(jù)也很普遍。在實時控制和管理方面,采用多臺微機處理機組成分級分布控制系統(tǒng)中,各CPU之間的通信一般都是串行方式。所以串行接口是微機應用系統(tǒng)常用的接口。許多外設和計算機按串行方式進行通信,這里所說的串行方式,是指外設與接口電路之間的信息傳送方式,實際上,CPU與接口之間仍按并行方式工作。1、串行通信的概念圖1所謂“串行通信”是指外設和計算機間使用一根數(shù)據(jù)信號線(另外需要地線,可能還需要控制線),數(shù)據(jù)在一根數(shù)據(jù)信號線上一位一位地進行傳輸,每一位數(shù)據(jù)都占據(jù)一個固定的時間長度。如圖1所示。這種通信方

4、式使用的數(shù)據(jù)線少,在遠距離通信中可以節(jié)約通信成本,當然,其傳輸速度比并行傳輸慢。由于CPU與接口之間按并行方式傳輸,接口與外設之間按串行方式傳輸,因此,在串行接口中,必須要有“接收移位寄存器”(串并)和“發(fā)送移位寄存器”(并串)。典型的串行接口的結(jié)構(gòu)如圖2所示。圖2在數(shù)據(jù)輸入過程中,數(shù)據(jù)1位1位地從外設進入接口的“接收移位寄存器”,當“接收移位寄存器”中已接收完1個字符的各位后,數(shù)據(jù)就從“接收移位寄存器”進入“數(shù)據(jù)輸入寄存器”。CPU從“數(shù)據(jù)輸入寄存器”中讀取接收到的字符。(并行讀取,即D7D0同時被讀至累加器中)。“接收移位寄存器”的移位速度由“接收時鐘”確定。在數(shù)據(jù)輸出過程中,CPU把要輸

5、出的字符(并行地)送入“數(shù)據(jù)輸出寄存器”,“數(shù)據(jù)輸出寄存器”的內(nèi)容傳輸?shù)健鞍l(fā)送移位寄存器”,然后由“發(fā)送移位寄存器”移位,把數(shù)據(jù)1位1位地送到外設?!鞍l(fā)送移位寄存器”的移位速度由“發(fā)送時鐘”確定。接口中的“控制寄存器”用來容納CPU送給此接口的各種控制信息,這些控制信息決定接口的工作方式?!盃顟B(tài)寄存器”的各位稱為“狀態(tài)位”,每一個狀態(tài)位都可以用來指示數(shù)據(jù)傳輸過程中的狀態(tài)或某種錯誤。例如,用狀態(tài)寄存器的D5位為“1”表示“數(shù)據(jù)輸出寄存器”空,用D0位表示“數(shù)據(jù)輸入寄存器滿”,用D2位表示“奇偶檢驗錯”等。2、奇偶校驗串行數(shù)據(jù)在傳輸過程中,由于干擾可能引起信息的出錯,例如,傳輸字符E,其各位為:0

6、100,0101=45HD7 D0由于干擾,可能使位變?yōu)?,這種情況,我們稱為出現(xiàn)了“誤碼”。我們把如何發(fā)現(xiàn)傳輸中的錯誤,叫“檢錯”。發(fā)現(xiàn)錯誤后,如何消除錯誤,叫“糾錯”。最簡單的檢錯方法是“奇偶校驗”,即在傳送字符的各位之外,再傳送1位奇/偶校驗位??刹捎闷嫘r灮蚺夹r?。奇校驗:所有傳送的數(shù)位(含字符的各數(shù)位和校驗位)中,“1”的個數(shù)為奇數(shù),如:1 0110,01010 0110,0001偶校驗:所有傳送的數(shù)位(含字符的各數(shù)位和校驗位)中,“1”的個數(shù)為偶數(shù),如:1 0100,01010 0100,0001圖3奇偶校驗能夠檢測出信息傳輸過程中的部分誤碼(1位誤碼能檢出,2位及2位以上誤碼不能

7、檢出),同時,它不能糾錯。在發(fā)現(xiàn)錯誤后,只能要求重發(fā)。但由于其實現(xiàn)簡單,仍得到了廣泛使用。有些檢錯方法,具有自動糾錯能力。如循環(huán)冗余碼(CRC)檢錯等。3、單工、半雙工和全雙工的定義 如果在通信過程的任意時刻,信息只能由一方A傳到另一方B,則稱為單工。如果在任意時刻,信息既可由A傳到B,又能由B傳A,但只能由一個方向上的傳輸存在,稱為半雙工傳輸。 如果在任意時刻,線路上存在A到B和B到A的雙向信號傳輸,則稱為全雙工。   電話線就是二線全雙工信道。 由于采用了回波抵消技術(shù),雙向的傳輸信號不致混淆不清。雙工信道有時也將收、發(fā)信道分開,采用分離的線路或頻帶傳

8、輸相反方向的信號,如回線傳輸。在串行通信中,數(shù)據(jù)通常是在兩個站(如終端和微機)之間進行傳送,按照數(shù)據(jù)流的方向可分成三種基本的傳送方式:全雙工、半雙工、和單工。但單工目前已很少采用,下面僅介紹前兩種方式。 (1)、全雙工方式(full duplex) 當數(shù)據(jù)的發(fā)送和接收分流,分別由兩根不同的傳輸線傳送時,通信雙方都能在同一時刻進行發(fā)送和接收操作,這樣的傳送方式就是全雙工制,如圖1所示。在全雙工方式下,通信系統(tǒng)的每一端都設置了發(fā)送器和接收器,因此,能控制數(shù)據(jù)同時在兩個方向上傳送。全雙工方式無需進行方向的切換,因此,沒有切換操作所產(chǎn)生的時間延遲,這對那些不能有時間延誤的交互式應用(例如遠程監(jiān)測和控制

9、系統(tǒng))十分有利。這種方式要求通訊雙方均有發(fā)送器和接收器,同時,需要2根數(shù)據(jù)線傳送數(shù)據(jù)信號。(可能還需要控制線和狀態(tài)線,以及地線)。 圖4比如,計算機主機用串行接口連接顯示終端,而顯示終端帶有鍵盤。這樣,一方面鍵盤上輸入的字符送到主機內(nèi)存;另一方面,主機內(nèi)存的信息可以送到屏幕顯示。通常,往鍵盤上打入1個字符以后,先不顯示,計算機主機收到字符后,立即回送到終端,然后終端再把這個字符顯示出來。這樣,前一個字符的回送過程和后一個字符的輸入過程是同時進行的,即工作于全雙工方式。(2)、半雙式方式(half duplex)若使用同一根傳輸線既作接收又作發(fā)送,雖然數(shù)據(jù)可以在兩個方向上傳送,但通信雙方不能同時

10、收發(fā)數(shù)據(jù),這樣的傳送方式就是半雙工制,如圖5所示。采用半雙工方式時,通信系統(tǒng)每一端的發(fā)送器和接收器,通過收/發(fā)開關(guān)轉(zhuǎn)接到通信線上,進行方向的切換,因此,會產(chǎn)生時間延遲。收/發(fā)開關(guān)實際上是由軟件控制的電子開關(guān)。圖5當計算機主機用串行接口連接顯示終端時,在半雙工方式中,輸入過程和輸出過程使用同一通路。有些計算機和顯示終端之間采用半雙工方式工作,這時,從鍵盤打入的字符在發(fā)送到主機的同時就被送到終端上顯示出來,而不是用回送的辦法,所以避免了接收過程和發(fā)送過程同時進行的情況。目前多數(shù)終端和串行接口都為半雙工方式提供了換向能力,也為全雙工方式提供了兩條獨立的引腳。在實際使用時,一般并不需要通信雙方同時既發(fā)

11、送又接收,像打印機這類的單向傳送設備,半雙工甚至單工就能勝任,也無需倒向。4、傳輸速率與傳輸距離(1)、波特率在串行通信中,用“波特率”來描述數(shù)據(jù)的傳輸速率。所謂波特率,即每秒鐘傳送的二進制位數(shù),其單位為bps(bits per second)。它是衡量串行數(shù)據(jù)速度快慢的重要指標。有時也用“位周期”來表示傳輸速率,位周期是波特率的倒數(shù)。國際上規(guī)定了一個標準波特率系列:110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、28.8Kbps、33.6Kbps、56Kbps。 例如:9600bps,指每秒傳送9600位,包含字符的數(shù)位和其它必須

12、的數(shù)位,如奇偶校驗位等。 大多數(shù)串行接口電路的接收波特率和發(fā)送波特率可以分別設置,但接收方的接收波特率必須與發(fā)送方的發(fā)送波特率相同。通信線上所傳輸?shù)淖址麛?shù)據(jù)(代碼)是逐為位傳送的,1個字符由若干位組成,因此每秒鐘所傳輸?shù)淖址麛?shù)(字符速率)和波特率是兩種概念。在串行通信中,所說的傳輸速率是指波特率,而不是指字符速率,它們兩者的關(guān)系是:假如在異步串行通信中,傳送一個字符,包括12位(其中有一個起始位,8個數(shù)據(jù)位,2個停止位),其傳輸速率是1200b/s,每秒所能傳送的字符數(shù)是1200/(1+8+1+2)=100個。圖6(2)、發(fā)送接收時鐘在串行傳輸過程中,二進制數(shù)據(jù)序列是以數(shù)字信號波形的形式出現(xiàn)的

13、,如何對這些數(shù)字波形定時發(fā)送出去或接收進來,以及如何對發(fā)收雙方之間的數(shù)據(jù)傳輸進行同步控制的問題就引出了發(fā)送接收時鐘的應用。在發(fā)送數(shù)據(jù)時,發(fā)送器在發(fā)送時鐘(下降沿)作用下將發(fā)送移位寄存器的數(shù)據(jù)按串行移位輸出;在接收數(shù)據(jù)時,接收器在接收時鐘(上升沿)作用下對來自通信線上串行數(shù)據(jù),按位串行移入移位寄存器??梢姡l(fā)送接收時鐘是對數(shù)字波形的每一位進行移位操作,因此,從這個意義上來講,發(fā)送接收時鐘又可叫做移位始終脈沖。另外,從數(shù)據(jù)傳輸過程中,收方進行同步檢測的角度來看,接收時鐘成為收方保證正確接收數(shù)據(jù)的重要工具。為此,接收器采用比波特率更高頻率的時鐘來提高定位采樣的分辨能力和抗干擾能力。(3)、波特率因子

14、在波特率指定后,輸入移位寄存器/輸出移位寄存器在接收時鐘/發(fā)送時鐘控制下,按指定的波特率速度進行移位。一般幾個時鐘脈沖移位一次。要求:接收時鐘/發(fā)送時鐘是波特率的16、32或64倍。波特率因子就是發(fā)送接收1個數(shù)據(jù)(1個數(shù)據(jù)位)所需要的時鐘脈沖個數(shù),其單位是個位。如波特率因子為16,則16個時鐘脈沖移位1次。 例:波特率=9600bps,波特率因子=32,則 接收時鐘和發(fā)送時鐘頻率=9600×32=297200Hz。(4)、傳輸距離串行通信中,數(shù)據(jù)位信號流在信號線上傳輸時,要引起畸變,畸變的大小與以下因素有關(guān):波特率信號線的特征(頻帶范圍)傳輸距離信號的性質(zhì)及大?。娖礁叩?、電流大小)

15、當畸變較大時,接收方出現(xiàn)誤碼。在規(guī)定的誤碼率下,當波特率、信號線、信號的性質(zhì)及大小一定時,串行通信的傳輸距離就一定。為了加大傳輸距離,必須加調(diào)制解調(diào)器。5、調(diào)制解調(diào)器(MODEM)計算機的通信是要求傳送數(shù)字信號,而在進行遠程數(shù)據(jù)通信時,通信線路往往是借用現(xiàn)存的公用電話網(wǎng),但是,電話網(wǎng)是為3003400HZ 之間的音頻信號設計的,這對二進制數(shù)據(jù)的傳輸不適合。為此,在發(fā)送時,需要將二進制信號調(diào)制成相應的音頻信號,以適合在電話網(wǎng)上傳輸。在接收后時,需要對音頻信號進行調(diào)解還原成數(shù)字信號。因此,在發(fā)送端使用調(diào)制器(Modulator)把數(shù)字信號轉(zhuǎn)換為模擬信號,(該模擬信號攜帶了數(shù)據(jù)信號,稱為載波信號),

16、模擬信號經(jīng)通信線傳送到接收方,接收方再以解調(diào)器(Demodulator),把模擬信號變?yōu)閿?shù)字信號。大多數(shù)情況下,調(diào)制器和解調(diào)器合在一個裝置中,稱為“調(diào)制解調(diào)器”Modem。在通信中,Modem起著傳輸信號的作用,是一種數(shù)據(jù)通信設備(Data Communication equipment),簡稱DCE或稱數(shù)傳機(Dataset),接收設備和發(fā)送設備稱為數(shù)據(jù)終端設備(data terminal equipment),簡稱DTE。加入Modem后,通信系統(tǒng)的結(jié)構(gòu)如圖7所示圖7調(diào)制信號的方法有:把采用調(diào)頻方式的稱為FSK對應頻移鍵控FSK類型的MODEM;把采用調(diào)相方式的稱為PSK對應相移鍵控PSK

17、類型的MODEM;把采用調(diào)幅方式的稱為ASK對應振幅鍵控ASK類型的MODEM。當波特率小于300時,一般采用頻移控鍵(FSK)調(diào)制方式,或者稱為兩態(tài)調(diào)頻。它的基本原理是把“0”和“1”的兩種數(shù)字信號分別調(diào)制成不同頻率的兩個音頻信號。其原理圖如圖8所示。圖8兩個不同頻率的模擬信號f1和f2 ,分別經(jīng)過電子開關(guān)S1、S2送到運算放大器A的輸入端相加點。電子開關(guān)的通斷由外部控制,并且當加高電平時,接通;加低電平時,斷開。利用被傳輸?shù)臄?shù)字信號(即數(shù)據(jù))去控制開關(guān)。當數(shù)字信號為“1”時,使電子開關(guān)S1接通,送出一串頻率較高的模擬信號f1;當數(shù)字信號為“0”時,使電子開關(guān)S2接通,送出一串頻率較低的模擬

18、信號f2。于是這兩個不同頻率的信號經(jīng)運算放大器相加后,在運算放大器的輸出端,就得到了調(diào)制后的兩種頻率的音頻信號。6、串口通訊異步通信方式串行通信可以分為兩種類型:同步通信、異步通信。(1)、異步通信的特點及信息幀格式:以起止式異步協(xié)議為例,下圖顯示的是起止式一幀數(shù)據(jù)的格式:圖9起止式異步通信的特點是:一個字符一個字符地傳輸,每個字符一位一位地傳輸,并且傳輸一個字符時,總是以“起始位”開始,以“停止位”結(jié)束,字符之間沒有固定的時間間隔要求。每一個字符的前面都有一位起始位(低電平,邏輯值),字符本身由5-7位數(shù)據(jù)位組成,接著字符后面是一位校驗位(也可以沒有校驗位),最后是一位或一位半或二位停止位,

19、停止位后面是不定長的空閑位。停止位和空閑位都規(guī)定為高電平(邏輯值),這樣就保證起始位開始處一定有一個下跳沿。從圖中可看出,這種格式是靠起始位和停止位來實現(xiàn)字符的界定或同步的,故稱為起止式協(xié)議。異步通信可以采用正邏輯或負邏輯,正負邏輯的表示如下表所示: 邏輯0邏輯1正邏輯低電平高電平負邏輯高電平低電平異步通信的信息格式如下邊的表所示:起始位邏輯01位數(shù)據(jù)位邏輯0或15位、6位、7位、8位校驗位邏輯0或11位或無停止位邏輯11位,1.5位或2位空閑位邏輯1任意數(shù)量例:傳送8位數(shù)據(jù)45H(0100,0101B),奇校驗,1個停止位,則信號線上的波形象圖10所示那樣:異步通信的速率:若960

20、0bps,每字符8位,1起始,1停止,無奇偶,則實際每字符傳送10位,則960字符/秒。圖10(2)、異步通信的接收過程接收端以“接收時鐘”和“波特率因子”決定一位的時間長度。下面以波特率因子等于16(接收時鐘每16個時鐘周期,使接收移位寄存器移位一次)、正邏輯為例說明,如圖11所示。圖11、開始通信時,信號線為空閑(邏輯1),當檢測到由1到0的跳變時,開始對“接收時鐘”計數(shù)。、當計到8個時鐘時,對輸入信號進行檢測,若仍為低電平,則確認這是“起始位”B,而不是干擾信號。、接收端檢測到起始位后,隔16個接收時鐘,對輸入信號檢測一次,把對應的值作為D0位數(shù)據(jù)。若為邏輯1, 作為數(shù)據(jù)位1;若為邏輯0

21、,作為數(shù)據(jù)位0。、再隔16個接收時鐘,對輸入信號檢測一次,把對應的值作為D1位數(shù)據(jù)。.,直到全部數(shù)據(jù)位都輸入。、檢測校驗位P(如果有的話)。、接收到規(guī)定的數(shù)據(jù)位個數(shù)和校驗位后,通信接口電路希望收到停止位S(邏輯1),若此時未收到邏輯1,說明出現(xiàn)了錯誤,在狀態(tài)寄存器中置“幀錯誤”標志。若沒有錯誤,對全部數(shù)據(jù)位進行奇偶校驗,無校驗錯時,把數(shù)據(jù)位從移位寄存器中送數(shù)據(jù)輸入寄存器。若校驗錯,在狀態(tài)寄存器中置奇偶錯標志。、本幀信息全部接收完,把線路上出現(xiàn)的高電平作為空閑位。、當信號再次變?yōu)榈蜁r,開始進入下一幀的檢測。(3)異步通信的發(fā)送過程發(fā)送端以“發(fā)送時鐘”和“波特率因子”決定一位的時間長度。、當初始化

22、后,或者沒有信息需要發(fā)送時,發(fā)送端輸出邏輯1,即空閑位,空閑位可以有任意數(shù)量。、當需要發(fā)送時,發(fā)送端首先輸出邏輯0,作為起始位。、接著,發(fā)送端首先發(fā)送D0位,直到各數(shù)據(jù)位發(fā)送完。、如果需要的話,發(fā)送端輸出校驗位。、最后,發(fā)送端輸出停止位(邏輯1)。、如果沒有信息需要發(fā)送時,發(fā)送端輸出邏輯1,即空閑位,空閑位可以有任意數(shù)量。如果還有信息需要發(fā)送,轉(zhuǎn)入第步。對于以上發(fā)送、接收過程應注意以下幾點:、接收端總是在每個字符的頭部(即起始位)進行一次重新定位,因此發(fā)送端可以在字符之間插入不等長的空閑位,不影響接收端的接收。、發(fā)送端的發(fā)送時鐘和接收端的接收時鐘,其頻率允許有一定差異,當頻率差異在一定范圍內(nèi),

23、不會引起接收端檢測錯位,能夠正確接收。并且這種頻率差異不會因多個字符的連續(xù)接收而造成誤差累計(因為每個字符的開始(起始位處)接收方均重新定位)。只有當發(fā)送時鐘和接收時鐘頻率差異太大,引起接收端采樣錯位,才造成接收錯誤。、起始位、校驗位、停止位、空閑位的信號,由“發(fā)送移位寄存器”自動插入。在接收方,“接收移位寄存器”接收到一幀完整信息(起始、數(shù)據(jù)、校驗、停止)后,僅把數(shù)據(jù)的各位送至“數(shù)據(jù)輸入寄存器”,即CPU從“數(shù)據(jù)輸入寄存器”中讀得的信息,只是有效數(shù)字,不包含起始位、校驗位、停止位信息。7、串口通訊同步通信方式(1)、同步通信方式的特點:采用同步通信時,將許多字符組成一個信息組,這樣,字符可以

24、一個接一個地傳輸,但是,在每組信息(通常稱為幀)的開始要加上同步字符,在沒有信息要傳輸時,要填上空字符,因為同步傳輸不允許有間隙。在同步傳輸過程中,一個字符可以對應58位。當然,對同一個傳輸過程,所有字符對應同樣的數(shù)位,比如說n位。這樣,傳輸時,按每n位劃分為一個時間片,發(fā)送端在一個時間片中發(fā)送一個字符,接收端則在一個時間片中接收一個字符。同步傳輸時,一個信息幀中包含許多字符,每個信息幀用同步字符作為開始,一般將同步字符和空字符用同一個代碼。在整個系統(tǒng)中,由一個統(tǒng)一的時鐘控制發(fā)送端的發(fā)送和空字符用同一個代碼。接收端當然是應該能識別同步字符的,當檢測到有一串數(shù)位和同步字符相匹配時,就認為開始一個

25、信息幀,于是,把此后的數(shù)位作為實際傳輸信息來處理。(2)、面向字符的同步協(xié)議(IBM的BSC協(xié)議)圖12該協(xié)議規(guī)定了10個特殊字符(稱為控制字符)作為信息傳輸?shù)臉酥尽F涓袷綖椋篠YNSOH標題STX數(shù)據(jù)塊ETB/ETX塊校驗SYN:同步字符(Synchronous character),每幀可加1個(單同步)或2個(雙同步)同步字符。SOH:標題開始(Start of Header)。標題:Header,包含源地址(發(fā)送方地址)、目的地址(接收方地址)、路由指示。STX:正文開始(Start of Text)。數(shù)據(jù)塊:正文(Text),由多個字符組成。ETB:塊傳輸結(jié)束(end of tran

26、smission block), 標識本數(shù)據(jù)塊結(jié)束。ETX:全文結(jié)束(end of text),(全文分為若干塊傳輸)。塊校驗:對從SOH開始,直到ETB/ETX字段的檢驗碼。(3)、面向bit的同步協(xié)議(ISO的HDLC)圖13一幀信息可以是任意位,用位組合標識幀的開始和結(jié)束。 幀格式為:F場A場C場I場FC場F場F場:標志場;作為一幀的開始和結(jié)束,標志字符為8位,01111110。A場:地址場,規(guī)定接收方地址,可為8的整倍位。接收方檢查每個地址字節(jié)的第1位,如果為“0”,則后邊跟著另一個地址字節(jié)。若為“1”,則該字節(jié)為最后一個地址字節(jié)。C場:控制場。指示信息場的類型,8位或16位。若第1字

27、節(jié)的第1位為0,則還有第2個字節(jié)也是控制場。I場:信息場。要傳送的數(shù)據(jù)。FC場:幀校驗場。16位循環(huán)冗余校驗碼CRC。除F場和自動插入的“0”位外,均參加CRC計算。(4)、同步通信的“0位插入和刪除技術(shù)”在同步通信中,一幀信息以一個(或幾個)特殊字符開始,例如,F(xiàn)場=01111110B。但在信息幀的其他位置,完全可能出現(xiàn)這些特殊字符,為了避免接收方把這些特殊字符誤認為幀的開始,發(fā)送方采用了“0位插入技術(shù)”,相應地,接收方采用“0位刪除技術(shù)”。發(fā)送方的0位插入:除了起始字符外,當連續(xù)出現(xiàn)5個1時,發(fā)送方自動插入一個0。使得在整個信息幀中,只有起始字符含有連續(xù)的6個1。接收方的“0位刪除技術(shù)”:

28、接收方收到連續(xù)6個1,作為幀的起始,把連續(xù)出現(xiàn)5個1后的0自動刪除。(5)、同步通信的“字節(jié)填充技術(shù)”設需要傳送的原始信息幀為:SOTDATAEOT字節(jié)填充技術(shù)采用字符替換方式,使信息幀的DATA中不出現(xiàn)起始字符SOT和結(jié)束字符EOT。設按下表方式進行替換:DATA中的原字符替換為SOTESC XEOTESC YESCESC Z其中,ESC=1AH,X、Y、Z可指定為任意字符(除SOT、EOT、ESC外)。發(fā)送方按約定方式對需要發(fā)送的原始幀進行替換,并把替換后的新的幀發(fā)送給接收方。例如圖所示:圖14接收方按約定方式進行相反替換,可以獲得原始幀信息。(6)、異步通信和同步通信的比較、異步通信簡單

29、,雙方時鐘可允許一定誤差。同步通信較復雜,雙方時鐘的允許誤差較小。、異步通信只適用于點<-> 點,同步通信可用于點<-> 多。、通信效率:異步通信低,同步通信高。8、串行接口的物理層標準通用的串行IO接口有許多種,現(xiàn)僅就最常見的兩種標準作簡單介紹。(1)EIA RS232C這是美國電子工業(yè)協(xié)會推薦的一種標準(Electronic industries Association Recoil-mended Standard)。它在一種25針接插件(DB25)上定義了串行通信的有關(guān)信號。這個標準后來被世界各國所接受并使用到計算機的IO接口中。信號連線在實際異步串行通信中,并不

30、要求用全部的RS232C信號,許多PCXT兼容機僅用15針接插件(DB15)來引出其異步串行IO信號,而PC中更是大量采用9針接插件(DB9)來擔當此任,因此這里也不打算就 RS232C 的全部信號作詳細解釋。圖2 給出兩臺微機利用RS232C接口通信的聯(lián)線(無MODEM),我們按DB25的引腳號標注各個信號。 下面對圖2中幾個主要信號作簡要說明。圖15保護地 通信線兩端所接設備的金屬外殼通過此線相聯(lián)。當通信電纜使用屏蔽線時,常利用其外皮金屬屏蔽網(wǎng)來實現(xiàn)。由于各設備往往已通過電源線接通保護地,因此,通信線中不必重復接此地線(圖中用虛線表示)。例如使用9針插頭(DB9)的異步串行IO接口就沒有引

31、出保護地信號。 TXDRXD 是一對數(shù)據(jù)線,TXD 稱發(fā)送數(shù)據(jù)輸出,RXD 稱接收數(shù)據(jù)輸入。當兩臺微機以全雙工方式直接通信(無MODEM方式)時,雙方的這兩根線應交叉聯(lián)接(扭接)。信號地 所有的信號都要通過信號地線構(gòu)成耦合回路。通信線有以上三條(TXD、RXD 和信號地)就能工作了。其余信號主要用于雙方設備通信過程中的聯(lián)絡(握手信號),而且有些信號僅用于和MODEM的聯(lián)絡。若采取微型機對微型機直接通信,且雙方可直接對異步串行通信電路芯片編程,若設置成不要任何聯(lián)絡信號,則其它線都可不接。有時在通信線的同一端將相關(guān)信號短接以“自握手”方式滿足聯(lián)絡要求。這就是如圖2(a)所示的情況。RTSCTS 請

32、求發(fā)送信號RTS是發(fā)送器輸出的準備好信號。接收方準備好后送回清除發(fā)送信號CTS后,發(fā)送數(shù)據(jù)開始進行,在同一端將這兩個信號短接就意味著只要發(fā)送器準備好即可發(fā)送。DCD 載波檢測(又稱接收線路信號檢測)。本意是MODEM檢測到線路中的載波信號后,通知終端準備接收數(shù)據(jù)的信號,在沒有接MODEM的情況下,也可以和RTS、CTS短接。相對于MODEM而言,微型機和終端機一樣被稱為數(shù)據(jù)終端DTE(Data Terminal Equipment)而MODEM被稱為數(shù)據(jù)通信裝置DCE(Data Communications Equipment),DTE和DCE之間的連接不能像圖2中有“扭接”現(xiàn)象,而應該是按接

33、插件芯號,同名端對應相接。此處介紹的RS232C的信號名稱及信號流向都是對DTE而言的。DTRDSR 數(shù)據(jù)終端準備好時發(fā)DTR信號,在收到數(shù)據(jù)通信裝置裝備好DSR信號后,方可通信。圖3-2(a)中將這一對信號以“自握手”方式短接。R1 原意是在MODEM接收到電話交換機有效的撥號時,使RI有效,通知數(shù)據(jù)終端準備傳送。在無MODEM時也可和DTR相接。圖15(b)給出了無MODEM情況下,DTE對DTE異步串行通信線路的完整連接,它不僅適用于微型機和微型機之間的通信,還適用于微型機和異步串行外部設備(如終端機、繪圖儀、數(shù)字化儀等)的連接。信號電平規(guī)定RS232C規(guī)定了雙極性的信號邏輯電平: -3

34、V到-25V之間的電平表示邏輯“1”。 +3V到+25V之間的電平表示邏輯“0”。 因此這是一套負邏輯定義。 以上標準稱為EIA電平。PCXT系列使用的信號電平是-12V和+12V,符合EIA標準,但在計算機內(nèi)部流動的信號都是TTL電平,因此這中間需要用電平轉(zhuǎn)換電路。常用芯片MCl488或SN75150將TTL電平轉(zhuǎn)換為EIA電平,MCl489或SN75154將EIA電平轉(zhuǎn)換為TTL電平。PCXT系列以這種方式進行串行通信時,在波特率不高于9600的情況下,理論上通信線的長度限制紐為15米。(2)20mA電流環(huán)20mA電流環(huán)并沒有形成一套完整的標準,主要是將數(shù)字信號的表示方法不使用電子的高低,

35、而改用20mA電流的有無:“1”信號在環(huán)路中產(chǎn)生20mA電流;“0”信號無電流產(chǎn)生。當然也需要有電路來實現(xiàn)TTL電平和20mA電流之間的轉(zhuǎn)換。圖3是PCXT微機中使用的一種20mA電流環(huán)接口。當發(fā)送方SOUT1時,便有20mA電流灌入接收方的光耦合器,于是光耦合器導通,使SIN1。反之當發(fā)送方SOUT0時環(huán)路電流為零,接收方光耦合器截止,SIN0。顯然,當要求雙工方式通信時,雙方都應各有收發(fā)電路,通信聯(lián)線至少要4根。由于通信雙方利用光耦合器實現(xiàn)電氣上隔離,而且信號又是雙端回路方式,故有很強的抗干擾性,可以傳送遠至1千米的距離。圖16“0”、“1”信號的表示方法不同外,其他方面(如字符的傳輸格式

36、)常借用 RS232C 標準。因此 PCXT 微機中的異步串行信道接口往往將這兩種標準做在一起,實際通過跨接線從二者中擇一使用。 9、ARM自帶的串行口寄存器ARM自帶三個UART端口,每個UART通道都有16字節(jié)的FIFO(先入先出寄存器)用于接受和發(fā)送。用系統(tǒng)時鐘最大波特率可達 230.4K,如果用外部時鐘(UCLK)UART 可以以更高的波特率運行。S3C2410X UART包括可編程波特率,紅外發(fā)送/接收,插入一個或兩個停止位,5字節(jié),6字節(jié),7字節(jié),或8字節(jié)數(shù)據(jù)寬度和奇偶校驗。其特點是: -基于DMA或者中斷操作的RxD0,TxD0,RxD1,TxD1,RxD2,TxD2。 -包括I

37、rDA 1.0和16字節(jié)FIFO的UART通道0,1,2。 -包括nRTS0,nCTS0,nRTS1和nCTS1的UART通道。 -支持握手方式的接收/發(fā)送。與UART有關(guān)的寄存器主要有以下幾個:(1)、UART線控制寄存器包括ULCON0,ULCON1和ULCON2,主要用來選擇每幀數(shù)據(jù)位數(shù)、停止位數(shù),奇偶校驗模式及是否使用紅外模式,如表1,2所示。表1 UART寄存器設置表2 UART寄存器位描述(2)、UART控制寄存器包括UCON0, UCON1 and UCON2,主要用來選擇時鐘,接收和發(fā)送中斷類型(即電平還是脈沖觸發(fā)類型),接收超時使能,接收錯誤狀態(tài)中斷使能,回環(huán)模式,發(fā)送接收模

38、式等。如表3, 4所示表3 UART控制寄存器設置表4 UART控制寄存器位描述(3)、UART錯誤狀態(tài)寄存器包括UERSTAT0, UERSTAT1 and UERSTAT2,此狀態(tài)寄存器的相關(guān)位表明是否有幀錯誤或溢出錯誤發(fā)生。如表5,6所示表5 UART錯誤狀態(tài)寄存器設置表6 UART錯誤狀態(tài)寄存器位描述注意:在讀取UART錯誤狀態(tài)寄存器時,這些位(UERSATn3:0)會自動清零。(4)在UART模塊中有三個接收/發(fā)送狀態(tài)寄存器,包括UTRSTAT0,UTRSTAT1和UTRSTAT2。如表7, 8所示:表7 UART接收/發(fā)送寄存器設置表8 UART接收/發(fā)送寄存器位描述(5)在UAR

39、T模塊中有3個UART發(fā)送緩沖寄存器,包括UTXH0,UTXH1和UTXH2,UTXHn有8位發(fā)送數(shù)據(jù)。如下表9:表9 UART發(fā)送緩沖寄存器其功能如下表10所示:表10 UART發(fā)送緩沖寄存器功能注意:(L):小端模式,(B):大端模式(6)在UART模塊中有3個UART接收緩沖寄存器,包括URXH0,URXH1和URXH2,URXHn有8位接收數(shù)據(jù)。如表11:表11 UART接收緩沖寄存器其功能如下表12所示:表12 UART接收緩沖寄存器功能注意:當發(fā)生溢出錯誤時,必須讀URXHn。否則,即使UERSTATn的溢出位已經(jīng)清零,下個已接收數(shù)據(jù)也會產(chǎn)生溢出錯誤。(7)UART波特率因子寄存器

40、:表13 UART波特率因子寄存器設置表14 UART波特率因子寄存器功能UART包括三個波特率因子寄存器UBRDIV0, UBRDIV1 and UBRDIV2,存儲在波特率因子寄存器(UBRDIVn)中的值決定串口發(fā)送和接收的時鐘數(shù)率(波特率),計算公式如下:UBRDIVn = (int)(PCLK / (bps x 16) ) 1或UBRDIVn = (int)(UCLK / (bps x 16) ) 1例如:如果波特率是115200,PCLK or或UCLK 是40 MHz,那么UBRDIVn :UBRDIVn = (int)(40000000 / (115200 x 16) ) -1

41、= (int)(21.7) -1= 21 -1 = 20六、 試驗步驟本次實驗安排4節(jié)課,任務很繁重。1、 將工程“Exp1 ARM串口實驗”打開,分別觀察工程的目標設置:Debug Setting ; Release Setting。(目的是讓大家進一步熟悉ARM開發(fā)環(huán)境ADS1.2的使用,大家在看相關(guān)參數(shù)設置的時候,請閱讀在線幫助文檔,就明白相應參數(shù)的意義了,這是一個艱苦的過程,這些在線幫助文檔經(jīng)???,不但增進ARM開發(fā)知識,還提高英語)2、 對工程進行編譯,然后下載到目標機(嵌入式系統(tǒng)開發(fā)的特點就是交叉調(diào)試,我們的PC機是宿主機,開發(fā)箱里面的板子就是目標機)上運行。注意:這個過程需要我們

42、前面實驗的知識,如燒寫B(tài)ootloader程序vivi;超級終端的建立(如果已經(jīng)建立就不用建立了)。程序運行的時候,敲一下鍵盤,就會在超級終端上顯示你輸入的字符,這個字符是怎么傳送的?分析一下)3、 在工程中打開工程文件,看這個工程是怎么實現(xiàn)的。了解一個ARM運用程序的基本框架。4、 看傳的文檔“um_s3c2410s_rev12_030428”和“ARM芯片S3C2410關(guān)于UART的文檔”,結(jié)合程序代碼的分析,了解串口通訊程序是如何實現(xiàn)的。5、 安裝UArmJtag2.0程序(具體如何安裝請看UArmJtag使用指南,該文檔中的“ARM flash下載程序的使用”不要作,“SDT 2.51

43、的設置”也不要作),嘗試進行仿真調(diào)試。七、 串口程序代碼分析1、系統(tǒng)啟動程序所執(zhí)行的操作跟具體的目標系統(tǒng)和開發(fā)系統(tǒng)相關(guān),一般通用的內(nèi)容包括:􀂋 中斷向量表􀂋 初始化存儲器系統(tǒng)􀂋 初始化堆棧􀂋 初始化有特殊要求的端口、設備􀂋 初始化應用程序執(zhí)行環(huán)境􀂋 改變處理器模式􀂋 呼叫主應用程序串口實驗完成這一任務的是startup.s 程序:GET 2410addr.s; Some ARM920CPSR bit descriptions;Pre-defined constants

44、;這部分在預定義一些常量USERMODE EQU0x10FIQMODE EQU0x11IRQMODE EQU0x12SVCMODE EQU0x13ABORTMODE EQU0x17UNDEFMODE EQU0x1bMODEMASK EQU0x1fNOINT EQU0xc0I_Bit*0x80F_Bit*0x40; MMURegister description;p15CP15;c0CN0;c1CN1;c2CN2;c3CN3CtrlMMU*1CtrlAlign*2CtrlCache*4CtrlWBuff*8CtrlBigEnd*128CtrlSystem*256CtrlROM*512;initi

45、alizationL0 is MMU FULL_ACCESS, DOMAIN, SECTIONTLB_L0_INIT*0x0C02; 整個初始化程序從這里開始,設置中斷向量表,ARM要求中斷向量表必須放置在從0地址開始,連續(xù)8×4字節(jié)的空間內(nèi)。;AREAInit,CODE,READONLYIMPORT _use_no_semihosting_swiIMPORTEnter_UNDEFIMPORTEnter_SWIIMPORTEnter_PABORTIMPORTEnter_DABORTIMPORTEnter_FIQENTRY ; ENTRY是指定編譯器保留這段代碼bColdReset;復

46、位bEnter_UNDEF;未定義指令bEnter_SWI;軟件中斷bEnter_PABORT;指令預取中止bEnter_DABORT;數(shù)據(jù)中止b.;保留bIRQ_Handler;中斷請求處理bEnter_FIQ;快中斷請求處理;處理正常的中斷請求EXPORTIRQ_HandlerIRQ_HandlerIMPORTISR_IrqHandlerSTMFDsp!, r0-r12, lrBLISR_IrqHandlerLDMFDsp!, r0-r12, lrSUBSpc, lr,#4;=; ENTRY ;=;處理負責操作EXPORT ColdResetColdResetldrr0,=WTCON;關(guān)閉

47、看門狗 ldrr1,=0x0strr1,r0ldrr0,=INTMSKldrr1,=0xffffffff;禁止所有中斷strr1,r0ldrr0,=INTSUBMSKldrr1,=0x7ff;禁止所有的子中斷strr1,r0;*;*堆棧的初始化 * ;*blInitStacks; 為每一種模式初始化堆棧;把異常處理向量表復制到SRAM中的0x00處;IMPORT|Load$EXCEPTION_EXEC$Base|IMPORT|Image$EXCEPTION_EXEC$Base|IMPORT|Image$EXCEPTION_EXEC$Length|ldrr0,=|Load$EXCEPTION_E

48、XEC$Base|;源數(shù)據(jù)ldrr1,=|Image$EXCEPTION_EXEC$Base|;在0x00處放置異常向量表ldrr2,=|Image$EXCEPTION_EXEC$Length|exception_cploopsubr2,r2,#4ldmiar0!,r3stmiar1!,r3cmpr2, #0bge exception_cploop; 用C語言寫主要的功能; ;IMPORT _mainBL_main ;不能用main();呼叫主應用程序B.;*;*初始化堆棧;* 因為ARM 處理器有7 種執(zhí)行狀態(tài),每一種狀態(tài)的堆棧指針寄存器(SP)都是獨立的(System 和User 模式使用

49、相同的SP 寄存器)。因此對程序中需要用到的每一種模式都要給SP 寄存器定義一個堆棧地址。方法是改變狀態(tài)寄存器CPSR 內(nèi)的狀態(tài)位,使處理器切換到不同的狀態(tài),然后給SP 賦值。注意不要切換到User模式進行User模式的堆棧設置,因為進入User模式后就不能再操作CPSR回到別的模式了??赡軙酉氯サ某绦驁?zhí)行造成影響。一般堆棧的大小要根據(jù)需要而定,但是要盡可能給堆棧分配快速和高帶寬的存儲器。堆棧性能的提高對系統(tǒng)整體性能的影響是非常明顯的。;*IMPORT UserStackIMPORT SVCStackIMPORT UndefStackIMPORT IRQStackIMPORT AbortS

50、tackIMPORT FIQStackInitStacks;不要用 DRAM,;SVCstack之前已經(jīng)被初始化mrsr0,cpsrbicr0,r0,#MODEMASKorrr1,r0,#UNDEFMODE|NOINTmsrcpsr_cxsf,r1;未定義模式ldrsp,=UndefStackorrr1,r0,#ABORTMODE|NOINTmsrcpsr_cxsf,r1;中止模式ldrsp,=AbortStackorrr1,r0,#IRQMODE|NOINTmsrcpsr_cxsf,r1;中斷模式ldrsp,=IRQStackorrr1,r0,#FIQMODE|NOINTmsrcpsr_cx

51、sf,r1;快中斷模式ldrsp,=FIQStack;bicr0,r0,#MODEMASK|NOINTorrr1,r0,#SVCMODE|NOINTmsrcpsr_cxsf,r1;SVC模式ldrsp,=SVCStack;用戶模式?jīng)]有被初始化movpc,lr ;在模式轉(zhuǎn)換時,LR寄存器可能無效。; End of Startup.c;END; 其??臻g在匯編的時候就分好了,如下stack.s所示: AREA Stacks, DATA, NOINIT EXPORT UserStack EXPORT SVCStack EXPORT UndefStack EXPORT IRQStack EXPORT AbortStack EXPORT FIQStackSPACE4096UserStackSPACE4096SVCStackSPACE4096UndefStackSPACE4096AbortStackSPACE4096IRQStackSPACE4096FIQStackSPACE4096 END下面分析主程序:Release main.c/主邏輯函數(shù)/#include"./ucos-ii/includes.h" /* uC/OS interface */#include ".

溫馨提示

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

評論

0/150

提交評論