ARM匯編語言程序設(shè)計(jì)基礎(chǔ) 第6章 嵌入式系統(tǒng)總線接口數(shù)學(xué)
《ARM匯編語言程序設(shè)計(jì)基礎(chǔ) 第6章 嵌入式系統(tǒng)總線接口數(shù)學(xué)》由會員分享,可在線閱讀,更多相關(guān)《ARM匯編語言程序設(shè)計(jì)基礎(chǔ) 第6章 嵌入式系統(tǒng)總線接口數(shù)學(xué)(180頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、第第6章章 嵌入式系統(tǒng)總線接口嵌入式系統(tǒng)總線接口6.1 串行接口 n6.1.1 串行接口基本原理與結(jié)構(gòu)n1串行通信概述串行通信概述n常用的數(shù)據(jù)通信方式有并行通信和串行通信兩種。當(dāng)兩臺數(shù)字設(shè)備之間傳輸距離較遠(yuǎn)時(shí),數(shù)據(jù)往往以串行方式傳輸。串行通信的數(shù)據(jù)是一位一位地進(jìn)行傳輸?shù)模趥鬏斨忻恳晃粩?shù)據(jù)都占據(jù)一個(gè)固定的時(shí)間長度。與并行通信相比,如果n位并行接口傳送n位數(shù)據(jù)需時(shí)間T,則串行傳送的時(shí)間最少為nT。串行通信具有傳輸線少、成本低等優(yōu)點(diǎn),特別適合遠(yuǎn)距離傳送。n 串行數(shù)據(jù)通信模式n串行數(shù)據(jù)通信模式有單工通信、半雙工通信和全雙工通信3種基本的通信模式。n 單工通信:數(shù)據(jù)僅能從設(shè)備A到設(shè)備B進(jìn)行單一方向的傳
2、輸。n 半雙工通信:數(shù)據(jù)可以從設(shè)備A到設(shè)備B進(jìn)行傳輸,也可以從設(shè)備B到設(shè)備A進(jìn)行傳輸,但不能在同一時(shí)刻進(jìn)行雙向傳輸。n 全雙工通信:數(shù)據(jù)可以在同一時(shí)刻從設(shè)備A傳輸?shù)皆O(shè)備B,或從設(shè)備B傳輸?shù)皆O(shè)備A,即可以同時(shí)雙向傳輸。n 串行通信方式n串行通信在信息格式的約定上可以分為同步通信和異步通信兩種方式。na.異步通信方式n異步通信時(shí)數(shù)據(jù)是一幀一幀傳送的,每幀數(shù)據(jù)包含有起始位(”0”)、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位(”1”),每幀數(shù)據(jù)的傳送靠起始位來同步。一幀數(shù)據(jù)的各位代碼間的時(shí)間間隔是固定的,而相鄰兩幀的數(shù)據(jù)其時(shí)間間隔是不固定的。在異步通信的數(shù)據(jù)傳送中,傳輸線上允許空字符。n異步通信對字符的格式、波特率
3、、校驗(yàn)位有確定的要求。n 字符的格式n每個(gè)字符傳送時(shí),必須前面加一起始位,后面加上1、1.5或2位停止位。例如ASCII碼傳送時(shí),一幀數(shù)據(jù)的組成是:前面1個(gè)起始位,接著7位ASCII編碼,再接著一位奇偶校驗(yàn)位,最后一位停止位,共10位。n 波特率n傳送數(shù)據(jù)位的速率稱為波特率,用位秒(bit/s)來表示,稱之為波特。例如,數(shù)據(jù)傳送的速率為120字符秒,每幀包括10個(gè)數(shù)據(jù)位,則傳送波特率為:n10120=1200b/s=1200波特n每一位的傳送時(shí)間是波特的倒數(shù),如1/1200=0.833ms。異步通信的波特率的數(shù)值通常為:150、300、600、1200、2400、4800、9600、14400
4、、28800等,數(shù)值成倍數(shù)變化。n 校驗(yàn)位n在一個(gè)有8位的字節(jié)(byte)中,其中必有奇數(shù)個(gè)或偶數(shù)個(gè)的“1”狀態(tài)位。對于偶校驗(yàn)就是要使字符加上校驗(yàn)位有偶數(shù)個(gè)“1”;奇校驗(yàn)就是要使字符加上校驗(yàn)位有奇數(shù)個(gè)“1”。例如數(shù)據(jù)“00010011”,共有奇數(shù)個(gè)“1”,所以當(dāng)接收器要接收偶數(shù)個(gè)“1”時(shí)(即偶校驗(yàn)時(shí)),則校驗(yàn)位就置為“1”,反之,接收器要接收奇數(shù)個(gè)“1”時(shí)(即奇校驗(yàn)時(shí)),則校驗(yàn)位就置為“0”。n一般校驗(yàn)位的產(chǎn)生和檢查是由串行通信控制器內(nèi)部自動產(chǎn)生,除了加上校驗(yàn)位以外,通信控制器還自動加上停止位,用來指明欲傳送字符的結(jié)束。停止位通常取1、1.5或2個(gè)位。對接收器而言,若未能檢測到停止位則意味著傳
5、送過程發(fā)生了錯(cuò)誤。n在異步通信方式中,在發(fā)送的數(shù)據(jù)中含有起始位和停止位這兩個(gè)與實(shí)際需要傳送的數(shù)據(jù)毫無相關(guān)的位。如果在傳送1個(gè)8位的字符時(shí),其校驗(yàn)位、起始位和停止位都為1個(gè)位,則相當(dāng)于要傳送11個(gè)位信號,傳送效率只有約80%。n(2)同步通信方式n為了提高通信效率可以采用同步通信方式。同步傳輸采用字符塊的方式,減少每一個(gè)字符的控制和錯(cuò)誤檢測數(shù)據(jù)位,因而可以具有較高的傳輸速率。n與異步方式不同的是,同步通信方式不僅在字符的本身之間是同步的,而且在字符與字符之間的時(shí)序仍然是同步的,即同步方式是將許多的字符聚集成一字符塊后,在每塊信息(常常稱之為信息幀)之前要加上12個(gè)同步字符,字符塊之后再加入適當(dāng)?shù)?/p>
6、錯(cuò)誤檢測數(shù)據(jù)才傳送出去。在同步通信時(shí)必須連續(xù)傳輸,不允許有間隙,在傳輸線上沒有字符傳輸時(shí),要發(fā)送專用的”空閑”字符或同步字符。n在同步方式中產(chǎn)生一種所謂“冗余”字符,防止錯(cuò)誤傳送。假設(shè)欲傳送的數(shù)據(jù)位當(dāng)作一被除數(shù),而發(fā)送器本身產(chǎn)生一固定的除數(shù),將前者除以后者所得的余數(shù)即為該“冗余”字符。當(dāng)數(shù)據(jù)位和“冗余”字符位一起被傳送到接收器時(shí),接收器產(chǎn)生和發(fā)送器相同的除數(shù),如此即可檢查出數(shù)據(jù)在傳送過程中是否發(fā)生了錯(cuò)誤。統(tǒng)計(jì)數(shù)據(jù)表明采用”冗余”字符方法錯(cuò)誤防止率可達(dá)99%以上。n2RS-232C串行接口串行接口nRS-232C是美國電子工業(yè)協(xié)會EIA制定的一種串行通信接口標(biāo)準(zhǔn)。n(1)RS-232C接口規(guī)格n
7、EIA所制定的傳送電氣規(guī)格如表6.1.1所示。RS-232C通常以12V的電壓來驅(qū)動信號線,TTL標(biāo)準(zhǔn)與RS-232C標(biāo)準(zhǔn)之間的電平轉(zhuǎn)換電路通常采用集成電路芯片實(shí)現(xiàn),如MAX232等。表6.1.1 EIA的所定的傳送電氣規(guī)格狀態(tài) L(低電平)H(高電平)電壓范圍-25V-3V+3 V+25V 邏輯 1 0 名稱 SPACE MARK n(2)RS-232C接口信號nEIA制定的RS-232C接口與外界的相連采用25芯(DB-25)和9芯(DB-9)D型插接件,實(shí)際應(yīng)用中,并不是每只引腳信號都必須用到,25芯和9芯D型插接件引腳的定義,與信號之間的對應(yīng)關(guān)系如圖6.1.1所示。nRS-232C D
8、B-9各引腳功能如下:n CD:載波檢測。主要用于Modem通知計(jì)算機(jī)其處于在線狀態(tài),即Modem檢測到撥號音。n RXD:接收數(shù)據(jù)線。用于接收外部設(shè)備送來的數(shù)據(jù)。n TXD:發(fā)送數(shù)據(jù)線。用于將計(jì)算機(jī)的數(shù)據(jù)發(fā)送給外部設(shè)備。n DTR:數(shù)據(jù)終端就緒。當(dāng)此引腳高電平時(shí),通知Modem可以進(jìn)行數(shù)據(jù)傳輸,計(jì)算機(jī)已經(jīng)準(zhǔn)備好。n SG:信號地。n DSR:數(shù)據(jù)設(shè)備就緒。此引腳為高電平時(shí),通知計(jì)算機(jī)Modem已經(jīng)準(zhǔn)備好,可以進(jìn)行數(shù)據(jù)通信。n RTS請求發(fā)送。此引腳由計(jì)算機(jī)來控制,用以通知Modem馬上傳送數(shù)據(jù)至計(jì)算機(jī);否則,Modem將收到的數(shù)據(jù)暫時(shí)放人緩沖區(qū)中。n CTS清除發(fā)送。此引腳由Modem控制,
9、用以通知計(jì)算機(jī)將要傳送的數(shù)據(jù)送至Mo-dem。n RI:振鈴提示。Modem通知計(jì)算機(jī)有呼叫進(jìn)來,是否接聽呼叫由計(jì)算機(jī)決定。(a)DB-25 (b)DB-9圖6.1.1 25芯和9芯D型插接件引腳的定義和信號之間的對應(yīng)關(guān)系n(3)RS-232C的基本連接方式n計(jì)算機(jī)利用RS-232C接口進(jìn)行串口通信,有簡單連接和完全連接兩種連接方式。簡單連接又稱三線連接,即只連接發(fā)送數(shù)據(jù)線、接收數(shù)據(jù)線和信號地,如圖6.1.2所示。如果應(yīng)用中還需要使用RS-232C的控制信號,則采用完全連接方式,如圖6.1.3所示。在波特率不高于9 600 bps的情況下進(jìn)行串口通信時(shí),通信線路的長度通常要求小于15米,否則可
10、能出現(xiàn)數(shù)據(jù)丟失現(xiàn)象。圖6.1.2 簡單連接形式 圖6.1.3 完全連接形式 n3RS-422串行通信接口串行通信接口nRS-422標(biāo)準(zhǔn)是RS-232的改進(jìn)型,RS-422標(biāo)準(zhǔn)全稱是“平衡電壓數(shù)字接口電路的電氣特性”。允許在相同傳輸線上連接多個(gè)接收節(jié)點(diǎn),最多可接10個(gè)節(jié)點(diǎn),即一個(gè)主設(shè)備(Master),其余10個(gè)為從設(shè)備(Salve),從設(shè)備之間不能通信。RS-422支持一點(diǎn)對多點(diǎn)的雙向通信。RS-422四線接口由于采用單獨(dú)的發(fā)送和接收通道,因此不必控制數(shù)據(jù)方向,各裝置之間任何必需的信號交換均可以按軟件方式(XON/XOFF握手)或硬件方式(一對單獨(dú)的雙絞線)實(shí)現(xiàn)。nRS-422的最大傳輸距離為
11、4000英尺(約1219m),最大傳輸速率為10Mb/s。傳輸速率與平衡雙絞線的長度有關(guān),只有在很短的距離下才能獲得最高傳輸速率。在最大傳輸距離時(shí),傳輸速率為100Kb/s。一般100m長的雙絞線上所能獲得的最大傳輸速率僅為1 Mb/s。nRS-422需要在傳輸電纜的最遠(yuǎn)端連接一個(gè)電阻,要求電阻阻值約等于傳輸電纜的特性阻抗。在短距離(300m以下)傳輸時(shí)可以不連接電阻。n4RS-485串行總線接口串行總線接口n在RS-422的基礎(chǔ)上,為擴(kuò)展應(yīng)用范圍,EIA制定了RS-485標(biāo)準(zhǔn),增加了多點(diǎn)、雙向通信能力。在通信距離為幾十米至上千米時(shí),通常采用RS-485收發(fā)器。RS-485收發(fā)器采用平衡發(fā)送和
12、差分接收,即在發(fā)送端,驅(qū)動器將TTL電平信號轉(zhuǎn)換成差分信號輸出;在接收端,接收器將差分信號變成TTL電平,因此具有抑制共模干擾的能力。接收器能夠檢測低達(dá)200mV的電壓,具有高的靈敏度,故數(shù)據(jù)傳輸距離可達(dá)千米以上。nRS-485可以采用二線與四線方式,二線制可實(shí)現(xiàn)真正的多點(diǎn)雙向通信。而采用四線連接時(shí),與RS-422一樣只能實(shí)現(xiàn)點(diǎn)對多的通信,即只能有一個(gè)主設(shè)備,其余為從設(shè)備。RS-485可以連接多達(dá)32個(gè)設(shè)備。nRS-485的共模輸出電壓在-7+12V之間,接收器最小輸入阻抗為12k。RS-485滿足所有RS-422的規(guī)范,所以RS-485的驅(qū)動器可以在RS-422網(wǎng)絡(luò)中應(yīng)用nRS-485的最大
13、傳輸速率為10Mb/s。在最大傳輸距離時(shí),傳輸速率為100Kb/s。nRS-485需要兩個(gè)終端電阻,接在傳輸總線的兩端,要求電阻阻值約等于傳輸電纜的特性阻抗。在短距離傳輸(在300m以下)時(shí)可不需終端電阻。n6.1.2 S3C2410A的UARTn1UART簡介簡介nUART(Universal Asynchronous Receiver and Transmitter,通用異步收發(fā)器)主要由數(shù)據(jù)線接口、控制邏輯、配置寄存器、波特率發(fā)生器、發(fā)送部分和接收部分組成,采用異步串行通信方式,采用RS-232C 9芯接插件(DB-9)連接,是廣泛使用的串行數(shù)據(jù)傳輸方式,nUART以字符為單位進(jìn)行數(shù)據(jù)傳
14、輸,每個(gè)字符的傳輸格式如圖6.1.4所示,包括線路空閑狀態(tài)(高電平)、起始位(低電平)、58位數(shù)據(jù)位、校驗(yàn)位(可選)和停止位(位數(shù)可以是1、1.5或2位)。這種格式通過起始位和停止位來實(shí)現(xiàn)字符的同步。UART內(nèi)部一般具有配置寄存器,通過該寄存器可以配置數(shù)據(jù)位數(shù)(58位)、是否有校驗(yàn)位和校驗(yàn)的類型以及停止位的位數(shù) (1位、1.5位或2位)等。圖6.1.4 UART的字符傳輸格式 2S3C2410A的的UART結(jié)構(gòu)結(jié)構(gòu)S3C2410A的UART提供3個(gè)獨(dú)立的異步串行I/O口(SIO),它們都可以運(yùn)行于中斷模式或DMA模式。UART可以產(chǎn)生中斷請求或DMA請求,以便在CPU和UART之間傳輸數(shù)據(jù)。在
15、使用系統(tǒng)時(shí)鐘的情況下,UART可以支持最高230.4Kbps的傳輸速率。如果外部設(shè)備通過UEXTCLK為UART提供時(shí)鐘,那么UART的傳輸速率可以更高。每個(gè)UART通道包含兩個(gè)用于接收和發(fā)送數(shù)據(jù)的16字節(jié)的FIFO緩沖寄存器。n如圖6.1.5所示,S3C2410A的UART由波特率發(fā)生器、發(fā)送器、接收器以及控制單元組成。波特率發(fā)生器的時(shí)鐘可以由PCLK或UEXTCLK提供。發(fā)送器和接收器包含16字節(jié)的FIFO緩沖寄存器和數(shù)據(jù)移位器。發(fā)送時(shí),數(shù)據(jù)被寫入FIFO,然后拷貝到發(fā)送移位器中,接下來數(shù)據(jù)通過發(fā)送數(shù)據(jù)引腳(TxDn)被發(fā)送。接收時(shí),接收到的數(shù)據(jù)從接收數(shù)據(jù)引腳(RxDn)移入,然后從移位器
16、拷貝到FIFO中。圖6.1.5 S3C2410A的UART方框圖(具有FIFO)n3S3C2410A UART的操作的操作nS3C2410A的UART的操作包含有數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、中斷產(chǎn)生、波特率發(fā)生、回送模式、紅外模式和自動流控制等。n(1)數(shù)據(jù)發(fā)送()數(shù)據(jù)發(fā)送(Data Transmission)n發(fā)送的數(shù)據(jù)幀是可編程的。它包括1個(gè)起始位、58個(gè)數(shù)據(jù)位、1個(gè)可選的奇偶校驗(yàn)位和12個(gè)停止位,具體設(shè)置由行控制寄存器(ULCONn)確定。發(fā)送器還可以產(chǎn)生暫停狀態(tài),在一幀發(fā)送期間連續(xù)輸出“0”。在當(dāng)前發(fā)送的字完全發(fā)送完成之后發(fā)出暫停信號。在暫停信號發(fā)出后,繼續(xù)發(fā)送數(shù)據(jù)到Tx FIFO(發(fā)送保持寄
17、存器在非FIFO模式)。n(2)數(shù)據(jù)接收()數(shù)據(jù)接收(Data Reception)n與數(shù)據(jù)發(fā)送類似,接收的數(shù)據(jù)幀也是可編程的。它包括1個(gè)起始位,58個(gè)數(shù)據(jù)位、1個(gè)可選的奇偶校驗(yàn)位和12個(gè)停止位,具體設(shè)置由行控制寄存器(ULCONn)確定。接收器可以檢測溢出錯(cuò)誤和幀錯(cuò)誤。溢出錯(cuò)誤指新數(shù)據(jù)在舊數(shù)據(jù)還沒有被讀出之前就將其覆蓋了。幀錯(cuò)誤指接收的數(shù)據(jù)沒有有效的停止位。n當(dāng)在3個(gè)字時(shí)間段沒有接收任何數(shù)據(jù)和在FIFO模式RxFIFO不空時(shí),產(chǎn)生接收暫停狀態(tài)。n(3)自動流控制()自動流控制(Auro Flow Control,AFC)n如圖6.1.6所示,S3C2410A的UART0和UART1使用nRT
18、S和nCTS信號支持自動流控制。在這種情況下,它可以連接到外部的UART。如果用戶希望將UART連接到Modem,則需要通過軟件來禁止UMCONn寄存器中的自動流控制位并控制nRTS信號。圖6.1.6 UART AFC接口n在AFC狀態(tài),nRTS根據(jù)接收器的狀態(tài)和nCTS信號控制發(fā)送器的操作。只有當(dāng)nCTS信號是有效時(shí)(在AFC狀態(tài),nCTS表示其他UART的FIFO已經(jīng)準(zhǔn)備好接收數(shù)據(jù)),UART的發(fā)送器才發(fā)送在FIFO中的數(shù)據(jù)。在UART接收數(shù)據(jù)之前,當(dāng)其接收FIFO具有多余2字節(jié)的空閑空間時(shí),nRTS有效;如果其接收FIFO的空閑空間少于1字節(jié),則nRTS無效(在AFC狀態(tài),nRTS指示它
19、自己的接收FIFO已經(jīng)準(zhǔn)備好接收數(shù)據(jù))。n(4)RS-232接口(接口(RS-232C interface)n如果用戶希望將UART連接到Modem接口,則需要使用nRTS、nCTS、nDSR、nDTR、DCD和nRI信號。在這個(gè)狀態(tài),用戶可以使用通用的I/O接口,通過軟件來控制這些信號,因?yàn)锳FC不支持RS-232C接口。n(5)中斷)中斷DMA請求產(chǎn)生(請求產(chǎn)生(Interrupt/DMA Request Generation)nS3C2410A的每個(gè)UART有5個(gè)狀態(tài)(Tx/Rx/Error)信號:溢出錯(cuò)誤、幀錯(cuò)誤、接收緩沖數(shù)據(jù)準(zhǔn)備好、發(fā)送緩沖空和發(fā)送移位器空。這些狀態(tài)通過相關(guān)的狀態(tài)寄存
20、器(UTRSTATn/UERSTATn)指示。n溢出錯(cuò)誤和幀錯(cuò)誤指示接收數(shù)據(jù)時(shí)發(fā)生的錯(cuò)誤狀態(tài)。如果控制寄存器UCONn中的接收錯(cuò)誤狀態(tài)中斷使能位置1,那么溢出錯(cuò)誤和幀錯(cuò)誤的任何一個(gè)都可以產(chǎn)生接收錯(cuò)誤狀態(tài)中斷請求。當(dāng)檢測到接收錯(cuò)誤狀態(tài)中斷請求時(shí),可以通過讀UERSTSTn的值來確定引起請求的信號。n如果控制寄存器(UCONn)中的接收模式置為“1”(中斷請求模式或查詢模式),那么在FIFO模式,當(dāng)接收器將接收移位器中的數(shù)據(jù)傳送到接收FIFO寄存器中,并且接收的數(shù)據(jù)量達(dá)到RxFIFO的觸發(fā)水平時(shí),則產(chǎn)生Rx中斷。在非FIFO模式,如果采用中斷請求和查詢模式,當(dāng)把接收移位器中的數(shù)據(jù)傳送到接收保持寄存
21、器中時(shí),將產(chǎn)生Rx中斷。n如果控制寄存器(UCONn)中的發(fā)送模式置為1(中斷請求模式或查詢模式),那么在FIFO模式,當(dāng)發(fā)送器將發(fā)送FIFO寄存器中的數(shù)據(jù)傳送到發(fā)送移位器中,并且發(fā)送FIFO中剩余的發(fā)送數(shù)據(jù)量達(dá)到TxFIFO的觸發(fā)水平時(shí),則產(chǎn)生Tx中斷。在非FIFO模式,如果采用中斷請求和查詢模式,當(dāng)把發(fā)送保持寄存器中的數(shù)據(jù)傳送到發(fā)送移位器時(shí),將產(chǎn)生Tx中斷。n如果在控制寄存器中的接收模式和發(fā)送模式選擇了DMAn請求模式,那么在上面提到的情況下將產(chǎn)生DMAn請求,而不是Rx或Tx中斷。n(6)波特率的產(chǎn)生()波特率的產(chǎn)生(Baud-Rate Generation)n每個(gè)UART的波特率發(fā)生器
22、為發(fā)送器和接收器提供連續(xù)的時(shí)鐘。波特率發(fā)生器的時(shí)鐘源可以選擇使用S3C2410A的內(nèi)部系統(tǒng)時(shí)鐘或UEXTCLK。換句話說,通過設(shè)置UCONn的時(shí)鐘選擇位可以選擇不同的分頻值。波特率時(shí)鐘可以通過對源時(shí)鐘(PCLK或者UEXTCLK)16分頻和對在UART波特率系數(shù)寄存器(UBRDIVn)中的16位分頻數(shù)設(shè)置得到。n(7)回送模式()回送模式(Loopback Mode)nS3C2410A DART提供一種測試模式,即回送模式,用于發(fā)現(xiàn)通信連接中的孤立錯(cuò)誤。這種模式在結(jié)構(gòu)上使UART的RXD與TXD連接。因此,在這個(gè)模式,發(fā)送的數(shù)據(jù)通過RXD被接收器接收。這一特性使得處理器能夠驗(yàn)證每個(gè)SIO通道內(nèi)
23、部發(fā)送和接收數(shù)據(jù)的正確性。該模式通過設(shè)置UART控制寄存器(UCONn)的回送位來進(jìn)行選擇。n(8)紅外模式()紅外模式(Infra-Red(IR)Mode)nS3C2410A的UART模塊支持紅外發(fā)送和接收,該模式可以通過設(shè)置UART行控制寄存器(ULCONn)中的紅外模式位來選擇。n4S3C2410A UART專用寄存器的配置專用寄存器的配置n要使用S3C2410A的UART進(jìn)行串口通信,需要在程序中配置以下與UART相關(guān)的專用寄存器。n(1)UART行控制寄存器(ULCONn)nUART行控制寄存器是UART通道0UART通道2行控制寄存器,包含有ULCON0、ULCON1和ULCON2
24、,為可讀寫寄存器,地址為0 x5000 0000、0 x5000 4000和0 x5000 8000,其位功能如表6.1.2所列,復(fù)位值為0 x00,推薦使用值為0 x3。表6.1.2 UART行控制寄存器的位功能ULCONn的位功能 位 設(shè)置 保留 7 保留位 紅外正常模式選擇 6 0:正常模式;1:紅外模式 奇偶校驗(yàn)?zāi)J竭x擇 5:3 0 xx:無奇偶校驗(yàn);100:奇校驗(yàn)101:偶校驗(yàn)110:強(qiáng)制奇偶校驗(yàn)校驗(yàn)1;111:強(qiáng)制奇偶校驗(yàn)校驗(yàn)0 停止位選擇 2 0:每幀1個(gè)停止位;1:每幀2個(gè)停止位 發(fā)送或者接收字長設(shè)置 1:0 00:5位;01:6位;10:7位;11:8位 n(2)UART控制
25、寄存器(UCONn)nUART控制寄存器(UCONn)是UART通道0UART通道2控制寄存器,包含有UCON0、UCON1和UCON2,為可讀寫寄存器,地址為0 x5000 0004、0 x5000 4004和0 x5000 8004,其位功能如表6.1.3所列,復(fù)位值為0 x00,推薦使用值為0 x245。表6.1.3 UART控制寄存器(UCONn)的位功能 UCONn的位功能位設(shè)置波特率時(shí)鐘選擇100:使用PCLK,UBRDIVn=(int)(PCLK/(bps x 16)-1;1:使用UEXTCLK(GPH8),UBRDIVn=(int)(UEXTCLK/(bps16)-1發(fā)送中斷請
26、求類型選擇90:脈沖;1:電平接收中斷請求類型選擇80:脈沖;1:電平Rx超時(shí)中斷使能控制70:禁止;1:使能接收錯(cuò)誤狀態(tài)中斷使能控制60:禁止;1:使能回送模式選擇50:正常模式;1:回送模式保留4保留位發(fā)送模式選擇3:2確定將Tx數(shù)據(jù)寫入U(xiǎn)ART發(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請求(僅UA
27、RT1)n(3)UART FIFO控制寄存器(UFCONn)nUART FIFO控制寄存器(UFCONn)是UART通道0UART通道2的FIFO控制寄存器,包含有UFCON0、UFCON1和UFCON2,為可讀寫寄存器,地址為0 x5000 0008、0 x5000 4008和0 x5000 8008,其位功能如表6.1.4所列,復(fù)位值為0 x0,推薦使用值為0 x0。表6.1.4 UART FIFO控制寄存器(UFCONn)的位功能 UFCONn的位功能位描述發(fā)送FIFO的觸發(fā)條件選擇7:600:空;01:4字節(jié);10:8字節(jié);11:12字節(jié)接收FIFO的觸發(fā)條件選擇5:400:4字節(jié);0
28、1:8字節(jié);10:12字節(jié);11:16字節(jié)保留3保留位Tx FIFO復(fù)位位2該位在FIFO復(fù)位后自動清除。0:正常;1:Tx FIFO復(fù)位Rx FIFO復(fù)位位1該位在FIFO復(fù)位后自動清除0:正常;1:Rx FIFO復(fù)位FIFO使能控制00:禁止;1:使能n(4)UART Modem控制寄存器(UMCONn)nUART Modem控制寄存器(UMCONn)是UART通道0和 UART通道1 調(diào)制解調(diào)器控制寄存器,包含有UMCON0和 UMCON1,為可讀寫寄存器,地址為0 x5000 000C、0 x5000 400C和0 x5000 800C,其中0 x5000 800C為保留寄存器,其位功
29、能如表6.1.5所列,復(fù)位值為0 x0,推薦使用值為0 x0。表6.1.5 UART Modem控制寄存器(UMCONn)的位功能UFCONn的位功能位描述發(fā)送FIFO的觸發(fā)條件選擇7:600:空;01:4字節(jié);10:8字節(jié);11:12字節(jié)接收FIFO的觸發(fā)條件選擇5:400:4字節(jié);01:8字節(jié);10:12字節(jié);11:16字節(jié)保留3保留位Tx FIFO復(fù)位位2該位在FIFO復(fù)位后自動清除。0:正常;1:Tx FIFO復(fù)位Rx FIFO復(fù)位位1該位在FIFO復(fù)位后自動清除0:正常;1:Rx FIFO復(fù)位FIFO使能控制00:禁止;1:使能n(5)UART的狀態(tài)寄存器n與UART相關(guān)的狀態(tài)寄存器
30、包含有UART TX/RX狀態(tài)寄存器(UTRSTATn)、UART錯(cuò)誤狀態(tài)寄存器(UERSTATn)、UART FIFO狀態(tài)寄存器(UFSTATn)和UART 調(diào)制解調(diào)器狀態(tài)寄存器(UMSTATn),這些狀態(tài)寄存器中各功能位反映UART的工作狀態(tài)。詳細(xì)內(nèi)容見“S3C2410A200MHz&266MHz32-Bit RISC Microprocessor USERS MANUAL Revision 1.0,”。n(6)UART發(fā)送和接收數(shù)據(jù)的緩沖寄存器nUART發(fā)送和接收數(shù)據(jù)的緩沖寄存器包含有UART發(fā)送緩沖寄存器(UTXHn)和UART接收緩沖寄存器(URXHn),用來保存發(fā)送和接收數(shù)據(jù)。(7
31、)UART波特率系數(shù)寄存器UART波特率系數(shù)寄存器(UBRDIVn)包含有UBRDIV0、UBRDIV1和UBRDIV2,用來設(shè)置UART的發(fā)送與接收波特率。UBRDIVn的值可以利用下面的表達(dá)式確定:UBRDIVn=(int)(PCLK/(bps16)1式中,分頻數(shù)值在1216 1之間。對于精確的UART操作,S3C2410A也支持對UEXTCLK進(jìn)行分頻。如果S3C2410A使用由外部的DART設(shè)備或系統(tǒng)提供的UEXTCLK信號,那么UART的連續(xù)的時(shí)鐘將嚴(yán)格與UEXTCLK同步。用戶可以得到更精確的UART操作。UBRDIVn的值可以利用下面的表達(dá)式確定:UBRDIVn=(int)(UE
32、XTCLK/(bps 16)1式中,分頻數(shù)值在12161之間,并且UEXTCLK應(yīng)該小于PCLK。例如,如果波特率是115 200 bps,PCLK或者UEXTCLK是40MHz,UBRDIVn的值為:UBRDIVn=(int)(40000000/(115200 16)1=(int)(21.7)1=211=20n6.1.3 與 S3C2410A UART連接的串行接口電路n1S3C2410A UART與與RS-232C的接口電路的接口電路n要完成最基本的串行通信功能,實(shí)際上只需要RXD、TXD和GND即可。由于RS-232C標(biāo)準(zhǔn)所定義的高、低電平信號與S3C2410A系統(tǒng)的LVTTL電路所定義
33、的高、低電平信號不同,RS-232C標(biāo)準(zhǔn)采用負(fù)邏輯方式,標(biāo)準(zhǔn)邏輯“1”對應(yīng)-5V-15V電平,標(biāo)準(zhǔn)邏輯“0”對應(yīng)+5V+15V電平。而LVTTL的標(biāo)準(zhǔn)邏輯“1”對應(yīng)23.3V電平,標(biāo)準(zhǔn)邏輯“0”對應(yīng)00.4V電平。顯然,兩者間要進(jìn)行通信必須經(jīng)過信號電平的轉(zhuǎn)換。目前常使用的電平轉(zhuǎn)換電路有MAX232等。S3C2410A與MAX232的接口電路如4.21所示,關(guān)于MAX232更具體的內(nèi)容可參考MAX232的用戶手冊(www.maxim-)。n在圖6.1.7中,包含有UART0和UART1與RS-232C的接口電路,通過9芯的D型插頭與外設(shè)連接。也可設(shè)計(jì)數(shù)據(jù)發(fā)送與接收的狀態(tài)指示LED,當(dāng)有數(shù)據(jù)通過串
34、行口傳輸時(shí),LED閃爍,便于用戶掌握其工作狀態(tài),以及進(jìn)行軟、硬件的調(diào)試。圖6.1.7 S3C2410A的RS-232C接口電路 n2S3C2410A UART與與RS422和和RS485的接口電路的接口電路n一個(gè)采用MAX487與S3C2410A的UART1連接,構(gòu)成支持RS422和RS485接口電路如圖6.1.8所示。RS422至少分別有一個(gè)差分發(fā)送口和差分接收口。兩節(jié)點(diǎn)通信時(shí),一方的發(fā)送口與另一方的接收口相連,需兩根線。RS422不能直接用于三點(diǎn)以上的直接互連,也不能直接用總線連接。電路中采用兩片MAX487E,分別構(gòu)成RS422的發(fā)送和接收通道。nRS485的差分發(fā)送口與自身的差分接收口
35、同相并連,多點(diǎn)間連接通過RS485總線只需一對線。電路中采用一片MAX487E構(gòu)成RS485的發(fā)送和接收通道。nMAX487E的引腳端功能如下:n引腳端RO為接收器輸出,如果A B 200mV,RO將是高電平;如果A B 200mV,RO將是低電平。n引腳端為接收器輸出使能控制,為低電平時(shí),RO輸出使能;為高電平時(shí),RO輸出為高阻抗?fàn)顟B(tài)。n引腳端DE為驅(qū)動器輸出使能控制,DE為高電平時(shí),驅(qū)動器輸出使能。n引腳端DI為驅(qū)動器輸入。n引腳端A為接收器同相輸入和驅(qū)動器同相輸出。n引腳端B為接收器反相輸入和驅(qū)動器反相輸出。n引腳端VCC為電源電壓正端輸入,電壓范圍為4.75V 5.25V。n引腳端GN
36、D為地。n關(guān)于MAX487E更具體的內(nèi)容可參考MAX487E的用戶手冊(www.maxim-)。圖6.1.8 S3C2410A的RS422和RS485接口電路 n6.1.4 S3C2410A UART編程實(shí)例徐英慧n本程序?qū)嵗龑?shí)現(xiàn)從UART0接收數(shù)據(jù),然后分別從UART0和UART1發(fā)送出去。其功能可以把鍵盤敲擊的字符通過PC機(jī)的串口發(fā)送給ARM系統(tǒng)上的UART0,ARM系統(tǒng)上的UART0接收到字符后,再通過UART0和UART1送給PC機(jī),這樣就完成了串口間的收發(fā)數(shù)據(jù)。要實(shí)現(xiàn)以上數(shù)據(jù)的收發(fā)功能,需要編寫的主要代碼如下。n1定義與定義與UART相關(guān)的寄存器相關(guān)的寄存器n以UART0為例,需要定
37、義的寄存器如下:n#define rULCON0(*(volatile unsigned*)0 x50000000)/UART0行控制寄存器n#define rUCON0(*(volatile unsigned*)0 x50000004)/UART0控制寄存器n#define rUFCON0(*(volatile unsigned*)0 x50000008)/UART0 FIFO控制寄器n#define rUMCON0(*(volatile unsigned*)0 x5000000c)/UART0 Modem控制寄存器n#define rUTRSTAT0(*(volatile unsigned
38、*)0 x50000010)/UART0 Tx/Rx狀態(tài)寄存器n#define rUERSTAT0(*(volatile unsigned*)0 x50000014)/UART0 Rx錯(cuò)誤狀態(tài)寄存器n#define rUFSTAT0(*(volatile unsigned*)0 x50000018)/UART0 FIFO狀態(tài)寄存器n#define rUMSTAT0(*(volatile unsigned*)0 x5000001c)/UART0 Modem狀態(tài)寄存器n#define rUBRDIV0(*(volatile unsigned*)0 x50000028)/UART0波特率系數(shù)寄存器n
39、#ifdef_BIG_ENDIAN /大端模式n#define rURXH0(*(volatile unsigned char*)0 x50000023)/UART0發(fā)送緩沖寄存器n#define rURXH0(*(volatile unsigned char*)0 x50000027)/UART0接收緩沖寄存器n#define WrUTXH0(ch)(*(volatile unsigned char*)0 x50000023)(unsigned char)(ch)n#define RdURXH0()(*(volatile unsigned char*)0 x50000027)n#define
40、 UTXH0(0 x50000020+3)/DMA使用的字節(jié)訪問地址n#define URXH0(0 x50000024+3)n#else/小端模式n#define rUTXH0(*(volatile unsigned char*)0 x50000020)/UART0 Transmission Holdn#define rURXH0(*(volatile unsigned char)0 x50000024)/UART0 Receive buffern#define WrUTXH0(ch)(*(volatile unsigned char*)0 x50000020)(unsigned char)
41、(ch)n#define RdURXH0()(*(volatile unsigned char*)0 x50000024)n#define UTXH0(0 x50000020)/DMA使用的字節(jié)訪問地址n#define URXH0(0 x50000024)n#endifn2初始化操作初始化操作n參數(shù)pclk為時(shí)鐘源的時(shí)鐘頻率,band為數(shù)據(jù)傳輸?shù)牟ㄌ芈?,初始化函?shù)Uart_Init()的實(shí)現(xiàn)如下:nvoid Uart_Init(int pclk,int baud)n int I;n if(pclk=0)n pclkPCLK;n rUFCON0=0 x0;/UARTO FIFO控制寄存器,F(xiàn)IF
42、O禁止n rUFCON1=0 x0;/UART1 FIFO控制寄存器,F(xiàn)IFO禁止n rUFCON2=0 x0;/UART2 FIFO控制寄存器,F(xiàn)IFO禁止n rUMCON0=0 x0;/UARTO MODEM控制寄存器,AFC禁止n rUMCONI=0 x0;/UART1 MODEM控制寄存器,AFC禁止n /UART0n rULCON00 x3;/行控制寄存器:正常模式,無奇偶校驗(yàn),1位停止位,8位數(shù)據(jù)位n rUCON00 x245;/控制寄存器n rUBRDIV0=(int)(pclk/16/baud+0.5)-1);/波特率因子寄存器n /UART1n rULCON1=0 x3;n
43、rUCON1=0 x245;n rUBRDIV1=(int)(pclk/16/baud)-1);n /UART2n rULCON2=0 x3;n rUCON20 x245;n rUBRDIV2=(int)(pclk/16/baud)-1);n for(i0;ininclude”INCconfigh”nvoid Main(void)nchar data;nTarget_Init();nwhile(1)ndata=Uart GetKey();/接收字符nif(data!0 x0)nUart_Select(0);/從UART0發(fā)送出去nUart_Printf(”keycn”,data);nUart_
44、elect(1);/從UART1發(fā)送出去nUart_Printf(”keyc n”,data);nUart_Select(0);n n n 6.2 I2C接口 n6.2.1 I2C接口基本原理與結(jié)構(gòu)nI2C BUS(Inter Integrated Circuit BUS,內(nèi)部集成電路總線)是由Philips公司推出的二線制串行擴(kuò)展總線,用于連接微控制器及其外圍設(shè)備。I2C總線是具備總線仲裁和高低速設(shè)備同步等功能的高性能多主機(jī)總線,直接用導(dǎo)線連接設(shè)備,通信時(shí)無需片選信號。n如圖6.2.1所示,在I2C總線上,只需要兩條線串行數(shù)據(jù)SDA線和串行時(shí)鐘SCL線,它們用于總線上器件之間的信息傳遞。SD
45、A和SCL都是雙向的。每個(gè)器件都有一個(gè)唯一的地址以供識別,而且各器件都可以作為一個(gè)發(fā)送器或接收器(由器件的功能決定)。nI2C總線有如下操作模式:主發(fā)送模式、主接收模式、從發(fā)送模式、從接收模式。下面介紹其通用傳輸過程、信號及數(shù)據(jù)格式。n(1)I2C總線的啟動和停止信號n當(dāng)I2C接口處于從模式時(shí),要想數(shù)據(jù)傳輸,必須檢測SDA線上的啟動信號,啟動信號由主器件產(chǎn)生。如圖6.2.2所示,在SCL信號為高時(shí),SDA產(chǎn)生一個(gè)由高變低的電平變化,即產(chǎn)生一個(gè)啟動信號。當(dāng)I2C總線上產(chǎn)生了啟動信號后,那么這條總線就被發(fā)出啟動信號的主器件占用了,變成“忙”狀態(tài);如圖6.2.2所示,在SCL信號為高時(shí),SDA產(chǎn)生一
46、個(gè)由低變高的電平變化,產(chǎn)生停止信號。停止信號也由主器件產(chǎn)生,作用是停止與某個(gè)從器件之間的數(shù)據(jù)傳輸。當(dāng)I2C總線上產(chǎn)生了一個(gè)停止信號后,那么在幾個(gè)時(shí)鐘周期之后總線就被釋放,變成“閑”狀態(tài)。圖6.2.1 I2C總線接口電路結(jié)構(gòu)圖6.2.2 I2C總線啟動和停止信號的定義n主器件產(chǎn)生一個(gè)啟動信號后,它還會立即送出一個(gè)從地址,用來通知將與它進(jìn)行數(shù)據(jù)通信的從器件。1個(gè)字節(jié)的地址包括7位的地址信息和1位的傳輸方向指示位,如果第7位為“0”,表示馬上要進(jìn)行一個(gè)寫操作;如果為“1”,表示馬上要進(jìn)行一個(gè)讀操作。n(2)數(shù)據(jù)傳輸格式nSDA線上傳輸?shù)拿總€(gè)字節(jié)長度都是8位,每次傳輸中字節(jié)的數(shù)量是沒有限制的。在起始條
47、件后面的第一個(gè)字節(jié)是地址域,之后每個(gè)傳輸?shù)淖止?jié)后面都有一個(gè)應(yīng)答(ACK)位。傳輸中串行數(shù)據(jù)的MSB(字節(jié)的高位)首先發(fā)送。n(3)應(yīng)答信號n為了完成1個(gè)字節(jié)的傳輸操作,接收器應(yīng)該在接收完1個(gè)字節(jié)之后發(fā)送ACK位到發(fā)送器,告訴發(fā)送器,已經(jīng)收到了這個(gè)字節(jié)。ACK脈沖信號在SCL線上第9個(gè)時(shí)鐘處發(fā)出(前面8個(gè)時(shí)鐘完成1個(gè)字節(jié)的數(shù)據(jù)傳輸,SCL上的時(shí)鐘都是由主器件產(chǎn)生的)。當(dāng)發(fā)送器要接收ACK脈沖時(shí),應(yīng)該釋放SDA信號線,即將SDA置高。接收器在接收完前面8位數(shù)據(jù)后,將SDA拉低。發(fā)送器探測到SDA為低,就認(rèn)為接收器成功接收了前面的8位數(shù)據(jù)。(4)總線競爭的仲裁I2C總線上可以掛接有多個(gè)器件,有時(shí)會發(fā)
48、生兩個(gè)或多個(gè)主器件同時(shí)想占用總線的情況。I2C總線具有多主控能力,可對發(fā)生在SDA線上的總線競爭進(jìn)行仲裁,其仲裁原則是:當(dāng)多個(gè)主器件同時(shí)想占用總線時(shí),如果某個(gè)主器件發(fā)送高電平,而另一個(gè)主器件發(fā)送低電平,則發(fā)送電平與此時(shí)SDA總線電平不符的那個(gè)器件將自動關(guān)閉其輸出級??偩€競爭的仲裁是在兩個(gè)層次上進(jìn)行的。首先是地址位的比較,如果主器件尋址同一個(gè)從器件,則進(jìn)入數(shù)據(jù)位的比較,從而確保了競爭仲裁的可靠性。由于是利用I2C總線上的信息進(jìn)行仲裁,所以不會造成信息的丟失。(5)I2C總線的數(shù)據(jù)傳輸過程 開始:主設(shè)備產(chǎn)生啟動信號,表明數(shù)據(jù)傳輸開始。地址:主設(shè)備發(fā)送地址信息,包含7位的從設(shè)備地址和1位的數(shù)據(jù)方向指
49、示位(讀或?qū)懳?,表示?shù)據(jù)流的方向)。數(shù)據(jù):根據(jù)指示位,數(shù)據(jù)在主設(shè)備和從設(shè)備之間進(jìn)行傳輸。數(shù)據(jù)一般以8位傳輸,最重要的位放在前面;具體能傳輸多少量的數(shù)據(jù)并沒有限制。接收器產(chǎn)生1位的ACK(應(yīng)答信號)表明收到了每個(gè)字節(jié)。傳輸過程可以被中止和重新開始。停止:主設(shè)備產(chǎn)生停止信號,結(jié)束數(shù)據(jù)傳輸。n6.2.2 S3C2410A的I2C接口nS3C2410A提供一個(gè)I2C總線接口,其模塊框圖如圖6.2.3所示,具有一個(gè)專門的串行數(shù)據(jù)線和串行時(shí)鐘線。它有主設(shè)備發(fā)送模式、主設(shè)備接收模式、從設(shè)備發(fā)送模式和從設(shè)備接收模式4種操作模式。n控制S3C2410AI2C總線操作,需要寫數(shù)據(jù)到IICCON(I2C總線控制寄存
50、器)、IICSTAT(I2C總線控制/狀態(tài)寄存器)、IICDS(I2C總線Tx/Rx數(shù)據(jù)寄存器)和IICADD(I2C總線地址寄存器)。圖6.2.3 S3C2410A處理器I2C串行總線框圖(1)IICCONIICCON(I2C總線控制寄存器)為可讀寫寄存器,地址為0 x54000000,復(fù)位值為0000 xxxx,其位定義如表6.2.1所列。表6.2.1 IICCON(I2C總線控制寄存器)的位定義功能位描述初始狀態(tài)ACK使能70:禁止產(chǎn)生ACK信號;1:允許產(chǎn)生ACK信號0Tx時(shí)鐘源選擇60:IICCLKfPCLK16;1:IICCLKf PCLK5120Tx/Rx中斷使能50:禁止Tx/
51、Rx中斷;1:使能Tx/Rx中斷0中斷標(biāo)記清除/置位4寫0:清除中斷標(biāo)志并重新啟動寫操作;讀1:中斷標(biāo)志置位0確定發(fā)送時(shí)鐘頻率3:0設(shè)置I2C總線發(fā)送時(shí)鐘前置分頻器,Tx 時(shí)鐘=IICCLK/(IICCON3:0+1)未定義n(2)IICSTAT(I2C總線控制/狀態(tài)寄存器)nIICSTAT(I2C總線控制/狀態(tài)寄存器)為可讀寫寄存器,地址為0 x54000004,復(fù)位值為00000000,其位定義如表6.2.2所列。表6.2.2 IICSTAT(I2C總線控制/狀態(tài)寄存器)的位定義 功能位描述初始狀態(tài)模式選擇7:6IIC總線主從Tx/Rx模式選擇位00:從接收模式;01:主接收模式;10:從
52、發(fā)送模式;11:主發(fā)送模式0功能位描述初始狀態(tài)忙信號狀態(tài)啟動/停止條件5讀0:I2C總線不忙;寫0:產(chǎn)生I2C總線停止信號讀1:I2C總線忙;寫1:產(chǎn)生I2C總線啟動信號0串行輸出使能40:禁止Tx/Rx信號傳輸;1:使能Tx/Rx信號傳輸0仲裁狀態(tài)標(biāo)志30:總線仲裁成功;1:總線仲裁不成功0從設(shè)備狀態(tài)標(biāo)志與地址2作為從設(shè)備時(shí),0:當(dāng)檢測到啟動或停止信號時(shí)清零;1:接收到的從地址與在IICADD中的匹配0零地址狀態(tài)標(biāo)志1作為從設(shè)備時(shí),0:當(dāng)檢測到啟動或停止信號時(shí)清零;1:接收到從地址為00000000b 0接收到的最后數(shù)據(jù)位狀態(tài)標(biāo)志00:接收到最后數(shù)據(jù)位后,接收到ACK應(yīng)答信號;1:接收到最后
53、數(shù)據(jù)位后,沒有接收到ACK應(yīng)答信號0n(3)IICADD(I2C總線地址寄存器)nIICADD(I2C總線地址寄存器)為可讀寫寄存器,地址為0 x54000008,復(fù)位值為xxxxxxxx,其位定義如表6.2.3所列。表6.2.3 IICADD(I2C總線地址寄存器)的位定義 功能位描述初始狀態(tài)從地址 7:07位從設(shè)備的地址,從地址=7:1。當(dāng)在IICSTAT中的串行輸出使能0時(shí),IICADD寫使能。在任何時(shí)候都可以對IICADD的值進(jìn)行讀操作 xxxxxxxx功能位描述初始狀態(tài)數(shù)據(jù)移位7:0I2 C總線發(fā)送接收操作的8bit數(shù)據(jù)移位寄存器。當(dāng)在IICSTAT中的串行輸出使能(=1)時(shí),IIC
54、DS寫使能。任何時(shí)候都可以對IICDS的值進(jìn)行讀操作 xxxxxxxx表5-38 IICDS(移位數(shù)據(jù)寄存器)的位定義(4)IICDS(移位數(shù)據(jù)寄存器)IICDS(移位數(shù)據(jù)寄存器)為可讀寫寄存器,地址為0 x5400000C,復(fù)位值為xxxxxxxx,其位定義如表5-38所列。6.2.3 S3C2410A的I2C接口應(yīng)用實(shí)例S3C2410A I2C總線與使用I2C總線的EEPROM芯片KS24C080C連接電路(JXARM9-2410教學(xué)實(shí)驗(yàn)系統(tǒng))如圖6.2.4所示。圖6.2.4 S3C2410A I2C總線與KS24C080C連接電路 nKS24C080C作為I2C從設(shè)備,其地址為0 xA0
55、,S3C2410A通過I2C總線對該芯片進(jìn)行讀寫操作,程序如下:n(1)I2C接口初始化n首先必須進(jìn)行I2C端口初始化,然后配置I2C控制寄存器。I2C接口初始化操作通過函數(shù)void iic_init()完成。n(2)I2C寫操作nI2C寫操作通過函數(shù)void iic_write_24C08(LJ32 slvAddr,U32 addr,U8 data)完成,其中,slvAddr為從設(shè)備地址,在本系統(tǒng)中為0 xA0,addr為待寫入數(shù)據(jù)到芯片的地址;data為待寫入的數(shù)據(jù)。I2C寫操作代碼如下所示。n填寫I2C命令I(lǐng)2C緩沖區(qū)數(shù)據(jù)及大小。n設(shè)置從設(shè)備地址并啟動I2C操作。在I2C輪詢函數(shù)中進(jìn)行讀
56、寫操作,操作完畢,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為待讀人數(shù)據(jù)的地址;data為待讀人數(shù)據(jù)的緩沖區(qū)指針。I2C讀操作代碼如下所示。n填寫I2C命令。等待寫操作完成。n啟動I2C操作。在I2C輪詢函數(shù)中進(jìn)行讀寫操作,操作完畢讀取的數(shù)據(jù)被送入iic_buffer中。n(4)I2C輪詢函數(shù)n本實(shí)驗(yàn)采用輪詢方式進(jìn)行I2C發(fā)送和接收處理,包括對POLLACK
57、、RDDATA、WRDATA命令的處理。I2C輪詢函數(shù)的代碼如下:6.3 USB接口 n6.3.1 USB接口基本原理與結(jié)構(gòu)nUSB(Universal Serial Bus,通用串行總線)是由Compaq、HP、Intel、Lucent、Microsoft、NEC和Philips等公司制定的連接計(jì)算機(jī)與外圍設(shè)備的機(jī)外總線。n1USB總線的主要性能特點(diǎn)總線的主要性能特點(diǎn)n(1)熱即插即用nUSB提供機(jī)箱外的熱即插即用功能,連接外設(shè)不必再打開機(jī)箱,也不必關(guān)閉主機(jī)電源,USB可智能地識別USB鏈上外圍設(shè)備的動態(tài)插入或拆除,具有自動配置和重新配置外設(shè)的能力,連接設(shè)備方便,使用簡單。n(2)可連接多個(gè)
58、外部設(shè)備n每個(gè)USB系統(tǒng)中有個(gè)主機(jī),USB總線采用“級聯(lián)”方式可連接多個(gè)外部設(shè)備。每個(gè)USB設(shè)備用一個(gè)USB插頭連接到上一個(gè)USB設(shè)備的USB插座上,而其本身又提供一或多個(gè)USB插座供下一個(gè)或多個(gè)USB設(shè)備連接使用。這種多重連接是通過集線器(Hub)來實(shí)現(xiàn)的,整個(gè)USB網(wǎng)絡(luò)中最多可連接127個(gè)設(shè)備,支持多個(gè)設(shè)備同時(shí)操作。n(3)可同時(shí)支持不同同步和速率的設(shè)備nUSB可同時(shí)支持同步傳輸和異步傳輸兩種傳輸方式,可同時(shí)支持不同速率的設(shè)備,速率最高可達(dá)幾百M(fèi)b/s。支持主機(jī)與設(shè)備之間的多數(shù)據(jù)流和多消息流傳輸,且支持同步和異步傳輸類型。n(4)較強(qiáng)的糾錯(cuò)能力nUSB系統(tǒng)可實(shí)時(shí)地管理設(shè)備插拔。在USB協(xié)議
59、中包含了傳輸錯(cuò)誤管理、錯(cuò)誤恢復(fù)等功能,同時(shí)根據(jù)不同的傳輸類型來處理傳輸錯(cuò)誤。n(5)低成本的電纜和連接器nUSB采用統(tǒng)一的4引腳插頭和一根四芯的電纜傳送信號和電源,電纜長度可長達(dá)5m。n(6)總線供電nUSB總線可為連接在其上的設(shè)備提供5V電壓/100mA電流的供電,最大可提供500mA的電流。USB設(shè)備也可采用自供電方式。n2USB系統(tǒng)結(jié)構(gòu)系統(tǒng)結(jié)構(gòu)n一個(gè)USB系統(tǒng)可以由USB主機(jī)、USB設(shè)備和USB互連3部分來描述。n(1)USB設(shè)備nUSB設(shè)備分為Hub(集線器)和Function(功能)兩大類。Hub提供到USB的附加連接點(diǎn),F(xiàn)unction為主機(jī)系統(tǒng)提供附加的性能。實(shí)際上,F(xiàn)uncti
60、on就是可發(fā)送和接收USB數(shù)據(jù)的、可實(shí)現(xiàn)某種功能的USB設(shè)備。USB設(shè)備應(yīng)具有標(biāo)準(zhǔn)的USB接口。n(2)USB主機(jī)n在任何一個(gè)USB系統(tǒng)中只有一個(gè)主機(jī),到主計(jì)算機(jī)系統(tǒng)的USB接口被稱作主控制器。主控制器可采用硬件、固件或軟件相結(jié)合的方式來實(shí)現(xiàn),與Hub集成在主機(jī)系統(tǒng)內(nèi),向上與主總線(如PCI總線)相連,向下可提供一或多個(gè)連接點(diǎn)。n(3)USB互連nUSB互連指的是USB設(shè)備與主機(jī)的連接和通信方式,它包括總線拓?fù)浣Y(jié)構(gòu)、內(nèi)層關(guān)系、數(shù)據(jù)流模型和USB調(diào)度表。nUSB總線用來連接各USB設(shè)備和USB主機(jī)。USB在物理上連接成一個(gè)層疊的星形拓?fù)浣Y(jié)構(gòu),Hub是每個(gè)星的中心,每根線段表示一個(gè)點(diǎn)到點(diǎn)(Poin
61、t-to-Point)的連接,可以是主機(jī)與一個(gè)Hub或功能之間的連接,也可以是一個(gè)Hub與另一個(gè)Hub或功能之間的連接。nUSB的拓?fù)浣Y(jié)構(gòu)最多只能有7層(包括根層)。在主機(jī)和任一設(shè)備之間的通信路徑中最多支持5個(gè)非根Hub復(fù)合設(shè)備(Compound Device)要占據(jù)兩層,不能把它連到第7層,第7層只能連接Function設(shè)備。n3物理接口物理接口nUSB總線的電纜有一對標(biāo)準(zhǔn)尺寸的雙絞信號線和一對標(biāo)準(zhǔn)尺寸的電源線,共4根導(dǎo)線。nUSB總線支持480Mb/s(高速)、12Mb/s(全速)、1.5Mb/s(低速)3種的數(shù)據(jù)傳輸速率。nUSB2.0支持在主控制器與Hub之間用高速、全速和低速數(shù)據(jù)傳輸
62、,Hub與設(shè)備之間以全速或低速傳輸數(shù)據(jù)。n4電源電源nUSB的電源規(guī)范包括電源分配和電源管理兩個(gè)方面。n(1)電源分配n電源分配用來處理USB設(shè)備如何使用主機(jī)通過USB總線提供的電源。主機(jī)可以為直接連接到它的USB設(shè)備提供電源,Hub也對它所連接的USB設(shè)備提供電源。每根USB電纜提供的電源功率是有限的。完全依賴電纜供電的USB設(shè)備稱作總線供電設(shè)備(Bus-Powered Device)。USB設(shè)備也可自帶電源。有后備(Alternate)電源的設(shè)備稱作自我供電設(shè)備(Self-Powered Device)。n(2)電源管理nUSB主機(jī)有一個(gè)獨(dú)立于USB的電源管理系統(tǒng)。USB系統(tǒng)軟件與主機(jī)電源
63、管理系統(tǒng)之間交互作用,共同處理諸如掛起或恢復(fù)等系統(tǒng)電源事件。n5總線協(xié)議總線協(xié)議nUSB是一種查詢(Polling)總線,由主控制器啟動所有的數(shù)據(jù)傳輸。USB上所掛連的外設(shè)通過由主機(jī)調(diào)度的(Host-Scheduled)、基于令牌的(Token-Based)協(xié)議來共享USB帶寬。n大部分總線事務(wù)涉及3個(gè)包的傳輸。當(dāng)主控制器按計(jì)劃地發(fā)出一個(gè)描述事務(wù)類型和方向、USB設(shè)備地址和端點(diǎn)號的USB包時(shí),就開始發(fā)起一個(gè)事務(wù),這個(gè)包稱作“令牌包”(Token Packet),它指示總線上要執(zhí)行什么事務(wù),欲尋址的USB設(shè)備及數(shù)據(jù)傳送方向。然后,事務(wù)源發(fā)送一個(gè)數(shù)據(jù)包(Data Packet),或者指示它沒有數(shù)據(jù)
64、要傳輸。最后,目標(biāo)一般還要用一個(gè)指示傳輸是否有成功的握手包(Handshake Packet)來響應(yīng)。n主機(jī)與設(shè)備端點(diǎn)之間的USB數(shù)據(jù)傳輸模型被稱作管道。管道有流和消息兩種類型。消息數(shù)據(jù)具有USB定義的結(jié)構(gòu),而流數(shù)據(jù)沒有。管道與數(shù)據(jù)帶寬、傳輸服務(wù)類型、端點(diǎn)特性(如方向性和緩沖區(qū)大?。┯嘘P(guān)。當(dāng)USB設(shè)備被配置時(shí),大多數(shù)管道就形成了。一旦設(shè)備加電,總是形成一個(gè)被稱作默認(rèn)控制管道的消息管道,以便提供對設(shè)備配置、狀態(tài)和控制信息的訪問。n事務(wù)調(diào)度表(Transaction Schedule)允許對某些流管道進(jìn)行流量控制,在硬件級,通過使用NAK(否認(rèn))握手信號來調(diào)節(jié)數(shù)據(jù)傳輸率,以防止緩沖區(qū)上溢或下溢產(chǎn)生
65、。當(dāng)被否認(rèn)時(shí),一旦總線時(shí)間可用會重試該總線事務(wù)。流量控制機(jī)制允許靈活地進(jìn)行調(diào)度,以適應(yīng)異類混合流管道的同時(shí)服務(wù),因此,可以在不同的時(shí)間間隔,用不同規(guī)模的包為多個(gè)流管道服務(wù)。n6健壯性(健壯性(Robustness)nUSB采取以下措施提高它的健壯性:n 使用差分驅(qū)動器和接收器以及屏蔽保護(hù),以保證信號的完整性;n 控制域和數(shù)據(jù)域的CRC保護(hù)校驗(yàn);n 連接和斷開檢測及系統(tǒng)級資源配置;n 協(xié)議的自我修復(fù),對丟失包或毀壞包執(zhí)行超時(shí)(Timeouts)處理;n 對流數(shù)據(jù)進(jìn)行流量控制,以保證對等步和硬件緩沖器維持正常的管理;n 采用數(shù)據(jù)管道和控制管道結(jié)構(gòu),以保證功能之間的獨(dú)立性;n 協(xié)議允許用硬件或軟件的
66、方法對錯(cuò)誤進(jìn)行處理,硬件錯(cuò)誤處理包括對傳輸錯(cuò)誤的報(bào)告和重發(fā)。n6.3.2 S3C2410A的USB控制器nS3C2410A的芯片內(nèi)部包含有USB主機(jī)控制器和USB設(shè)備控制器。nS3C2410A的USB主機(jī)控制器內(nèi)部結(jié)構(gòu)如圖6.3.1所示,S3C2410A的USB主機(jī)控制器支持兩通道USB主機(jī)接口,兼容OHCI 1.0規(guī)范,兼容USB1.1規(guī)范,具有兩個(gè)向下數(shù)據(jù)流通道,支持低速和高速USB設(shè)備。USB主機(jī)控制器的OHCI寄存器如表6.3.1所示。nS3C2410A的USB設(shè)備控制器內(nèi)部結(jié)構(gòu)方框圖如圖6.3.2所示。S3C2410A的USB設(shè)備控制器具有集成的USB收發(fā)器(12Mbps),批量傳輸?shù)腄MA接口,5個(gè)帶FIFO的端口,其中:EP0為16字節(jié)(寄存器),EP1EP4為64字節(jié)IN/OUT FIFO(雙通道異步RAM),可采用中斷或者DMA方式。支持DMA接口在大端口上的接收和發(fā)送(EP1、EP2、EP3和EP4)。支持掛起和遠(yuǎn)程喚醒功能。nS3C2410A的USB設(shè)備控制器的寄存器如表6.3.2所示。所有的寄存器都是通過字節(jié)或字方式進(jìn)行訪問,在小端和大端方式下,訪問的偏移地址會
- 溫馨提示:
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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案