ARM匯編語言程序設(shè)計基礎(chǔ)第6章嵌入式系統(tǒng)總線接口
《ARM匯編語言程序設(shè)計基礎(chǔ)第6章嵌入式系統(tǒng)總線接口》由會員分享,可在線閱讀,更多相關(guān)《ARM匯編語言程序設(shè)計基礎(chǔ)第6章嵌入式系統(tǒng)總線接口(180頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第 6章 嵌入式系統(tǒng)總線接口 6.1 串行接口 6.1.1 串行接口基本原理與結(jié)構(gòu) 1串行通信概述 常用的數(shù)據(jù)通信方式有并行通信和串行通信兩種。當兩臺數(shù)字設(shè) 備之間傳輸距離較遠時,數(shù)據(jù)往往以串行方式傳輸。串行通信的 數(shù)據(jù)是一位一位地進行傳輸?shù)?,在傳輸中每一位?shù)據(jù)都占據(jù)一個 固定的時間長度。與并行通信相比,如果 n位并行接口傳送 n位數(shù) 據(jù)需時間 T,則串行傳送的時間最少為 nT。串行通信具有傳輸線 少、成本低等優(yōu)點,特別適合遠距離傳送。 串行數(shù)據(jù)通信模式 串行數(shù)據(jù)通信模式有單工通信、半雙工通信和全雙工通信 3種基 本的通信模式。 單工通信:數(shù)據(jù)僅能從設(shè)備 A到設(shè)備 B進行單一方向的傳輸。 半雙
2、工通信:數(shù)據(jù)可以從設(shè)備 A到設(shè)備 B進行傳輸,也可以從 設(shè)備 B到設(shè)備 A進行傳輸,但不能在同一時刻進行雙向傳輸。 全雙工通信:數(shù)據(jù)可以在同一時刻從設(shè)備 A傳輸?shù)皆O(shè)備 B,或 從設(shè)備 B傳輸?shù)皆O(shè)備 A,即可以同時雙向傳輸。 串行通信方式 串行通信在信息格式的約定上可以分為同步通信和異步通信兩種 方式。 a. 異步通信方式 異步通信時數(shù)據(jù)是一幀一幀傳送的,每幀數(shù)據(jù)包含有起始位 ( ” 0)、數(shù)據(jù)位、奇偶校驗位和停止位( ” 1) ,每幀數(shù)據(jù)的 傳送靠起始位來同步。一幀數(shù)據(jù)的各位代碼間的時間間隔是固定 的,而相鄰兩幀的數(shù)據(jù)其時間間隔是不固定的。在異步通信的數(shù) 據(jù)傳送中,傳輸線上允許空字符。 異步通
3、信對字符的格式、波特率、校驗位有確定的要求。 字符的格式 每個字符傳送時,必須前面加一起始位,后面加上 1、 1.5或 2位停 止位。例如 ASCII碼傳送時,一幀數(shù)據(jù)的組成是:前面 1個起始位, 接著 7位 ASCII編碼,再接著一位奇偶校驗位,最后一位停止位, 共 10位。 波特率 傳送數(shù)據(jù)位的速率稱為波特率,用位秒( bit/s)來表示,稱之 為波特。例如,數(shù)據(jù)傳送的速率為 120字符秒,每幀包括 10個 數(shù)據(jù)位,則傳送波特率為: 10 120=1200b/s=1200波特 每一位的傳送時間是波特的倒數(shù),如 1/1200=0.833ms。異步通 信的波特率的數(shù)值通常為: 150、 300
4、、 600、 1200、 2400、 4800、 9600、 14400、 28800等,數(shù)值成倍數(shù)變化。 校驗位 在一個有 8位的字節(jié)( byte)中,其中必有奇數(shù)個或偶數(shù)個的 “ 1 狀態(tài)位。對于偶校驗就是要使字符加上校驗位有偶數(shù)個 “ 1;奇 校驗就是要使字符加上校驗位有奇數(shù)個 “ 1。例如數(shù)據(jù) “ 00010011,共有奇數(shù)個 “ 1,所以當接收器要接收偶數(shù)個 “ 1 時(即偶校驗時),則校驗位就置為 “ 1,反之,接收器要接收 奇數(shù)個 “ 1時(即奇校驗時),則校驗位就置為 “ 0。 一般校驗位的產(chǎn)生和檢查是由串行通信控制器內(nèi)部自動產(chǎn)生,除 了加上校驗位以外,通信控制器還自動加上停止
5、位,用來指明欲 傳送字符的結(jié)束。停止位通常取 1、 1.5或 2個位。對接收器而言, 若未能檢測到停止位則意味著傳送過程發(fā)生了錯誤。 在異步通信方式中,在發(fā)送的數(shù)據(jù)中含有起始位和停止位這兩個 與實際需要傳送的數(shù)據(jù)毫無相關(guān)的位。如果在傳送 1個 8位的字符 時,其校驗位、起始位和停止位都為 1個位,則相當于要傳送 11 個位信號,傳送效率只有約 80%。 ( 2)同步通信方式 為了提高通信效率可以采用同步通信方式。同步傳輸采用字符塊 的方式,減少每一個字符的控制和錯誤檢測數(shù)據(jù)位,因而可以具 有較高的傳輸速率。 與異步方式不同的是,同步通信方式不僅在字符的本身之間是同 步的,而且在字符與字符之間的
6、時序仍然是同步的,即同步方式 是將許多的字符聚集成一字符塊后,在每塊信息(常常稱之為信 息幀)之前要加上 1 2個同步字符,字符塊之后再加入適當?shù)腻e 誤檢測數(shù)據(jù)才傳送出去。在同步通信時必須連續(xù)傳輸,不允許有 間隙,在傳輸線上沒有字符傳輸時,要發(fā)送專用的 ” 空閑 ” 字符 或同步字符。 在同步方式中產(chǎn)生一種所謂 “ 冗余 ” 字符,防止錯誤傳送。假設(shè) 欲傳送的數(shù)據(jù)位當作一被除數(shù),而發(fā)送器本身產(chǎn)生一固定的除數(shù), 將前者除以后者所得的余數(shù)即為該 “ 冗余 ” 字符。當數(shù)據(jù)位和 “ 冗余 ” 字符位一起被傳送到接收器時,接收器產(chǎn)生和發(fā)送器相 同的除數(shù),如此即可檢查出數(shù)據(jù)在傳送過程中是否發(fā)生了錯誤。
7、統(tǒng)計數(shù)據(jù)表明采用 ” 冗余 ” 字符方法錯誤防止率可達 99%以上。 2 RS-232C串行接口 RS-232C是美國電子工業(yè)協(xié)會 EIA制定的一種串行通信接口標準。 ( 1) RS-232C接口規(guī)格 EIA所制定的傳送電氣規(guī)格如表 6.1.1所示。 RS-232C通常以 12V的電壓來 驅(qū)動信號線, TTL標準與 RS-232C標準之間的電平轉(zhuǎn)換電路通常采用集成電 路芯片實現(xiàn),如 MAX232等。 表 6.1.1 EIA的所定的傳送電氣規(guī)格 狀態(tài) L(低電平) H(高電平) 電壓范圍 -25V -3V +3 V +25V 邏輯 1 0 名稱 SPACE MARK ( 2) RS-232C接口
8、信號 EIA制定的 RS-232C接口與外界的相連采用 25芯( DB-25)和 9芯 ( DB-9) D型插接件,實際應(yīng)用中,并不是每只引腳信號都必須 用到, 25芯和 9芯 D型插接件引腳的定義,與信號之間的對應(yīng)關(guān)系 如圖 6.1.1所示。 RS-232C DB-9各引腳功能如下: CD:載波檢測。主要用于 Modem通知計算機其處于在線狀態(tài), 即 Modem檢測到撥號音。 RXD:接收數(shù)據(jù)線。用于接收外部設(shè)備送來的數(shù)據(jù)。 TXD:發(fā)送數(shù)據(jù)線。用于將計算機的數(shù)據(jù)發(fā)送給外部設(shè)備。 DTR:數(shù)據(jù)終端就緒。當此引腳高電平時,通知 Modem可以 進行數(shù)據(jù)傳輸,計算機已經(jīng)準備好。 SG:信號地。
9、DSR:數(shù)據(jù)設(shè)備就緒。此引腳為高電平時,通知計算機 Modem已經(jīng)準備好,可以進行數(shù)據(jù)通信。 RTS請求發(fā)送。此引腳由計算機來控制,用以通知 Modem馬 上傳送數(shù)據(jù)至計算機;否則, Modem將收到的數(shù)據(jù)暫時放人緩沖 區(qū)中。 CTS清除發(fā)送。此引腳由 Modem控制,用以通知計算機將要 傳送的數(shù)據(jù)送至 Mo-dem。 RI:振鈴提示。 Modem通知計算機有呼叫進來,是否接聽呼 叫由計算機決定。 ( a) DB-25 ( b) DB-9 圖 6.1.1 25芯和 9芯 D型插接件引腳的定義和信號之間的對應(yīng)關(guān)系 ( 3) RS-232C的基本連接方式 計算機利用 RS-232C接口進行串口通信
10、,有簡單連接和完全連接 兩種連接方式。簡單連接又稱三線連接,即只連接發(fā)送數(shù)據(jù)線、 接收數(shù)據(jù)線和信號地,如圖 6.1.2所示。如果應(yīng)用中還需要使用 RS-232C的控制信號,則采用完全連接方式,如圖 6.1.3所示。在 波特率不高于 9 600 bps的情況下進行串口通信時,通信線路的長 度通常要求小于 15米,否則可能出現(xiàn)數(shù)據(jù)丟失現(xiàn)象。 圖 6.1.2 簡單連接形式 圖 6.1.3 完全連接形式 3 RS-422串行通信接口 RS-422標準是 RS-232的改進型, RS-422標準全稱是 “ 平衡電壓數(shù) 字接口電路的電氣特性 ” 。允許在相同傳輸線上連接多個接收節(jié) 點,最多可接 10個節(jié)點
11、,即一個主設(shè)備( Master),其余 10個為 從設(shè)備( Salve),從設(shè)備之間不能通信。 RS-422支持一點對多點 的雙向通信。 RS-422四線接口由于采用單獨的發(fā)送和接收通道, 因此不必控制數(shù)據(jù)方向,各裝置之間任何必需的信號交換均可以 按軟件方式( XON/XOFF握手)或硬件方式(一對單獨的雙絞線) 實現(xiàn)。 RS-422的最大傳輸距離為 4000英尺(約 1219m),最大傳輸速率 為 10Mb/s。傳輸速率與平衡雙絞線的長度有關(guān),只有在很短的距 離下才能獲得最高傳輸速率。在最大傳輸距離時,傳輸速率為 100Kb/s。一般 100m長的雙絞線上所能獲得的最大傳輸速率僅為 1 Mb
12、/s。 RS-422需要在傳輸電纜的最遠端連接一個電阻,要求電阻阻值約 等于傳輸電纜的特性阻抗。在短距離( 300m以下)傳輸時可以不 連接電阻。 4 RS-485串行總線接口 在 RS-422的基礎(chǔ)上,為擴展應(yīng)用范圍, EIA制定了 RS-485標準, 增加了多點、雙向通信能力。在通信距離為幾十米至上千米時, 通常采用 RS-485收發(fā)器。 RS-485收發(fā)器采用平衡發(fā)送和差分接收, 即在發(fā)送端,驅(qū)動器將 TTL電平信號轉(zhuǎn)換成差分信號輸出;在接 收端,接收器將差分信號變成 TTL電平,因此具有抑制共模干擾 的能力。接收器能夠檢測低達 200mV的電壓,具有高的靈敏度, 故數(shù)據(jù)傳輸距離可達千米
13、以上。 RS-485可以采用二線與四線方式,二線制可實現(xiàn)真正的多點雙向 通信。而采用四線連接時,與 RS-422一樣只能實現(xiàn)點對多的通信, 即只能有一個主設(shè)備,其余為從設(shè)備。 RS-485可以連接多達 32個 設(shè)備。 RS-485的共模輸出電壓在 -7 +12V之間,接收器最小輸入阻抗為 12k。 RS-485滿足所有 RS-422的規(guī)范,所以 RS-485的驅(qū)動器可 以在 RS-422網(wǎng)絡(luò)中應(yīng)用 RS-485的最大傳輸速率為 10Mb/s。在最大傳輸距離時,傳輸速率 為 100Kb/s。 RS-485需要兩個終端電阻,接在傳輸總線的兩端,要求電阻阻值 約等于傳輸電纜的特性阻抗。在短距離傳輸(
14、在 300m以下)時可 不需終端電阻。 6.1.2 S3C2410A的 UART 1 UART簡介 UART( Universal Asynchronous Receiver and Transmitter,通用 異步收發(fā)器)主要由數(shù)據(jù)線接口、控制邏輯、配置寄存器、波特 率發(fā)生器、發(fā)送部分和接收部分組成,采用異步串行通信方式, 采用 RS-232C 9芯接插件( DB-9)連接,是廣泛使用的串行數(shù)據(jù) 傳輸方式, UART以字符為單位進行數(shù)據(jù)傳輸,每個字符的傳輸格式如圖 6.1.4所示,包括線路空閑狀態(tài)(高電平)、起始位(低電平)、 5 8位數(shù)據(jù)位、校驗位(可選)和停止位(位數(shù)可以是 1、 1.
15、5或 2位)。這種格式通過起始位和停止位來實現(xiàn)字符的同步。 UART 內(nèi)部一般具有配置寄存器,通過該寄存器可以配置數(shù)據(jù)位數(shù) ( 5 8位)、是否有校驗位和校驗的類型以及停止位的位數(shù) ( 1位、 1.5位或 2位)等。 圖 6.1.4 UART的字符傳輸格式 2 S3C2410A的 UART結(jié)構(gòu) S3C2410A的 UART提供 3個獨立的異步串行 I/O口( SIO),它們都可以 運行于中斷模式或 DMA模式。 UART可以產(chǎn)生中斷請求或 DMA請求,以 便在 CPU和 UART之間傳輸數(shù)據(jù)。在使用系統(tǒng)時鐘的情況下, UART可以 支持最高 230.4Kbps的傳輸速率。如果外部設(shè)備通過 UE
16、XTCLK為 UART 提供時鐘,那么 UART的傳輸速率可以更高。每個 UART通道包含兩個 用于接收和發(fā)送數(shù)據(jù)的 16字節(jié)的 FIFO緩沖寄存器。 如圖 6.1.5所示, S3C2410A的 UART由波特率發(fā)生器、發(fā)送器、接 收器以及控制單元組成。波特率發(fā)生器的時鐘可以由 PCLK或 UEXTCLK提供。發(fā)送器和接收器包含 16字節(jié)的 FIFO緩沖寄存器和 數(shù)據(jù)移位器。發(fā)送時,數(shù)據(jù)被寫入 FIFO,然后拷貝到發(fā)送移位器 中,接下來數(shù)據(jù)通過發(fā)送數(shù)據(jù)引腳( TxDn)被發(fā)送。接收時,接 收到的數(shù)據(jù)從接收數(shù)據(jù)引腳( RxDn)移入,然后從移位器拷貝到 FIFO中。 圖 6.1.5 S3C241
17、0A的 UART方框圖(具有 FIFO) 3 S3C2410A UART的操作 S3C2410A的 UART的操作包含有數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、中斷產(chǎn)生、 波特率發(fā)生、回送模式、紅外模式和自動流控制等。 ( 1)數(shù)據(jù)發(fā)送( Data Transmission) 發(fā)送的數(shù)據(jù)幀是可編程的。它包括 1個起始位、 5 8個數(shù)據(jù)位、 1 個可選的奇偶校驗位和 1 2個停止位,具體設(shè)置由行控制寄存器 ( ULCONn)確定。發(fā)送器還可以產(chǎn)生暫停狀態(tài),在一幀發(fā)送期 間連續(xù)輸出 “ 0。在當前發(fā)送的字完全發(fā)送完成之后發(fā)出暫停信 號。在暫停信號發(fā)出后,繼續(xù)發(fā)送數(shù)據(jù)到 Tx FIFO(發(fā)送保持寄 存器在非 FIFO模
18、式)。 ( 2)數(shù)據(jù)接收( Data Reception) 與數(shù)據(jù)發(fā)送類似,接收的數(shù)據(jù)幀也是可編程的。它包括 1個起始 位, 5 8個數(shù)據(jù)位、 1個可選的奇偶校驗位和 1 2個停止位,具 體設(shè)置由行控制寄存器( ULCONn)確定。接收器可以檢測溢出 錯誤和幀錯誤。溢出錯誤指新數(shù)據(jù)在舊數(shù)據(jù)還沒有被讀出之前就 將其覆蓋了。幀錯誤指接收的數(shù)據(jù)沒有有效的停止位。 當在 3個字時間段沒有接收任何數(shù)據(jù)和在 FIFO模式 RxFIFO不空時, 產(chǎn)生接收暫停狀態(tài)。 ( 3)自動流控制( Auro Flow Control, AFC) 如圖 6.1.6所示, S3C2410A的 UART0和 UART1使用
19、nRTS和 nCTS信 號支持自動流控制。在這種情況下,它可以連接到外部的 UART。 如果用戶希望將 UART連接到 Modem,則需要通過軟件來禁止 UMCONn寄存器中的自動流控制位并控制 nRTS信號。 圖 6.1.6 UART AFC接口 在 AFC狀態(tài), nRTS根據(jù)接收器的狀態(tài)和 nCTS信號控制發(fā)送器的操 作。只有當 nCTS信號是有效時(在 AFC狀態(tài), nCTS表示其他 UART的 FIFO已經(jīng)準備好接收數(shù)據(jù)), UART的發(fā)送器才發(fā)送在 FIFO中的數(shù)據(jù)。在 UART接收數(shù)據(jù)之前,當其接收 FIFO具有多余 2 字節(jié)的空閑空間時, nRTS有效;如果其接收 FIFO的空閑
20、空間少于 1字節(jié),則 nRTS無效(在 AFC狀態(tài), nRTS指示它自己的接收 FIFO 已經(jīng)準備好接收數(shù)據(jù))。 ( 4) RS-232接口( RS-232C interface) 如果用戶希望將 UART連接到 Modem接口,則需要使用 nRTS、 nCTS、 nDSR、 nDTR、 DCD和 nRI信號。在這個狀態(tài),用戶可以 使用通用的 I/O接口,通過軟件來控制這些信號,因為 AFC不支持 RS-232C接口。 ( 5)中斷 DMA請求產(chǎn)生( Interrupt/DMA Request Generation) S3C2410A的每個 UART有 5個狀態(tài)( Tx/Rx/Error)信號
21、:溢出錯 誤、幀錯誤、接收緩沖數(shù)據(jù)準備好、發(fā)送緩沖空和發(fā)送移位器空。 這些狀態(tài)通過相關(guān)的狀態(tài)寄存器( UTRSTATn/UERSTATn)指示。 溢出錯誤和幀錯誤指示接收數(shù)據(jù)時發(fā)生的錯誤狀態(tài)。如果控制寄 存器 UCONn中的接收錯誤狀態(tài)中斷使能位置 1,那么溢出錯誤和 幀錯誤的任何一個都可以產(chǎn)生接收錯誤狀態(tài)中斷請求。當檢測到 接收錯誤狀態(tài)中斷請求時,可以通過讀 UERSTSTn的值來確定引 起請求的信號。 如果控制寄存器( UCONn)中的接收模式置為 “ 1(中斷請求模 式或查詢模式),那么在 FIFO模式,當接收器將接收移位器中的 數(shù)據(jù)傳送到接收 FIFO寄存器中,并且接收的數(shù)據(jù)量達到 R
22、xFIFO的 觸發(fā)水平時,則產(chǎn)生 Rx中斷。在非 FIFO模式,如果采用中斷請求 和查詢模式,當把接收移位器中的數(shù)據(jù)傳送到接收保持寄存器中 時,將產(chǎn)生 Rx中斷。 如果控制寄存器( UCONn)中的發(fā)送模式置為 1(中斷請求模式 或查詢模式),那么在 FIFO模式,當發(fā)送器將發(fā)送 FIFO寄存器中 的數(shù)據(jù)傳送到發(fā)送移位器中,并且發(fā)送 FIFO中剩余的發(fā)送數(shù)據(jù)量 達到 TxFIFO的觸發(fā)水平時,則產(chǎn)生 Tx中斷。在非 FIFO模式,如果 采用中斷請求和查詢模式,當把發(fā)送保持寄存器中的數(shù)據(jù)傳送到 發(fā)送移位器時,將產(chǎn)生 Tx中斷。 如果在控制寄存器中的接收模式和發(fā)送模式選擇了 DMAn請求模 式,那
23、么在上面提到的情況下將產(chǎn)生 DMAn請求,而不是 Rx或 Tx 中斷。 ( 6)波特率的產(chǎn)生( Baud-Rate Generation) 每個 UART的波特率發(fā)生器為發(fā)送器和接收器提供連續(xù)的時鐘。波 特率發(fā)生器的時鐘源可以選擇使用 S3C2410A的內(nèi)部系統(tǒng)時鐘或 UEXTCLK。換句話說,通過設(shè)置 UCONn的時鐘選擇位可以選擇不 同的分頻值。波特率時鐘可以通過對源時鐘( PCLK或者 UEXTCLK) 16分頻和對在 UART波特率系數(shù)寄存器( UBRDIVn)中的 16位分 頻數(shù)設(shè)置得到。 ( 7)回送模式( Loopback Mode) S3C2410A DART提供一種測試模式,
24、即回送模式,用于發(fā)現(xiàn)通信 連接中的孤立錯誤。這種模式在結(jié)構(gòu)上使 UART的 RXD與 TXD連接。 因此,在這個模式,發(fā)送的數(shù)據(jù)通過 RXD被接收器接收。這一特 性使得處理器能夠驗證每個 SIO通道內(nèi)部發(fā)送和接收數(shù)據(jù)的正確 性。該模式通過設(shè)置 UART控制寄存器( UCONn)的回送位來進 行選擇。 ( 8)紅外模式( Infra-Red ( IR) Mode) S3C2410A的 UART模塊支持紅外發(fā)送和接收,該模式可以通過設(shè) 置 UART行控制寄存器( ULCONn)中的紅外模式位來選擇。 4 S3C2410A UART專用寄存器的配置 要使用 S3C2410A的 UART進行串口通信,
25、需要在程序中配置以下 與 UART相關(guān)的專用寄存器。 ( 1) UART行控制寄存器( ULCONn) UART行控制寄存器是 UART通道 0 UART通道 2行控制寄存器,包 含有 ULCON0、 ULCON1和 ULCON2,為可讀寫寄存器,地址為 0 x5000 0000、 0 x5000 4000和 0 x5000 8000,其位功能如表 6.1.2 所列,復位值為 0 x00,推薦使用值為 0 x3。 表 6.1.2 UART行控制寄存器的位功能 ULCONn的位功能 位 設(shè)置 保留 7 保留位 紅外正常模式選擇 6 0:正常模式; 1:紅外模式 奇偶校驗?zāi)J竭x擇 5:3 0 xx
26、:無奇偶校驗; 100:奇校驗 101:偶校驗 110:強制奇偶校驗校驗 1; 111: 強制奇偶校驗校驗 0 停止位選擇 2 0:每幀 1個停止位; 1:每幀 2個停 止位 發(fā)送或者接收字長設(shè) 置 1:0 00: 5位; 01: 6位; 10: 7位; 11: 8位 ( 2) UART控制寄存器( UCONn) UART控制寄存器( UCONn)是 UART通道 0 UART通道 2控制寄 存器,包含有 UCON0、 UCON1和 UCON2,為可讀寫寄存器, 地址為 0 x5000 0004、 0 x5000 4004和 0 x5000 8004,其位功能如 表 6.1.3所列,復位值為
27、0 x00,推薦使用值為 0 x245。 表 6.1.3 UART控制寄存器( UCONn)的位功能 UCONn的位功能 位 設(shè)置 波特率時鐘選擇 10 0:使用 PCLK , UBRDIVn = ( int)( PCLK / ( bps x 16) ) -1; 1:使用 UEXTCLK( GPH8), UBRDIVn=( int )( UEXTCLK/( bps 16) -1 發(fā)送中斷請求類 型選擇 9 0:脈沖; 1:電平 接收中斷請求類 型選擇 8 0:脈沖; 1:電平 Rx超時中斷使能 控制 7 0:禁止; 1:使能 接收錯誤狀態(tài)中 斷使能控制 6 0:禁止; 1:使能 回送模式選擇
28、5 0:正常模式; 1:回送模式 保留 4 保留位 發(fā)送模式選擇 3:2 確定將 Tx數(shù)據(jù)寫入 UART發(fā)送緩沖寄存器的模式。 00:禁止; 01:中斷請求或查詢模式; 10: DMA0請求(僅 UART0), DMA3請求(僅 UART2); 11: DMA1請求(僅 UART1) 接收模式選擇 1:0 確定從 UART接收緩沖寄存器讀數(shù)據(jù)的模式。 00:禁止; 01:中斷請求或查詢模式; 10: DMA0請求(僅 UART0), DMA3請求(僅 UART2); 11: DMA1請求(僅 UART1) ( 3) UART FIFO控制寄存器( UFCONn) UART FIFO控制寄存器(
29、 UFCONn)是 UART通道 0 UART通道 2 的 FIFO控制寄存器,包含有 UFCON0、 UFCON1和 UFCON2,為可 讀寫寄存器,地址為 0 x5000 0008、 0 x5000 4008和 0 x5000 8008,其位功能如表 6.1.4所列,復位值為 0 x0,推薦使用值為 0 x0。 表 6.1.4 UART FIFO控制寄存器( UFCONn)的位功能 UFCONn的位功 能 位 描述 發(fā)送 FIFO的觸發(fā) 條件選擇 7:6 00:空; 01: 4字節(jié); 10: 8字節(jié); 11: 12字 節(jié) 接收 FIFO的觸發(fā) 條件選擇 5:4 00: 4字節(jié); 01: 8
30、字節(jié); 10: 12字節(jié); 11: 16字節(jié) 保留 3 保留位 Tx FIFO復位位 2 該位在 FIFO復位后自動清除。 0:正常; 1: Tx FIFO復位 Rx FIFO復位位 1 該位在 FIFO復位后自動清除 0:正常; 1: Rx FIFO復位 FIFO使能控制 0 0:禁止; 1:使能 ( 4) UART Modem控制寄存器( UMCONn) UART Modem控制寄存器( UMCONn)是 UART通道 0和 UART通 道 1 調(diào)制解調(diào)器控制寄存器,包含有 UMCON0和 UMCON1,為可 讀寫寄存器,地址為 0 x5000 000C、 0 x5000 400C和 0
31、x5000 800C,其中 0 x5000 800C為保留寄存器,其位功能如表 6.1.5所列, 復位值為 0 x0,推薦使用值為 0 x0。 表 6.1.5 UART Modem控制寄存器( UMCONn)的位功能 UFCONn的位功 能 位 描述 發(fā)送 FIFO的觸發(fā) 條件選擇 7:6 00:空; 01: 4字節(jié); 10: 8字節(jié); 11: 12字 節(jié) 接收 FIFO的觸發(fā) 條件選擇 5:4 00: 4字節(jié); 01: 8字節(jié); 10: 12字節(jié); 11: 16字節(jié) 保留 3 保留位 Tx FIFO復位位 2 該位在 FIFO復位后自動清除。 0:正常; 1: Tx FIFO復位 Rx FI
32、FO復位位 1 該位在 FIFO復位后自動清除 0:正常; 1: Rx FIFO復位 FIFO使能控制 0 0:禁止; 1:使能 ( 5) UART的狀態(tài)寄存器 與 UART相關(guān)的狀態(tài)寄存器包含有 UART TX/RX狀態(tài)寄存器 ( UTRSTATn)、 UART錯誤狀態(tài)寄存器( UERSTATn)、 UART FIFO狀態(tài)寄存器( UFSTATn)和 UART 調(diào)制解調(diào)器狀態(tài)寄存器 ( UMSTATn),這些狀態(tài)寄存器中各功能位反映 UART的工作狀 態(tài)。詳細內(nèi)容見 “ S3C2410A200MHz if ( pclk= =0) pclk PCLK; rUFCON0=0 x0; /UARTO
33、 FIFO控制寄存器, FIFO禁止 rUFCON1=0 x0; /UART1 FIFO控制寄存器, FIFO禁止 rUFCON2=0 x0; /UART2 FIFO控制寄存器, FIFO禁止 rUMCON0=0 x0; /UARTO MODEM控制寄存器, AFC禁止 rUMCONI=0 x0; /UART1 MODEM控制寄存器, AFC禁止 /UART0 rULCON0 0 x3 ; /行控制寄存器:正常模式,無奇偶校驗, 1位停止位, 8位數(shù)據(jù)位 rUCON0 0 x245 ; /控制寄存器 rUBRDIV0 =( int)( pclk/16 /baud+0.5) -1) ; /波特率
34、因子寄存器 /UART1 rULCON1=0 x3; rUCON1=0 x245; rUBRDIV1=( int)( pclk/16 /baud) -1) ; /UART2 rULCON2=0 x3; rUCON2 0 x245; rUBRDIV2=( int)( pclk/16 /baud) -1) ; for( i 0; i include INCconfig h void Main( void) char data; Target_Init(); while( 1) data=Uart GetKey(); /接收字符 if( data! 0 x0) Uart_Select( 0); /從
35、 UART0發(fā)送出去 Uart_Printf( ” key cn, data); Uart_elect ( 1); /從 UART1發(fā)送出去 Uart_Printf( ” key c n, data); Uart_Select( 0); 6.2 I2C接口 6.2.1 I2C接口基本原理與結(jié)構(gòu) I2C BUS( Inter Integrated Circuit BUS,內(nèi)部集成電路總線)是 由 Philips公司推出的二線制串行擴展總線,用于連接微控制器及 其外圍設(shè)備。 I2C總線是具備總線仲裁和高低速設(shè)備同步等功能的 高性能多主機總線,直接用導線連接設(shè)備,通信時無需片選信號。 如圖 6.2.
36、1所示,在 I2C總線上,只需要兩條線 串行數(shù)據(jù) SDA線和 串行時鐘 SCL線,它們用于總線上器件之間的信息傳遞。 SDA和 SCL都是雙向的。每個器件都有一個唯一的地址以供識別,而且 各器件都可以作為一個發(fā)送器或接收器(由器件的功能決定)。 I2C總線有如下操作模式:主發(fā)送模式、主接收模式、從發(fā)送模式、 從接收模式。下面介紹其通用傳輸過程、信號及數(shù)據(jù)格式。 ( 1) I2C總線的啟動和停止信號 當 I2C接口處于從模式時,要想數(shù)據(jù)傳輸,必須檢測 SDA線上的啟 動信號,啟動信號由主器件產(chǎn)生。如圖 6.2.2所示,在 SCL信號為 高時, SDA產(chǎn)生一個由高變低的電平變化,即產(chǎn)生一個啟動信號
37、。 當 I2C總線上產(chǎn)生了啟動信號后,那么這條總線就被發(fā)出啟動信號 的主器件占用了,變成 “ 忙 ” 狀態(tài);如圖 6.2.2所示,在 SCL信號 為高時, SDA產(chǎn)生一個由低變高的電平變化,產(chǎn)生停止信號。停 止信號也由主器件產(chǎn)生,作用是停止與某個從器件之間的數(shù)據(jù)傳 輸。當 I2C總線上產(chǎn)生了一個停止信號后,那么在幾個時鐘周期之 后總線就被釋放,變成 “ 閑 ” 狀態(tài)。 圖 6.2.1 I2C總線接口電路結(jié)構(gòu) 圖 6.2.2 I2C總線啟動和停止信號的定義 主器件產(chǎn)生一個啟動信號后,它還會立即送出一個從地址,用來 通知將與它進行數(shù)據(jù)通信的從器件。 1個字節(jié)的地址包括 7位的地 址信息和 1位的傳
38、輸方向指示位,如果第 7位為 “ 0,表示馬上要 進行一個寫操作;如果為 “ 1,表示馬上要進行一個讀操作。 ( 2)數(shù)據(jù)傳輸格式 SDA線上傳輸?shù)拿總€字節(jié)長度都是 8位,每次傳輸中字節(jié)的數(shù)量是 沒有限制的。在起始條件后面的第一個字節(jié)是地址域,之后每個 傳輸?shù)淖止?jié)后面都有一個應(yīng)答( ACK)位。傳輸中串行數(shù)據(jù)的 MSB(字節(jié)的高位)首先發(fā)送。 ( 3)應(yīng)答信號 為了完成 1個字節(jié)的傳輸操作,接收器應(yīng)該在接收完 1個字節(jié)之后 發(fā)送 ACK位到發(fā)送器,告訴發(fā)送器,已經(jīng)收到了這個字節(jié)。 ACK 脈沖信號在 SCL線上第 9個時鐘處發(fā)出(前面 8個時鐘完成 1個字節(jié) 的數(shù)據(jù)傳輸, SCL上的時鐘都是由
39、主器件產(chǎn)生的)。當發(fā)送器要 接收 ACK脈沖時,應(yīng)該釋放 SDA信號線,即將 SDA置高。接收器在 接收完前面 8位數(shù)據(jù)后,將 SDA拉低。發(fā)送器探測到 SDA為低,就 認為接收器成功接收了前面的 8位數(shù)據(jù)。 ( 4)總線競爭的仲裁 I2C總線上可以掛接有多個器件,有時會發(fā)生兩個或多個主器件同時 想占用總線的情況。 I2C總線具有多主控能力,可對發(fā)生在 SDA線上 的總線競爭進行仲裁,其仲裁原則是:當多個主器件同時想占用總線 時,如果某個主器件發(fā)送高電平,而另一個主器件發(fā)送低電平,則發(fā) 送電平與此時 SDA總線電平不符的那個器件將自動關(guān)閉其輸出級。 總線競爭的仲裁是在兩個層次上進行的。首先是地
40、址位的比較,如果 主器件尋址同一個從器件,則進入數(shù)據(jù)位的比較,從而確保了競爭仲 裁的可靠性。由于是利用 I2C總線上的信息進行仲裁,所以不會造成 信息的丟失。 ( 5) I2C總線的數(shù)據(jù)傳輸過程 開始:主設(shè)備產(chǎn)生啟動信號,表明數(shù)據(jù)傳輸開始。 地址:主設(shè)備發(fā)送地址信息,包含 7位的從設(shè)備地址和 1位的數(shù)據(jù) 方向指示位(讀或?qū)懳?,表示?shù)據(jù)流的方向)。 數(shù)據(jù):根據(jù)指示位,數(shù)據(jù)在主設(shè)備和從設(shè)備之間進行傳輸。數(shù)據(jù)一 般以 8位傳輸,最重要的位放在前面;具體能傳輸多少量的數(shù)據(jù)并沒 有限制。接收器產(chǎn)生 1位的 ACK(應(yīng)答信號)表明收到了每個字節(jié)。 傳輸過程可以被中止和重新開始。 停止:主設(shè)備產(chǎn)生停止信號,
41、結(jié)束數(shù)據(jù)傳輸。 6.2.2 S3C2410A的 I2C接口 S3C2410A提供一個 I2C總線接口,其模塊框圖如圖 6.2.3所示,具 有一個專門的串行數(shù)據(jù)線和串行時鐘線。它有主設(shè)備發(fā)送模式、 主設(shè)備接收模式、從設(shè)備發(fā)送模式和從設(shè)備接收模式 4種操作模 式。 控制 S3C2410AI2C總線操作,需要寫數(shù)據(jù)到 IICCON( I2C總線控制 寄存器)、 IICSTAT( I2C總線控制 /狀態(tài)寄存器)、 IICDS( I2C總 線 Tx/Rx數(shù)據(jù)寄存器)和 IICADD( I2C總線地址寄存器)。 圖 6.2.3 S3C2410A處理器 I2C串行總線框圖 ( 1) IICCON IICCO
42、N( I2C總線控制寄存器)為可讀寫寄存器,地址為 0 x54000000,復位值為 0000 xxxx,其位定義如表 6.2.1所列。 表 6.2.1 IICCON( I2C總線控制寄存器)的位定義 功能 位 描述 初始狀 態(tài) ACK使能 7 0:禁止產(chǎn)生 ACK信號; 1:允許產(chǎn)生ACK信號 0 Tx時鐘源選擇 6 0: IICCLK fPCLK 16; 1: IICCLK f PCLK 512 0 Tx/Rx中斷使能 5 0:禁止 Tx/Rx中斷; 1:使能 Tx/Rx中斷 0 中斷標記清除 / 置位 4 寫 0:清除中斷標志并重新啟動寫操作; 讀 1:中斷標志置位 0 確定發(fā)送時鐘 頻
43、率 3: 0 設(shè)置 I2C總線發(fā)送時鐘前置分頻器, Tx 時 鐘 = IICCLK/( IICCON3:0+1) 未定義 ( 2) IICSTAT( I2C總線控制 /狀態(tài)寄存器) IICSTAT( I2C總線控制 /狀態(tài)寄存器)為可讀寫寄存器,地址 為 0 x54000004,復位值為 00000000,其位定義如表 6.2.2所 列。 表 6.2.2 IICSTAT( I2C總線控制 /狀態(tài)寄存器)的位定義 功能 位 描述 初始狀 態(tài) 模式選擇 7: 6 IIC總線主從 Tx/Rx模式選擇位 00:從接收模式; 01:主接收模式; 10:從發(fā)送模式; 11:主發(fā)送模式 0 功能 位 描述
44、初始狀 態(tài) 忙信號狀態(tài) 啟動 /停止條件 5 讀 0: I2C總線不忙;寫 0:產(chǎn)生 I2C總線停 止信號 讀 1: I2C總線忙;寫 1:產(chǎn)生 I2C總線啟動 信號 0 串行輸出使能 4 0:禁止 Tx/Rx信號傳輸; 1:使能 Tx/Rx信號傳輸 0 仲裁狀態(tài)標志 3 0:總線仲裁成功; 1:總線仲裁不成功 0 從設(shè)備狀態(tài)標 志與地址 2 作為從設(shè)備時, 0:當檢測到啟動或停止信號時清零; 1: 接收到的從地址與在 IICADD中的匹配 0 零地址狀態(tài)標 志 1 作為從設(shè)備時, 0:當檢測到啟動或停止信號時清零; 1: 接收到從地址為 00000000b 0 接收到的最后 數(shù)據(jù)位狀態(tài)標 志
45、 0 0:接收到最后數(shù)據(jù)位后,接收到 ACK應(yīng) 答信號; 1:接收到最后數(shù)據(jù)位后,沒有接收到 ACK應(yīng)答信號 0 ( 3) IICADD( I2C總線地址寄存器) IICADD( I2C總線地址寄存器)為可讀寫寄存器,地址為 0 x54000008,復位值為 xxxxxxxx,其位定義如表 6.2.3所列。 表 6.2.3 IICADD( I2C總線地址寄存器)的位定義 功能 位 描述 初始狀 態(tài) 從地址 7: 0 7位從設(shè)備的地址,從地址 = 7:1。當在 IICSTAT 中的串行輸出使能 0時, IICADD寫使能。在 任何時候都可以對 IICADD的值進行讀操作 xxxxxxx x 功能
46、 位 描述 初始狀態(tài) 數(shù) 據(jù) 移 位 7: 0 I2 C總線發(fā)送接收操作的 8bit數(shù)據(jù)移位寄存器。當 在 IICSTAT中的串行輸出使能( = 1)時, IICDS 寫使能。任何時候都可以對 IICDS的值進行讀操 作 xxxxxxxx 表 5-38 IICDS(移位數(shù)據(jù)寄存器)的位定義 ( 4) IICDS(移位數(shù)據(jù)寄存器) IICDS(移位數(shù)據(jù)寄存器)為可讀寫寄存器,地址為 0 x5400000C,復位值為 xxxxxxxx,其位定義如表 5-38所列。 6.2.3 S3C2410A的 I2C接口應(yīng)用實例 S3C2410A I2C總線與使用 I2C總線的 EEPROM芯片 KS24C08
47、0C連接 電路( JXARM9-2410教學實驗系統(tǒng))如圖 6.2.4所示。 圖 6.2.4 S3C2410A I2C總線與 KS24C080C連接電路 KS24C080C作為 I2C從設(shè)備,其地址為 0 xA0, S3C2410A通過 I2C總 線對該芯片進行讀寫操作,程序如下: ( 1) I2C接口初始化 首先必須進行 I2C端口初始化,然后配置 I2C控制寄存器。 I2C接口 初始化操作通過函數(shù) void iic_init()完成。 ( 2) I2C寫操作 I2C寫操作通過函數(shù) void iic_write_24C08( LJ32 slvAddr, U32 addr, U8 data)完
48、成,其中, slvAddr為從設(shè)備地址,在本系統(tǒng) 中為 0 xA0, addr為待寫入數(shù)據(jù)到芯片的地址; data為待寫入的數(shù) 據(jù)。 I2C寫操作代碼如下所示。 填寫 I2C命令 I2C緩沖區(qū)數(shù)據(jù)及大小。 設(shè)置從設(shè)備地址并啟動 I2C操作。在 I2C輪詢函數(shù)中進行讀寫 操作,操作完畢, iicdata tx size將被置為 1。 等待寫操作完成。 等待從設(shè)備應(yīng)答 。 ( 3) I2C讀操作 I2C讀操作通過函數(shù) void iic_read_24C08( U32.s1vAddr、 U32 addr、 U8關(guān) data)完成,其中 slvAddr為從設(shè)備地址,在本系統(tǒng)中為 0 xA0; addr
49、為待讀人數(shù)據(jù)的地址; data為待讀人數(shù)據(jù)的緩沖區(qū)指針。 I2C讀 操作代碼如下所示。 填寫 I2C命令。 等待寫操作完成。 啟動 I2C操作。在 I2C輪詢函數(shù)中進行讀寫操作,操作完畢讀 取的數(shù)據(jù)被送入 iic_buffer中。 ( 4) I2C輪詢函數(shù) 本實驗采用輪詢方式進行 I2C發(fā)送和接收處理,包括對 POLLACK、 RDDATA、 WRDATA命令的處理。 I2C輪詢函數(shù)的代碼如下: 6.3 USB接口 6.3.1 USB接口基本原理與結(jié)構(gòu) USB( Universal Serial Bus,通用串行總線)是由 Compaq、 HP、 Intel、 Lucent、 Microsof
50、t、 NEC和 Philips等公司制定的連接計算 機與外圍設(shè)備的機外總線。 1 USB總線的主要性能特點 ( 1)熱即插即用 USB提供機箱外的熱即插即用功能,連接外設(shè)不必再打開機箱, 也不必關(guān)閉主機電源, USB可智能地識別 USB鏈上外圍設(shè)備的動 態(tài)插入或拆除,具有自動配置和重新配置外設(shè)的能力,連接設(shè)備 方便,使用簡單。 ( 2)可連接多個外部設(shè)備 每個 USB系統(tǒng)中有個主機, USB總線采用 “ 級聯(lián) ” 方式可連接多 個外部設(shè)備。每個 USB設(shè)備用一個 USB插頭連接到上一個 USB設(shè)備 的 USB插座上,而其本身又提供一或多個 USB插座供下一個或多 個 USB設(shè)備連接使用。這種多
51、重連接是通過集線器( Hub)來實 現(xiàn)的,整個 USB網(wǎng)絡(luò)中最多可連接 127個設(shè)備,支持多個設(shè)備同時 操作。 ( 3)可同時支持不同同步和速率的設(shè)備 USB可同時支持同步傳輸和異步傳輸兩種傳輸方式,可同時支持 不同速率的設(shè)備,速率最高可達幾百 Mb/s。支持主機與設(shè)備之間 的多數(shù)據(jù)流和多消息流傳輸,且支持同步和異步傳輸類型。 ( 4)較強的糾錯能力 USB系統(tǒng)可實時地管理設(shè)備插拔。在 USB協(xié)議中包含了傳輸錯誤 管理、錯誤恢復等功能,同時根據(jù)不同的傳輸類型來處理傳輸錯 誤。 ( 5)低成本的電纜和連接器 USB采用統(tǒng)一的 4引腳插頭和一根四芯的電纜傳送信號和電源,電 纜長度可長達 5m。 (
52、 6)總線供電 USB總線可為連接在其上的設(shè)備提供 5V電壓 /100mA電流的供電, 最大可提供 500mA的電流。 USB設(shè)備也可采用自供電方式。 2 USB系統(tǒng)結(jié)構(gòu) 一個 USB系統(tǒng)可以由 USB主機、 USB設(shè)備和 USB互連 3部分來描述。 ( 1) USB設(shè)備 USB設(shè)備分為 Hub(集線器)和 Function(功能)兩大類。 Hub提 供到 USB的附加連接點, Function為主機系統(tǒng)提供附加的性能。 實際上, Function就是可發(fā)送和接收 USB數(shù)據(jù)的、可實現(xiàn)某種功 能的 USB設(shè)備。 USB設(shè)備應(yīng)具有標準的 USB接口。 ( 2) USB主機 在任何一個 USB系統(tǒng)
53、中只有一個主機,到主計算機系統(tǒng)的 USB接 口被稱作主控制器。主控制器可采用硬件、固件或軟件相結(jié)合的 方式來實現(xiàn),與 Hub集成在主機系統(tǒng)內(nèi),向上與主總線(如 PCI總 線)相連,向下可提供一或多個連接點。 ( 3) USB互連 USB互連指的是 USB設(shè)備與主機的連接和通信方式,它包括總線 拓撲結(jié)構(gòu)、內(nèi)層關(guān)系、數(shù)據(jù)流模型和 USB調(diào)度表。 USB總線用來連接各 USB設(shè)備和 USB主機。 USB在物理上連接成一 個層疊的星形拓撲結(jié)構(gòu), Hub是每個星的中心,每根線段表示一 個點到點( Point-to-Point)的連接,可以是主機與一個 Hub或功 能之間的連接,也可以是一個 Hub與另一
54、個 Hub或功能之間的連 接。 USB的拓撲結(jié)構(gòu)最多只能有 7層(包括根層)。在主機和任一設(shè)備 之間的通信路徑中最多支持 5個非根 Hub復合設(shè)備( Compound Device)要占據(jù)兩層,不能把它連到第 7層,第 7層只能連接 Function設(shè)備。 3物理接口 USB總線的電纜有一對標準尺寸的雙絞信號線和一對標準尺寸的 電源線,共 4根導線。 USB總線支持 480Mb/s(高速)、 12Mb/s(全速)、 1.5Mb/s(低 速) 3種的數(shù)據(jù)傳輸速率。 USB2.0支持在主控制器與 Hub之間用高速、全速和低速數(shù)據(jù)傳輸, Hub與設(shè)備之間以全速或低速傳輸數(shù)據(jù)。 4電源 USB的電源規(guī)
55、范包括電源分配和電源管理兩個方面。 ( 1)電源分配 電源分配用來處理 USB設(shè)備如何使用主機通過 USB總線提供的電 源。主機可以為直接連接到它的 USB設(shè)備提供電源, Hub也對它 所連接的 USB設(shè)備提供電源。每根 USB電纜提供的電源功率是有 限的。完全依賴電纜供電的 USB設(shè)備稱作總線供電設(shè)備( Bus- Powered Device)。 USB設(shè)備也可自帶電源。有后備( Alternate) 電源的設(shè)備稱作自我供電設(shè)備( Self-Powered Device)。 ( 2)電源管理 USB主機有一個獨立于 USB的電源管理系統(tǒng)。 USB系統(tǒng)軟件與主機 電源管理系統(tǒng)之間交互作用,共同
56、處理諸如掛起或恢復等系統(tǒng)電 源事件。 5總線協(xié)議 USB是一種查詢( Polling)總線,由主控制器啟動所有的數(shù)據(jù)傳 輸。 USB上所掛連的外設(shè)通過由主機調(diào)度的( Host-Scheduled)、 基于令牌的( Token-Based)協(xié)議來共享 USB帶寬。 大部分總線事務(wù)涉及 3個包的傳輸。當主控制器按計劃地發(fā)出一 個描述事務(wù)類型和方向、 USB設(shè)備地址和端點號的 USB包時,就 開始發(fā)起一個事務(wù),這個包稱作 “ 令牌包 ” ( Token Packet), 它指示總線上要執(zhí)行什么事務(wù),欲尋址的 USB設(shè)備及數(shù)據(jù)傳送方 向。然后,事務(wù)源發(fā)送一個數(shù)據(jù)包( Data Packet ),或者指
57、示 它沒有數(shù)據(jù)要傳輸。最后,目標一般還要用一個指示傳輸是否有 成功的握手包( Handshake Packet)來響應(yīng)。 主機與設(shè)備端點之間的 USB數(shù)據(jù)傳輸模型被稱作管道。管道有流 和消息兩種類型。消息數(shù)據(jù)具有 USB定義的結(jié)構(gòu),而流數(shù)據(jù)沒有。 管道與數(shù)據(jù)帶寬、傳輸服務(wù)類型、端點特性(如方向性和緩沖區(qū) 大小)有關(guān)。當 USB設(shè)備被配置時,大多數(shù)管道就形成了。一旦 設(shè)備加電,總是形成一個被稱作默認控制管道的消息管道,以便 提供對設(shè)備配置、狀態(tài)和控制信息的訪問。 事務(wù)調(diào)度表( Transaction Schedule)允許對某些流管道進行流量 控制,在硬件級,通過使用 NAK(否認)握手信號來調(diào)
58、節(jié)數(shù)據(jù)傳 輸率,以防止緩沖區(qū)上溢或下溢產(chǎn)生。當被否認時,一旦總線時 間可用會重試該總線事務(wù)。流量控制機制允許靈活地進行調(diào)度, 以適應(yīng)異類混合流管道的同時服務(wù),因此,可以在不同的時間間 隔,用不同規(guī)模的包為多個流管道服務(wù)。 6健壯性( Robustness) USB采取以下措施提高它的健壯性: 使用差分驅(qū)動器和接收器以及屏蔽保護,以保證信號的完整 性; 控制域和數(shù)據(jù)域的 CRC保護校驗; 連接和斷開檢測及系統(tǒng)級資源配置; 協(xié)議的自我修復,對丟失包或毀壞包執(zhí)行超時( Timeouts) 處理; 對流數(shù)據(jù)進行流量控制,以保證對等步和硬件緩沖器維持正 常的管理; 采用數(shù)據(jù)管道和控制管道結(jié)構(gòu),以保證功能
59、之間的獨立性; 協(xié)議允許用硬件或軟件的方法對錯誤進行處理,硬件錯誤處 理包括對傳輸錯誤的報告和重發(fā)。 6.3.2 S3C2410A的 USB控制器 S3C2410A的芯片內(nèi)部包含有 USB主機控制器和 USB設(shè)備控制器。 S3C2410A的 USB主機控制器內(nèi)部結(jié)構(gòu)如圖 6.3.1所示, S3C2410A 的 USB主機控制器支持兩通道 USB主機接口,兼容 OHCI 1.0規(guī) 范, 兼容 USB1.1規(guī)范,具有兩個向下數(shù)據(jù)流通道,支持低速和 高速 USB設(shè)備。 USB主機控制器的 OHCI寄存器如表 6.3.1所示。 S3C2410A的 USB設(shè)備控制器內(nèi)部結(jié)構(gòu)方框圖如圖 6.3.2所示。
60、S3C2410A的 USB設(shè)備控制器具有集成的 USB收發(fā)器( 12Mbps), 批量傳輸?shù)?DMA接口, 5個帶 FIFO的端口,其中: EP0為 16字節(jié) (寄存器), EP1 EP4為 64字節(jié) IN/OUT FIFO (雙通道異步 RAM),可采用中斷或者 DMA方式。支持 DMA接口在大端口上的 接收和發(fā)送( EP1、 EP2、 EP3和 EP4)。支持掛起和遠程喚醒功 能。 S3C2410A的 USB設(shè)備控制器的寄存器如表 6.3.2所示。所有的寄存 器都是通過字節(jié)或字方式進行訪問,在小端和大端方式下,訪問 的偏移地址會有不同。(更多的內(nèi)容請參考詳細的介紹請參考 USERS MAN
61、UAL S3C2410A-200MHz 剛接收到字符的 MSB;前一個發(fā)送字符的 LSB 圖 6.4.4 SPI接口通信波形圖 位 功能描述 SPSTAn7:3 保留位 SPSTAn2 數(shù)據(jù)沖突錯誤標志位。 0:未檢測到?jīng)_突; 1:檢測到?jīng)_突錯誤。 SPSTAn1 多主設(shè)備錯誤標志位。 0:未檢測到該錯誤; 1:發(fā)現(xiàn)多主設(shè)備錯誤 SPSTAn0 數(shù)據(jù)傳輸完成標志位。 0:未完成; 1:完成數(shù)據(jù)傳輸 表 6.4.2 SPSTAn的位功能 ( 2) SPSTAn SPSTAn( SPI狀態(tài)寄存器)為可讀寫寄存器,地址為 0 x59000004/0 x59000024,復位值為 0 x01。 SPS
62、TAn的位功能如表 6.4.2所示。 位 功能描述 SPPINn7:3 保留位 SPPINn2 多主設(shè)備錯誤檢測使能 。 0:禁止該功能; 1:允許該功能 SPPIN1 保留位,總為 1 SPPIN0 主設(shè)備發(fā)送完一個字節(jié)后繼續(xù)驅(qū)動還是釋放。 0:釋放; 1:繼續(xù)驅(qū)動。 表 6.4.3 SPPINn的位功能 ( 3) SPPINn SPPINn( SPI引腳控制寄存器)為可讀寫寄存器,地址為 0 x59000008/0 x59000028,復位值為 0 x02。 SPPINn的位功能如表 6.4.3 所示。 當一個 SPI系統(tǒng)被允許時, nSS之外的引腳的數(shù)據(jù)傳輸方向都由 SPCONn的 MS
63、TR位控制, nSS引腳總是輸人。 當 SPI是一個主設(shè)備時, nSS引腳用于檢測多主設(shè)備錯誤(如果 SPPIN的 ENMUL位被使能),另外還需要一個 GPIO來選擇從設(shè)備。 如果 SPI被配置為從設(shè)備, nSS引腳用來被選擇為從設(shè)備。 SPIMIS0和 SPIMOS1數(shù)據(jù)引腳用于發(fā)送或者接收串行數(shù)據(jù)。如果 SPI口被配置為主設(shè)備 SPIMIS0就是主設(shè)備的數(shù)據(jù)輸入線, SPIMOS1就是主設(shè)備的數(shù)據(jù)輸出線, SPICLK是時鐘輸出線;如果 SPI口被配置為從設(shè)備,這些引腳的功能就正好相反。在一個多主 設(shè)備的系統(tǒng)中, SPICLK、 SPIMOS1、 SPIMIS0都是一組一組單獨 配置的。
64、 ( 4) SPIPREn( SPI波特率預分頻寄存器) SPIPREn( SPI波特率預分頻寄存器)為可讀寫寄存器,地址為 0 x5900000C /0 x5900002C,復位值為 0 x00。 SPPREn7:0設(shè)置預分頻值??梢酝ㄟ^預分頻值計算波特率,公 式如下: 波特率 fPCLK/2(預分頻值 1) ( 5) SPTDATn SPTDATn( SPI發(fā)送數(shù)據(jù)寄存器)為可讀寫寄存器,地址為 0 x59000010/0 x59000030,復位值為 0 x00,存放待 SPI口發(fā)送的 數(shù)據(jù)。 ( 6) SPRDATn SPRDATn( SPI接收數(shù)據(jù)寄存器)為只讀寄存器,地址為 0 x
65、59000014/0 x59000034,復位值為 0 x00,存放 SPI口接收到的 數(shù)據(jù)。 6 SPI接口電路 在 ARM開發(fā)板上可以采用獨立的 SPI接口( J602),其電路如圖 6.4.5所示。也可以通過 PCI插槽引出相應(yīng)引腳,如通過 PCI接口引 出,見 6.5節(jié) PCI接口部分。 圖 6.4.5 SPI接口電路 6.4.3 S3C2410A的 SPI接口編程實例 程序例通過 S3C2410A處理器的 SPI0口發(fā)送數(shù)據(jù), SPI1口接收數(shù)據(jù), 實驗時需要把相應(yīng)信號接到一起: 參考程序如下: 6.5 PCI接口 6.5.1 PCI接口基本結(jié)構(gòu) PCI( Peripheral Co
66、mponent Interconnect,外圍設(shè)備互連)總線 是由 Intel公司推出的一種局部總線,是當前用于系統(tǒng)擴展最流行 的總線之一。由 Intel公司聯(lián)合世界上多家公司成立的 PCISIG ( Peripheral Component Interconnect Special Interest Group) 協(xié)會致力于促進 PCI總線工業(yè)標準的發(fā)展。 PCI總線規(guī)范先后經(jīng)歷 了 1.0版、 2.0版和 2.1版。 PCI總線是地址、數(shù)據(jù)多路復用的高性 能 32位和 64位總線,是微處理器與外圍控制部件、外圍附加板之 間的互連機構(gòu)。它制定了互連的協(xié)議、電氣、機械及配置空間規(guī) 范,以保證全系統(tǒng)的自動配置;在電氣方面還專門定義了 5V和 3.3V信號與環(huán)境,特別是 2.1版本定義了 64位總線擴展以及 66MHz 總線時鐘的技術(shù)規(guī)范。 PCI定義了 32位數(shù)據(jù)總線,并且可擴展為 64位??偩€速度有 33MHz和 66MHz兩種。改良的 PCI系統(tǒng) PCI-X,數(shù)據(jù)傳輸速度最高 可以達到 64位 133 MHz。 PCI總線主板插槽的體積比 ISA總線插 槽小,支持突發(fā)讀寫操作(突發(fā)數(shù)
- 溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。