第五章:基于裸機(jī)的程序設(shè)計(jì)方法_第1頁
第五章:基于裸機(jī)的程序設(shè)計(jì)方法_第2頁
第五章:基于裸機(jī)的程序設(shè)計(jì)方法_第3頁
第五章:基于裸機(jī)的程序設(shè)計(jì)方法_第4頁
第五章:基于裸機(jī)的程序設(shè)計(jì)方法_第5頁
已閱讀5頁,還剩156頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

5CHAPTER基于裸機(jī)的程序設(shè)計(jì)方法主要內(nèi)容1324串行口模塊程序設(shè)計(jì)紅外模塊設(shè)計(jì)液晶顯示模塊設(shè)計(jì)USB模塊程序設(shè)計(jì)5SD卡模塊程序設(shè)計(jì)IIS模塊程序設(shè)計(jì)接觸屏模塊程序設(shè)計(jì)PS/2模塊程序設(shè)計(jì)678一、UART接口概述UART(UniversalAsynchronousReceiver/Transmitter,通用異步收發(fā)器)是廣泛使用的串行數(shù)據(jù)傳輸方式,用于控制計(jì)算機(jī)與串行設(shè)備的接口。S3C2410的UART提供三個(gè)獨(dú)立的異步串行I/O端口,每個(gè)都可以在中斷模式或DMA模式下運(yùn)行。即,其UART可以產(chǎn)生內(nèi)部中斷或DMA中斷請(qǐng)求,從而在CPU和UART之間傳輸數(shù)據(jù)。UART在使用系統(tǒng)時(shí)鐘的情況下,最高可以支持230.4Kbps的波特率。二、UART特點(diǎn)1基于DMA或中斷操作的RxD0、TxD0、RxD1、TxD1、RxD2和TxD2;2UART通道0,1,2符合IrDA1.0標(biāo)準(zhǔn),并且具有16字節(jié)的FIFO;3UART通道0和1具有nRTS0、nCTS0、nRTS1

和nCTS1;4接收/發(fā)送時(shí)支持握手模式。三、UART操作UART的操作包括數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、中斷發(fā)生、波特率發(fā)生、回送模式、紅外模式和自動(dòng)流控制等。(1)數(shù)據(jù)發(fā)送發(fā)送的數(shù)據(jù)幀可編程,一個(gè)起始位,5~8個(gè)數(shù)據(jù)位,一個(gè)可選的奇偶校驗(yàn)位和1~2個(gè)停止位組成,通過行控制器(ULCONn)來設(shè)置。發(fā)送器也能產(chǎn)生暫停條件,使串口在一幀的發(fā)送期間連續(xù)輸出若干個(gè)0。當(dāng)前發(fā)送的字完全發(fā)送之后,暫停條件發(fā)送信號(hào),這個(gè)信號(hào)發(fā)送之后,繼續(xù)發(fā)送數(shù)據(jù)到TxFIFO中。

UART操作(2)數(shù)據(jù)接收與數(shù)據(jù)發(fā)送一樣,接收的數(shù)據(jù)幀也是可編程的,它由一個(gè)起始位,5~8個(gè)數(shù)據(jù)位,一個(gè)可選的奇偶校驗(yàn)位和1~2個(gè)停止位組成,這些也通過行控制器(ULCONn)來設(shè)置。接收器可以檢測(cè)溢出錯(cuò)誤和幀錯(cuò)誤。溢出錯(cuò)誤表示新的數(shù)據(jù)在舊的數(shù)據(jù)沒有被讀取的情況下,覆蓋了舊的數(shù)據(jù)。幀錯(cuò)誤表示接收的數(shù)據(jù)沒有有效的停止位。

UART操作(3)自動(dòng)流控制(AutoFlowControl,AFC)

S3C2410的UART0和UART1通過nRTS和nCTS信號(hào)支持自動(dòng)流控制,以此實(shí)現(xiàn)與外部UART的連接。如果用戶想把UART連接到Modem上,需要禁止UMCONn的自動(dòng)流控制位并且通過軟件控制nRTS信號(hào)。在AFC模式下,nRTS根據(jù)接收器的狀態(tài)和nCTS信號(hào)控制發(fā)送器的操作。UART操作(4)RS-232C接口RS-232C是EIA(美國(guó)電子工業(yè)協(xié)會(huì))制定的一種串行通信接口標(biāo)準(zhǔn)。通常RS-232接口以9個(gè)引腳(DB-9)或25個(gè)引腳(DB-25)的形態(tài)出現(xiàn),常用的一般是DB-9。簡(jiǎn)單地通過RS-232C接口進(jìn)行通信時(shí),只需要連接發(fā)送數(shù)據(jù)線、接收數(shù)據(jù)線和信號(hào)地,稱為三線連接。UART操作(5)中斷/DMA請(qǐng)求的產(chǎn)生S3C2410的每一個(gè)UART有5個(gè)狀態(tài)(Tx/Rx/Error)信號(hào):溢出錯(cuò)誤、幀錯(cuò)誤、接收緩沖數(shù)據(jù)準(zhǔn)備好、發(fā)送緩沖區(qū)為空和發(fā)送移位寄存器空。這些狀態(tài)通過讀取UART狀態(tài)寄存器(UTRSTATn/UERSTATn)來獲取UART操作

在FIFO模式下,如果采用中斷請(qǐng)求和查詢模式,當(dāng)發(fā)送器將發(fā)送FIFO寄存器中的數(shù)據(jù)傳輸?shù)桨l(fā)送移位寄存器中,并且發(fā)送FIFO寄存器中剩余的數(shù)據(jù)量達(dá)到TxFIFO的觸發(fā)水平時(shí),Tx中斷產(chǎn)生。在非FIFO模式下,如果采用中斷請(qǐng)求和查詢模式,當(dāng)把數(shù)據(jù)從發(fā)送保持寄存器中傳輸?shù)桨l(fā)送移位寄存器時(shí),將會(huì)引起Tx中斷。 如果控制寄存器中的接收和發(fā)送模式位設(shè)置為DMAn請(qǐng)求模式,則以上提到的情況下產(chǎn)生的中斷是DMAn請(qǐng)求,而不是Rx或Tx中斷。

UART操作(6)波特率發(fā)生

每個(gè)UART的波特率發(fā)生器為發(fā)送器和接收器提供連續(xù)的時(shí)鐘。時(shí)鐘源可以選擇S3C2410的內(nèi)部系統(tǒng)時(shí)鐘或者UEXTCLK。UBRDIVn的值可以通過以下表達(dá)式確定:

UBRDIVn=(int)(PCLK/(bps×16))-1

在這里,除數(shù)因子的值在1到216-1之間。UART操作(6)波特率發(fā)生為了使UART操作精確,S3C2410還支持UEXTCLK作為被除數(shù)。

UBRDIVn的值可以由以下表達(dá)式確定:

UBRDIVn=(int)(UEXTCLK/(bps×16))-1 在這里,除數(shù)因子的值在1~216-1之間,并且UEXTCLK應(yīng)該小PCLK。

UART操作(7)回送模式

S3C2410的UART提供一個(gè)測(cè)試模式,即回送模式,以解決通信鏈接中出現(xiàn)的孤立錯(cuò)誤。這種模式在結(jié)構(gòu)上可以使能UART上RXD和TXD之間的連接。因此,在這種模式下發(fā)送的數(shù)據(jù)通過RXD被接收器接收。這個(gè)特點(diǎn)使處理器能夠檢驗(yàn)內(nèi)部的發(fā)送和接收每個(gè)SIO通道的數(shù)據(jù)路徑。這種模式可以通過設(shè)置UART控制寄存器(UCONn)中的回送模式位進(jìn)行選擇。UART操作(8)紅外模式

S3C2410的UART模塊支持紅外發(fā)送和接收,可以通過設(shè)置UART行控制寄存器(ULCONn)中的紅外模式位進(jìn)行選擇。四、UART特殊功能寄存器1、UART行控制寄存器(ULCONn)

UART模塊中含有ULCON0、ULCON1、ULCON2三個(gè)行控制寄存器,均是可讀/寫的,地址分別為0x50000000、0x50004000、0x50008000。行控制寄存器主要用來規(guī)定傳輸幀的格式。UART特殊功能寄存器2、UART控制寄存器(UCONn)

UART模塊中含有三個(gè)控制寄存器,即UCON0、UCON1和UCON2,均是可讀/寫的,地址分別是0x50000004、0x50004004、0x50008004。

UCONn主要用于定義發(fā)送數(shù)據(jù)模式和接收數(shù)據(jù)模式。UART特殊功能寄存器3、UARTFIFO控制寄存器(UFCONn)

UART模塊中含有三個(gè)UARTFIFO控制寄存器,即UFCON0、UFCON1、UFCON2,均是可讀/寫的,地址分別為0x50000008、0x50004008、0x50008008。

UART特殊功能寄存器4、UARTTx/Rx狀態(tài)寄存器(UTRSTATn)

UART模塊中含有UTRSTAT0、UTRSTAT1和UTRSTAT2三個(gè)UARTTx/Rx狀態(tài)寄存器,均是只讀的,地址分別為0x50000010、0x50004010、0x50008010。UTRSTATn主要功能是讀取相應(yīng)通道的接收和發(fā)送狀態(tài)。UART特殊功能寄存器5、UART錯(cuò)誤狀態(tài)寄存器

UART模塊中含有UERSTA0、UERSTAT1和UERSTAT2三個(gè)UART錯(cuò)誤狀態(tài)寄存器,均是只讀的,地址分別為0x50000014、0x50004014、0x50008014。UART特殊功能寄存器6、UARTFIFO狀態(tài)寄存器

UART模塊中含有UFSTAT0、UFSTAT1、UFSTAT2三個(gè)UARTFIFO狀態(tài)寄存器,均是只讀的,地址分別為0x50000018、0x50004018、0x50008018。UART特殊功能寄存器7、UART發(fā)送/接收緩沖寄存器

UART模塊中含有UTXH0、UTXH1和UTXH2三個(gè)UART發(fā)送緩沖寄存器,均是只寫的,地址分別為0x0x50000020、0x50004020和0x50008020。UART模塊中還含有URXH0、URXH1、URXH2三個(gè)接收緩沖寄存器,均是只讀的,地址分別為0x50000024、0x50004024和0x50008024,這些發(fā)送/接收緩沖寄存器用于存放發(fā)送和接收的數(shù)據(jù)。UART特殊功能寄存器8、UART波特率分頻寄存器

UART模塊中含有UBRDIV0、UBRDIV1和UBRDIV2三個(gè)UART波特率分頻寄存器,用來設(shè)置串行Tx/Rx的波特率。UBRDIVn值的計(jì)算公式如下:

UBRDIVn=(int)(PCLK/(bps×16))-1

UBRDIVn=(int)(UEXTCLK/(bps×16))-1

在這里,除數(shù)因子的值在1到216-1之間,并且UEXTCLK的值應(yīng)該比PCLK小。

五、UART編程實(shí)例

本實(shí)例通過編程實(shí)現(xiàn)了從鍵盤上輸入字符串,通過串口發(fā)送給S3C2410的UART0,再將從UART0接收的字符串回送顯示。僅實(shí)現(xiàn)了UART0簡(jiǎn)單的數(shù)據(jù)發(fā)送接收功能,因此UART0只需RXD0和TXD0兩根接線,采用MAX3232作為電平轉(zhuǎn)換器。UART編程實(shí)例串口電路如圖所示:UART編程實(shí)例(1)初始化串口操作函數(shù)uart_init()用于UART串口初始化,參數(shù)nMainClk表示源時(shí)鐘的時(shí)鐘頻率,nBaud表示波特率,nChannel表示選擇的UART通道,這里選擇UART0。初始化需要設(shè)置的內(nèi)容主要有數(shù)據(jù)位數(shù)、停止位、奇偶校驗(yàn)、波特率、選擇中斷或查詢模式、是否使用FIFO等。UART編程實(shí)例(2)發(fā)送字符操作函數(shù)uart_sendbyte()用于發(fā)送一字節(jié)大小的數(shù)據(jù)nData。宏定義 #defineWrUTXH0(ch)(*(volatileunsignedchar*)0x50000020)=(unsignedchar)(ch) 用于向發(fā)送緩沖寄存器UTXH0中寫入發(fā)送的數(shù)據(jù),本實(shí)驗(yàn)采用查詢的方式收發(fā)數(shù)據(jù)UART編程實(shí)例(3)接收字符操作函數(shù)uart_getch()用于接收字符操作,函數(shù)返回接收的字符,若沒有接收到則返回NULL。 宏定義#defineRdURXH0()(*(volatileunsignedchar*)0x50000024)用于獲得接收緩沖寄存器URXH0中的數(shù)據(jù)。接收操作與發(fā)送操作相似,應(yīng)不斷查詢寄存器UTRSTAT0[0]是否為1,以等待UART0接收數(shù)據(jù)。六、實(shí)驗(yàn)操作步驟及現(xiàn)象

本書中不帶操作系統(tǒng)的實(shí)驗(yàn)在Keil環(huán)境下進(jìn)行,采用把程序下載到Flash中調(diào)試的方法。主要操作步驟如下:(1)使用串口線連接目標(biāo)板上的UART0和PC機(jī)的串口COM1,在PC機(jī)上運(yùn)行超級(jí)終端(波特率115200、1位停止位、無校驗(yàn)位、無硬件流控制),或者使用其他串口程序。使用ULINK2仿真器連接PC機(jī)的USB接口和目標(biāo)板上的JTAG接口。實(shí)驗(yàn)操作步驟及現(xiàn)象(2)打開uart_test工程,單擊工程屬性快捷鍵,打開工程屬性設(shè)置窗口,選擇C/C++標(biāo)簽頁,設(shè)置編譯器屬性。選擇優(yōu)化選項(xiàng),同時(shí)包含頭文件的目錄。(3)選擇Asm標(biāo)簽頁進(jìn)行匯編器屬性配置,選擇包含頭文件的目錄。

實(shí)驗(yàn)操作步驟及現(xiàn)象(4)選擇Linker標(biāo)簽頁進(jìn)行鏈接器配置,如圖5-6所示。在鏈接器的屬性配置中,主要添加分散加載文件,即添加RuninFlash.sct路徑。RuninFlash.sct中指定了代碼的存儲(chǔ)布局,將代碼段、只讀數(shù)據(jù)段、可讀寫的數(shù)據(jù)段分別存放。實(shí)驗(yàn)操作步驟及現(xiàn)象(5)選擇Debug標(biāo)簽頁進(jìn)行調(diào)試屬性配置,如圖5-7所示,包括選擇仿真器ULINKARMDebugger,添加調(diào)試腳本Flash.ini,設(shè)置調(diào)試方式等。調(diào)試腳本除了可以初始化軟硬件的調(diào)試環(huán)境以外,還可以初始化Flash的燒寫環(huán)境。實(shí)驗(yàn)操作步驟及現(xiàn)象(6)選擇Utilities標(biāo)簽頁進(jìn)行燒寫選項(xiàng)配置,如圖5-8所示。選上“UpdateTargetbeforeDebugging”,并添加調(diào)試腳本Flash.ini。接下來點(diǎn)擊“Settings”按鈕,添加Flash燒寫算法。已知S3C2410開發(fā)板用到的燒寫算法為AM29F160DBFlash,因此,只需在點(diǎn)擊“Add”按鈕后,在里面找到對(duì)應(yīng)的算法即可。

實(shí)驗(yàn)操作步驟及現(xiàn)象(7)編譯鏈接工程,對(duì)出現(xiàn)的錯(cuò)誤警告進(jìn)行相應(yīng)修改后重新編譯。(8)點(diǎn)擊Debug調(diào)試快捷鍵,將生成的.axf文件下載到Flash中進(jìn)行在線調(diào)試,或者直接點(diǎn)擊,將.asf文件下到NorFlash中。(9)單擊執(zhí)行程序,通過鍵盤輸入字符串,最后按回車,觀察超級(jí)終端輸出信息。實(shí)驗(yàn)正確結(jié)果應(yīng)該是超級(jí)終端上顯示輸入的字符串。主要內(nèi)容1324串行口模塊程序設(shè)計(jì)紅外模塊設(shè)計(jì)液晶顯示模塊設(shè)計(jì)USB模塊程序設(shè)計(jì)5SD卡模塊程序設(shè)計(jì)IIS模塊程序設(shè)計(jì)接觸屏模塊程序設(shè)計(jì)PS/2模塊程序設(shè)計(jì)678一、紅外數(shù)據(jù)傳輸概述紅外數(shù)據(jù)傳輸適用于低成本、跨平臺(tái)、點(diǎn)對(duì)點(diǎn)的高速數(shù)據(jù)傳輸,尤其是嵌入式系統(tǒng)。紅外線是波長(zhǎng)在750nm~1mm之間的電磁波,是人眼看不到的光線。紅外數(shù)據(jù)傳輸一般采用紅外波段內(nèi)的近紅外線,波長(zhǎng)在0.75μm~25μm之間。紅外數(shù)據(jù)協(xié)會(huì)成立以后,為保證不同廠商的紅外線產(chǎn)品能獲得最佳的通信效果,限定所用紅外線波長(zhǎng)在850nm~900nm之間。紅外數(shù)據(jù)傳輸概述IrDA制定了很多紅外通信協(xié)議,IrDA1.0協(xié)議基于異步收發(fā)器UART,最高通信速率在115.2kbps,簡(jiǎn)稱SIR(SerialInfrared,串行紅外協(xié)議)。IrDA1.1協(xié)議提高通信速率到4Mbps,簡(jiǎn)稱FIR(FastInfrared,快速紅外協(xié)議),同時(shí)在低速時(shí)保留1.0協(xié)議規(guī)定。之后,IrDA又推出了最高通信速率在16Mbps的協(xié)議,簡(jiǎn)稱VFIR(VeryFastInfrared,特速紅外協(xié)議)。紅外數(shù)據(jù)傳輸概述紅外傳輸距離在幾厘米到幾十米,發(fā)射角度通常在0°~15°,發(fā)射強(qiáng)度與接收靈敏度因不同器件和不同應(yīng)用設(shè)計(jì)而強(qiáng)弱不一。使用時(shí)只能以半雙工方式進(jìn)行紅外通信。紅外收發(fā)器件集發(fā)射與接收為一體,通常,器件的發(fā)射部分含有驅(qū)動(dòng)器,接收部分含有放大器,并且內(nèi)部集成了關(guān)斷控制邏輯。關(guān)斷控制邏輯在發(fā)送時(shí)關(guān)斷接收,以避免引入干擾;不使用紅外傳輸時(shí),該控制邏輯通過SD引腳接收指令,關(guān)閉器件電源供應(yīng),以降耗節(jié)能。使用器件時(shí)需要在LED引腳接入適當(dāng)?shù)南蘖麟娮?。二、紅外收發(fā)芯ZHX1010概述

ZHX1010SIR收發(fā)器適用于便攜式低功耗產(chǎn)品,比如手機(jī)、數(shù)碼相機(jī)、便攜式打印機(jī)、筆記本電腦或PDA等。ZHX1010在1米范圍內(nèi)的最高速度可達(dá)115.2kbps,供電范圍較寬(2.4~5.5V),可方便地與各種電壓的CPU進(jìn)行接口。二、紅外收發(fā)芯ZHX1010概述

ZHX1010內(nèi)部集成了紅外發(fā)射二極管、一個(gè)紅外檢測(cè)二極管、一個(gè)數(shù)組AC耦合驅(qū)動(dòng)、一個(gè)接收器解碼電路。ZHX1010在3V供電時(shí),電流僅有90μA,非常適用于電池供電產(chǎn)品。它的外圍電路也極其簡(jiǎn)單,只需要一個(gè)外部電阻和一個(gè)外部電容即可工作。紅外收發(fā)芯ZHX1010概述ZHX1010有LEDA、TXD、RXD、SD、Vcc和GND共6個(gè)引腳,與LEDA內(nèi)部與RED紅外發(fā)光二極管相連,外部接一限流電阻到Vcc,用于提供工作電流。TXD是數(shù)據(jù)發(fā)送引腳,內(nèi)部帶有下拉電阻,可以直接與MPU的數(shù)據(jù)發(fā)送端相連,當(dāng)器件進(jìn)入省電模式時(shí),該下拉電阻開路。RXD是接收到紅外數(shù)據(jù)后的輸出腳,是一個(gè)三態(tài)輸出引腳,該引腳無需外接電阻。SD是省電模式控制引腳,該引腳輸入高電平時(shí)ZHX1010進(jìn)入省電模式,此時(shí)最大電流僅有1μA。

三、紅外發(fā)送數(shù)據(jù)編程實(shí)例

本例實(shí)現(xiàn)了把紅外模塊ZHX1010收到的數(shù)據(jù)發(fā)送給S3C2410的UART1,保存并通過超級(jí)終端的主窗口顯示。因此,UART1需工作在紅外模式下,而且應(yīng)使其波特率可調(diào),以適用于不同通信距離的應(yīng)用場(chǎng)合。ZHX1010與S3C2410的具體電路連接方式如下圖所示。紅外發(fā)送數(shù)據(jù)編程實(shí)例

具體電路連接方式:紅外發(fā)送數(shù)據(jù)編程實(shí)例

(1)紅外發(fā)送主程序 主要設(shè)置了UART的波特率和數(shù)據(jù)發(fā)收模式,開啟了紅外傳輸?shù)腞XD1和ERR1中斷。當(dāng)遙控器向ZHX1010發(fā)送數(shù)據(jù)時(shí),進(jìn)入中斷服務(wù)程序,對(duì)數(shù)據(jù)進(jìn)行接收。(2)中斷服務(wù)子程序中斷服務(wù)子程序irda_rx_or_err()判斷具體的中斷源是RXD1中斷還是ERR1中斷,跳入對(duì)應(yīng)的函數(shù)進(jìn)行處理。如果中斷源是RXD1,則接收數(shù)據(jù)保存并打?。蝗绻袛嘣词荅RR1,則打印錯(cuò)誤信息。四、實(shí)驗(yàn)操作步驟及現(xiàn)象

(1)將實(shí)驗(yàn)箱上的跳線SW503、SW504端口(1、2、3都不接)。(2)使用串口線連接目標(biāo)板上的UART0和PC機(jī)的串口COM1,在PC機(jī)上運(yùn)行超級(jí)終端(波特率115200、1位停止位、無校驗(yàn)位、無硬件流控制),或者使用其他串口程序。使用ULINK2仿真器連接PC機(jī)的USB接口和目標(biāo)板上的JTAG接口。(3)打開irda_test工程,編譯鏈接后下載到FLASH中,運(yùn)行程序,按照提示使用PC機(jī)鍵盤選擇紅外數(shù)據(jù)傳輸?shù)牟ㄌ芈?。例如輸入?”,選擇波特率為19.2Kbps,出現(xiàn)等待接收紅外信號(hào)界面:

rUBRDIV1=164Now…RxwithIrDA(4)按遙控器,出現(xiàn)接收到信號(hào)。主要內(nèi)容1324串行口模塊程序設(shè)計(jì)紅外模塊設(shè)計(jì)液晶顯示模塊設(shè)計(jì)USB模塊程序設(shè)計(jì)5SD卡模塊程序設(shè)計(jì)IIS模塊程序設(shè)計(jì)接觸屏模塊程序設(shè)計(jì)PS/2模塊程序設(shè)計(jì)678一、LCD顯示器介紹LCD(LiquidCrystalDisplay,液晶顯示器)主要用于顯示文本及圖形信息。它具有輕薄、體積小、耗電量低、無輻射危險(xiǎn)、平面直角顯示及影像穩(wěn)定不閃爍的特點(diǎn),因此在許多電子應(yīng)用系統(tǒng)中,常常使用液晶屏作為人機(jī)界面。LCD由兩塊玻璃板構(gòu)成,其間由液晶材料分隔開。當(dāng)受到外界電場(chǎng)影響時(shí),液晶分子會(huì)產(chǎn)生精確的有序排列。對(duì)分子的排列加以適當(dāng)?shù)目刂?,液晶分子將?huì)允許光線穿越。因?yàn)橐壕Р牧媳旧聿⒉话l(fā)光,因此在顯示屏兩邊都設(shè)有作為光源的燈管,而在液晶顯示器背面有一塊背光板和反光膜,背光板是由熒光物質(zhì)組成的,可以發(fā)射光線,其作用主要是提供均勻的背景光源。LCD顯示器介紹背光板發(fā)出的光線在穿過第一層偏振過濾層后,進(jìn)入液晶層。液晶層中的液滴都被包含在細(xì)小的單元格結(jié)構(gòu)中,一個(gè)或多個(gè)單元格構(gòu)成屏幕上的一個(gè)像素。每個(gè)單元格由一個(gè)電極控制,通過改變單元格上電極的電壓狀態(tài),就能控制單元格內(nèi)液晶分子的排列,從而控制光路的通斷。通常,在彩色LCD面板中,每一個(gè)像素都由三個(gè)液晶單元格構(gòu)成,其中每一個(gè)單元格前都分別有紅色、綠色或藍(lán)色的過濾器,通過不同單元格的光線就可以在屏幕上顯示出不同的顏色。LCD顯示器介紹液晶顯示屏按照顯示原理分為STN-LCD(SuperTN-LCD,超扭曲向列LCD)和TFT-LCD(ThinFilmTransistor-LCD,薄膜晶體管LCD)兩種。STN在亮度及可視角方面受到較大限制,反應(yīng)速度較慢,分辨率也不高,但成本比較低廉,因此一般用于一些對(duì)圖像分辨率和要求不是很高,小尺寸電子顯示的領(lǐng)域,例如手表、傳真機(jī)、移動(dòng)電話、電子詞典等。TFT液晶顯示器響應(yīng)快,顯示品質(zhì)好,適用于大型動(dòng)畫顯示,被廣泛應(yīng)用于筆記本電腦、計(jì)算機(jī)顯示器、液晶電視等產(chǎn)品。二、S3C2410的LCD控制器

S3C2410處理器集成了LCD控制器,它的主要功能是傳輸顯示數(shù)據(jù)和產(chǎn)生控制信號(hào)。LCD控制器可以采用時(shí)間抖動(dòng)算法和幀率控制算法,支持規(guī)格每像素2位(4級(jí)灰度)或4位(16級(jí)灰度)的黑白LCD,也可以支持每像素8位(256色)、12位(4096色)的彩色STNLCD。還可以支持每像素1位、2位、4位和8位的調(diào)色板顯示模式和每像素16、24位的非調(diào)色板真彩顯示。LCD控制器可以通過編程支持不同LCD屏的要求,例如行和列的像素?cái)?shù)、數(shù)據(jù)寬度、接口時(shí)序以及刷新率等

S3C2410的LCD控制器

S3C2410的LCD控制器有33個(gè)外部接口信號(hào),包括24個(gè)數(shù)據(jù)位和9個(gè)控制位。與STNLCD相關(guān)的外部接口信號(hào)有以下幾個(gè):(1)VFRAME:LCD控制器和LCD驅(qū)動(dòng)器之間的幀同步信號(hào)。(2)VLINE:LCD控制器和LCD驅(qū)動(dòng)器之間的同步脈沖信號(hào)(3)VCLK:LCD控制器和LCD驅(qū)動(dòng)器之間的像素時(shí)鐘信號(hào)。(4)VM:LCD驅(qū)動(dòng)器的交流信號(hào)。S3C2410的LCD控制器

S3C2410的LCD控制器用于傳送數(shù)據(jù)和產(chǎn)生必要的控制信號(hào),例如VFRAME、VLINE、VCLK和VM等。LCD控制器由REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPC3600組成,如圖5-11所示。REGBANK具有17個(gè)可編程寄存器,用于配置LCD控制器。LCDCDMA是一個(gè)專用的DMA,自動(dòng)將幀內(nèi)存的顯示數(shù)據(jù)傳送到LCD驅(qū)動(dòng)器中。通過使用這個(gè)專用DMA,可以在不需要CPU介入的情況下顯示數(shù)據(jù)。VIDPRCS從LCDCDMA中接收數(shù)據(jù),將相應(yīng)格式(比如4/8位單掃描或4位雙掃描顯示模式)的數(shù)據(jù)通過VD[23:0]端口發(fā)送到LCD驅(qū)動(dòng)器。TIMEGEN模塊由可編程邏輯組成,支持不同的LCD驅(qū)動(dòng)器中不同接口時(shí)序和速率的要求。TIMEGEN模塊產(chǎn)生VFRAME、VLINE、VCLK和VM等控制信號(hào)。S3C2410的LCD控制器

LCD控制器的結(jié)構(gòu)框圖

三、STNLCD控制器操作

S3C2410能夠支持STNLCD和TFTLCD,這兩種LCD屏在顯示時(shí)有很大差別,而且所涉及到的寄存器也會(huì)不同。Embest

EduKit-III實(shí)驗(yàn)平臺(tái)采用的是STNLCD。四、點(diǎn)陣字庫(kù)原理

(1)漢字點(diǎn)陣字庫(kù)結(jié)構(gòu)及顯示原理在GB2312-80標(biāo)準(zhǔn)中,所有的漢字分為94個(gè)區(qū),每個(gè)區(qū)有94個(gè)位可以存放94個(gè)漢字,這種漢字編碼方式即為區(qū)位碼。在計(jì)算機(jī)中,英文可以用ASCII碼來表示,而漢字使用的是兩個(gè)碼值大于128的擴(kuò)展ASCII碼,稱為漢字內(nèi)碼。

點(diǎn)陣字庫(kù)原理

其中: 漢字內(nèi)碼的第一個(gè)字節(jié)=區(qū)碼+80h+20h

漢字內(nèi)碼的第二個(gè)字節(jié)=位碼+80h+20h

由此可以計(jì)算出一個(gè)漢字的區(qū)位碼為: 區(qū)碼=內(nèi)碼的第一個(gè)字節(jié)-128-32 =內(nèi)碼的第一個(gè)字節(jié)-160

位碼=內(nèi)碼的第二個(gè)字節(jié)-128-32 =內(nèi)碼的第二個(gè)字節(jié)-160點(diǎn)陣字庫(kù)原理(2)英文點(diǎn)陣字庫(kù)原理英文點(diǎn)陣字庫(kù)的原理與漢字基本相同,唯一不同的是在點(diǎn)陣字庫(kù)的尋址上,英文使用的就是ASCII碼,碼值為0~127,尋址公式為:

location=ASCII碼×一個(gè)英文字模占用的字節(jié)數(shù)。點(diǎn)陣字庫(kù)原理通過以上介紹可以看出,區(qū)分中英文的關(guān)鍵就是標(biāo)示字符的碼是ASCII碼還是擴(kuò)展ASCII碼,如果是ASCII碼,則為英文字庫(kù),如果是擴(kuò)展ASCII碼,則與其后的另一個(gè)擴(kuò)展ASCII碼組成漢字內(nèi)碼,使用中文字庫(kù)進(jìn)行顯示。只要正確區(qū)分ASCII碼的類型并進(jìn)行分別處理,也就能實(shí)現(xiàn)中英文字符串的混合輸出了。在嵌入式系統(tǒng)中有時(shí)需要顯示的漢字不多,可以利用字模提取軟件提取所需的字模建立小字庫(kù),從而達(dá)到節(jié)省存儲(chǔ)空間的目的。五、S3C2410的LCD相關(guān)寄存器S3C2410的LCD控制器包含16個(gè)相關(guān)寄存器,用戶通過設(shè)置相關(guān)寄存器來控制LCD的顯示。下面對(duì)這些寄存器進(jìn)行具體說明。

(1)LCD控制寄存器1(LCDCON1)

LCDCON1寄存器是可讀/寫的,地址為0x4D000000,主要用于確定VCLK、VM的速率,選擇顯示模式,選擇BPP模式和確定LCD視頻輸出使能。S3C2410的LCD相關(guān)寄存器(2)LCD控制寄存器2(LCDCON2)

LCDCON2寄存器是可讀/寫的,地址為0x4D000004,主要用于定義時(shí)間間隔(3)LCD控制寄存器3(LCDCON3)

LCDCON3寄存器是可讀/寫的,地址為0x4D000008(4)LCD控制寄存器4(LCDCON4)

LCDCON4寄存器是可讀/寫的,地址為0x4D00000CS3C2410的LCD相關(guān)寄存器(5)LCD控制寄存器5(LCDCON5)

LCDCON5寄存器是可讀/寫的,地址是0x4D000000,主要用于確定相關(guān)信號(hào)的格式和極性(6)幀緩沖起始地址寄存器1(LCDSADDR1) LCDSADDR1寄存器是可讀/寫的,地址為0x4D000014(7)幀緩沖起始地址寄存器2(LCDSADDR2) LCDSADDR2寄存器是可讀/寫的,地址為0x4D000018S3C2410的LCD相關(guān)寄存器(8)幀緩沖起始地址寄存器3(LCDSADDR3) LCDSADDR3寄存器是可讀/寫的,地址為0x4D00001C(9)紅色查找表寄存器(REDLUT)

REDLUT寄存器是可讀/寫的,地址為0x4D000020,可以從該寄存器的位[31:0]中查找不同的紅色值S3C2410的LCD相關(guān)寄存器(10)綠色查找表寄存器(GREENLUT)

GREENLUT寄存器是可讀/寫的,地址為0x4D000024,可以從該寄存器的位[31:0]中查找不同的綠色值(11)藍(lán)色查找表寄存器(BLUELUT)

BLUELUT寄存器是可讀/寫的,地址為0x4D000028,可以從該寄存器的位[15:0]中查找不同的藍(lán)色值S3C2410的LCD相關(guān)寄存器(12)抖動(dòng)模式寄存器(DITHMODE)

DITHMODE寄存器是STNLCD顯示控制器的抖動(dòng)模式寄存器,可進(jìn)行讀/寫。對(duì)于不同的LCD,此寄存器設(shè)置為0x00000或0x12210兩個(gè)值(13)臨時(shí)調(diào)色板寄存器(TPAL)

TPAL寄存器主要功能包括是否開啟臨時(shí)調(diào)色板以及設(shè)置臨時(shí)調(diào)色板的值,該寄存器是可讀/寫的,地址為0x4D000050S3C2410的LCD相關(guān)寄存器(14)LCD中斷掛起寄存器(LCDINTPND)

LCDINTPND寄存器是可讀/寫的,地址為0x4D000054,用于定義相關(guān)中斷未決位(15)LCD源掛起寄存器(LCDSRCPND)

LCDSRCPND寄存器是可讀/寫的,地址為0x4D000058,用于定義相關(guān)中斷源未決位(16)LCD中斷屏蔽寄存器(LCDINTMSK)

LCDINTMSK寄存器是可讀/寫的,地址為0x4D00005C,用于確定LCDFIFO的觸發(fā)級(jí)別以及屏蔽相關(guān)中斷六、LCD顯示的編程實(shí)例

本實(shí)驗(yàn)采用的是320×240像素的256色STN液晶屏,通過編程控制相關(guān)寄存器,在LCD上顯示字符、幾何圖形和圖片文件。使用液晶顯示屏最基本的是像素控制數(shù)據(jù)的使用,像素控制數(shù)據(jù)的存放與傳輸格式,決定了顯示的效果,這也是所有顯示控制的基本程序設(shè)計(jì)思想。實(shí)現(xiàn)了在LCD上的特定位置顯示像素點(diǎn),再通過編程對(duì)這些點(diǎn)進(jìn)行不同排列,就能實(shí)現(xiàn)顯示字符、幾何圖形和位圖。LCD顯示的編程實(shí)例

(1)LCD初始化函數(shù)Lcd_Init()通過switch語句實(shí)現(xiàn)了對(duì)不同LCD的初始化方法,主要根據(jù)實(shí)際的LCD配置相關(guān)寄存器LCDCON1~LCDCON5、LCDADDR1~LCDADDR3、LCDINTMSK、DITHMODE、TPAL寄存器等。本實(shí)驗(yàn)中用的STN采用8位單掃描方式。LCD顯示的編程實(shí)例

(2)畫點(diǎn)函數(shù)畫點(diǎn)函數(shù)是所有圖形顯示操作的基礎(chǔ),它實(shí)現(xiàn)了在LCD上特定位置改變像素顏色的功能。畫點(diǎn)的實(shí)質(zhì)就是修改幀緩沖區(qū)的數(shù)據(jù),從而引起顯示屏上相應(yīng)位置圖像的變化。(3)畫線算法及代碼畫出比較平直的直線,一般采用Bresenham算法。其原理是過各行各列像素中心構(gòu)造一組虛擬網(wǎng)格線,按直線從起點(diǎn)到終點(diǎn)的順序計(jì)算直線與各垂直網(wǎng)格線的交點(diǎn),然后確定該列像素中與此交點(diǎn)最近的像素。七、實(shí)驗(yàn)操作步驟及現(xiàn)象

(1)使用串口線連接目標(biāo)板上的UART0和PC機(jī)的串口COM1,在PC機(jī)上運(yùn)行超級(jí)終端(波特率115200、1位停止位、無校驗(yàn)位、無硬件流控制),或者使用其他串口程序。使用ULINK2仿真器連接PC機(jī)的USB接口和目標(biāo)板上的JTAG接口。(2)打開LCD_TEST工程,編譯鏈接后下載到開發(fā)板FLASH上,運(yùn)行程序,觀察LCD液晶屏上顯示的字符、幾何圖形和圖片。實(shí)驗(yàn)操作步驟及現(xiàn)象

(3)如果想要更換圖片,需要使用軟件Image2Lcd將圖片轉(zhuǎn)換為數(shù)組形式存放,具體方法為打開Image2Lcd,如圖5-12所示,點(diǎn)擊“打開”選擇要轉(zhuǎn)換的圖片文件,選擇輸出數(shù)據(jù)類型為C語言數(shù)組,掃描形式為水平掃描,輸出灰度為256色,最大寬度和高度為320和240。最后選擇“保存”,選擇數(shù)組文件保存的路徑。主要內(nèi)容1324串行口模塊程序設(shè)計(jì)紅外模塊設(shè)計(jì)液晶顯示模塊設(shè)計(jì)USB模塊程序設(shè)計(jì)5SD卡模塊程序設(shè)計(jì)IIS模塊程序設(shè)計(jì)接觸屏模塊程序設(shè)計(jì)PS/2模塊程序設(shè)計(jì)678一、USB基礎(chǔ)知識(shí)(1)USB的定義及主要特點(diǎn)

USB(UniversalSerialBus,通用串行總線)是一種可以同時(shí)處理計(jì)算機(jī)與具有USB接口的多種外設(shè)之間通信的電纜總線。USB有以下主要特點(diǎn):①支持即插即用。允許外設(shè)在主機(jī)和其他外設(shè)進(jìn)行工作時(shí),進(jìn)行連接、配置、使用以及移除。

USB基礎(chǔ)知識(shí)②傳輸速度快。USB支持三種設(shè)備傳輸速率:低速設(shè)備1.5Mb/s、中速設(shè)備12Mb/s和高速設(shè)備480Mb/s。③可連接多個(gè)外部設(shè)備。USB可以通過串行連接或者使用集線器Hub連接127個(gè)USB設(shè)備,從而以一個(gè)串行通道取代PC上其他I/O端口如串行口、并行口等,使PC與外設(shè)之間的連接更容易。④較強(qiáng)的糾錯(cuò)能力。USB系統(tǒng)可以實(shí)時(shí)地管理設(shè)備插拔。在USB協(xié)議中包含了傳輸錯(cuò)誤管理、錯(cuò)誤恢復(fù)等功能,同時(shí)根據(jù)不同的傳輸類型來處理傳輸錯(cuò)誤。USB基礎(chǔ)知識(shí)⑤總線供電。USB總線可為連接在其上的設(shè)備提供5V電壓/100mA電流的供電,最大可提供500mA的電流。USB設(shè)備也可以采用自供電方式。⑥低成本。USB接口電路簡(jiǎn)單,易于實(shí)現(xiàn),特別是低速設(shè)備,成本比串口和并口低。USB基礎(chǔ)知識(shí)(2)數(shù)據(jù)傳輸類型針對(duì)設(shè)備對(duì)系統(tǒng)資源需求的不同,USB規(guī)范中規(guī)定了四種不同的數(shù)據(jù)傳輸方式:①控制傳輸(Control),用來處理主機(jī)到USB設(shè)備的數(shù)據(jù)傳輸,包括設(shè)備控制、設(shè)備狀態(tài)查詢以及確認(rèn)命令,當(dāng)USB設(shè)備收到這些數(shù)據(jù)和命令后,將依據(jù)先進(jìn)先出的原則處理到達(dá)的數(shù)據(jù)。端點(diǎn)0只可以采用控制傳輸?shù)姆绞健"谂總鬏敚˙ulk),用于進(jìn)行批量的、非實(shí)時(shí)的數(shù)據(jù)傳輸。該方式不能保證傳輸?shù)乃俾?,但可以保證數(shù)據(jù)的可靠性,當(dāng)出現(xiàn)錯(cuò)誤時(shí),會(huì)要求發(fā)送方重新發(fā)送數(shù)據(jù)。通常打印機(jī)、掃描儀和數(shù)碼相機(jī)以這種方式與主機(jī)連接。USB基礎(chǔ)知識(shí)③同步傳輸(Isochronous),用于那些要求連續(xù)傳輸數(shù)據(jù),且對(duì)數(shù)據(jù)的正確性要求不高而對(duì)時(shí)間極為敏感的外部設(shè)備,如麥克風(fēng)、喇叭及電話等。同步傳輸方式以固定的傳輸速率,連續(xù)不斷地在主機(jī)與USB設(shè)備之間傳輸數(shù)據(jù)。在傳輸數(shù)據(jù)發(fā)生錯(cuò)誤時(shí),USB并不處理這些錯(cuò)誤,而是繼續(xù)傳送新的數(shù)據(jù)。同步傳輸方式的發(fā)送方和接收方都必須保證傳輸速率的匹配,否則會(huì)造成數(shù)據(jù)的丟失。④中斷傳輸(Interrupt),用來傳輸數(shù)據(jù)量較小,但需要及時(shí)處理,以達(dá)到實(shí)時(shí)效果的設(shè)備,如鼠標(biāo)、鍵盤、操縱桿等。USB基礎(chǔ)知識(shí)(3)USB總線協(xié)議

USB總線是一種輪詢方式的總線,主機(jī)控制端口初始化所有的數(shù)據(jù)傳輸,大部分總線事務(wù)涉及三個(gè)包的傳輸。按照傳輸前制定好的原則,在每次傳送開始時(shí),主機(jī)控制器發(fā)送一個(gè)描述傳輸種類、方向,USB設(shè)備地址和端點(diǎn)號(hào)的USB數(shù)據(jù)包,這個(gè)數(shù)據(jù)包通常稱為標(biāo)志包(tokenpacket)。標(biāo)志包發(fā)送后,發(fā)送端發(fā)送包含信息的數(shù)據(jù)包(datapacket),或表明沒有數(shù)據(jù)傳送,接收端相應(yīng)發(fā)送一個(gè)握手包(handshakepacket),表明是否傳送成功。USB基礎(chǔ)知識(shí)發(fā)送端和接收端之間的USB數(shù)據(jù)傳輸,在主機(jī)和設(shè)備的端口之間,可視為一個(gè)管道。管道有流和消息兩種類型,消息數(shù)據(jù)具有USB所定義的結(jié)構(gòu),而流數(shù)據(jù)沒有。管道與數(shù)據(jù)帶寬、傳送服務(wù)類型,端點(diǎn)特性(如方向和緩沖區(qū)大?。┯嘘P(guān)。多數(shù)管道在USB設(shè)備設(shè)置完成后存在,但有一個(gè)特殊的通道——缺省控制管道,它屬于消息管道,當(dāng)設(shè)備加電時(shí)即存在,為設(shè)備的設(shè)置、查詢狀況和輸入控制信息提供入口。二、S3C2410USB設(shè)備控制器

S3C2410芯片中集成有USB設(shè)備控制器,具有集成的USB收發(fā)器(12Mbit/s),批量傳輸?shù)腄MA接口,5個(gè)帶有FIFO的端點(diǎn),支持DMA接口在大端口上的接收和發(fā)送,并支持掛起和遠(yuǎn)程喚醒功能。USB設(shè)備控制器中,所有的寄存器都是通過字節(jié)或字方式進(jìn)行訪問,在小端和大端方式下,訪問的偏移地址會(huì)有所不同。

S3C2410USB設(shè)備控制器

通過操作相應(yīng)的控制寄存器、狀態(tài)寄存器、中斷寄存器和數(shù)據(jù)寄存器,可以管理和使用USB設(shè)備控制器提供的端點(diǎn)。其中,控制寄存器用于設(shè)置端點(diǎn)的工作模式、啟用端點(diǎn)的功能等;狀態(tài)寄存器用于查詢端點(diǎn)的當(dāng)前狀態(tài);中斷寄存器用于設(shè)置端點(diǎn)的中斷觸發(fā)和響應(yīng)功能;數(shù)據(jù)寄存器是設(shè)備與主機(jī)交換數(shù)據(jù)用的緩沖區(qū)。三、USB設(shè)備收發(fā)數(shù)據(jù)編程實(shí)例

本實(shí)例采用批量傳輸方式,實(shí)現(xiàn)了PC機(jī)端USB主機(jī)與實(shí)驗(yàn)板USB設(shè)備進(jìn)行數(shù)據(jù)的接收和發(fā)送。端點(diǎn)1為批量輸入端點(diǎn),端點(diǎn)3為批量輸出端點(diǎn)。端點(diǎn)3數(shù)據(jù)的批量傳輸由DMA接口實(shí)現(xiàn)。在所有的操作之前,必須對(duì)S3C2410的雜項(xiàng)控制器進(jìn)行如下設(shè)置:

rMISCCR=rMISCCR&~(1<<3); //使用USB設(shè)備而不是USB主機(jī)功能

rMISCCR=rMISCCR&~(1<<13); //使用USB端口1模式USB設(shè)備收發(fā)數(shù)據(jù)編程實(shí)例

(1)初始化USB

在使用USB之前必須要進(jìn)行初始化。USB主機(jī)和USB設(shè)備接口都需要48MHz的時(shí)鐘頻率。在S3C2410中,這個(gè)時(shí)鐘是由UPLL(USB專用PLL)來提供的。USB初始化的第一步就是要對(duì)UPLL控制器進(jìn)行設(shè)置。USB設(shè)備收發(fā)數(shù)據(jù)編程實(shí)例

在UXB1.x規(guī)范中,規(guī)定了5種標(biāo)準(zhǔn)的USB描述符:設(shè)備描述符(DeviceDescriptor)、配置描述符(ConfigurationDescriptor)、接口描述符(InterfaceDescriptor)、端點(diǎn)描述符(EndPointDescriptor)和字符串描述符(StringDescriptor)。每個(gè)USB設(shè)備只有一個(gè)設(shè)備描述符,而一個(gè)設(shè)備中可以包含一個(gè)或多個(gè)配置描述符,即USB設(shè)備可以支持多種配置。設(shè)備的每一個(gè)配置中又可以包含一個(gè)或多個(gè)接口描述符,即USB設(shè)備可以支持多種功能(接口),接口的特性通過接口描述符提供。在Embest

Edukit-III實(shí)驗(yàn)平臺(tái)的USB設(shè)備中只有一種配置,支持一種功能。關(guān)于設(shè)備描述符表的初始化及配置由下面的兩個(gè)函數(shù)實(shí)現(xiàn):USB設(shè)備收發(fā)數(shù)據(jù)編程實(shí)例

InitDescriptorTable(); //初始化描述符表

ConfigUsbd(); //設(shè)備的配置 在函數(shù)ConfigUsbd()中,將USB設(shè)備控制器的端點(diǎn)0設(shè)置為控制端點(diǎn),端點(diǎn)1設(shè)置為批量輸入端點(diǎn),端點(diǎn)3設(shè)置為批量輸出端點(diǎn),端點(diǎn)2和端點(diǎn)4暫時(shí)沒有使用。同時(shí),還使能了端點(diǎn)0,1,3的中斷和USB的復(fù)位中斷。

rEP_INT_EN_REG=EP0_INT|EP1_INT|EP3_INT; rUSB_INT_EN_REG=RESET_INT;

除此之外,初始化過程還對(duì)中斷服務(wù)程序入口等進(jìn)行了設(shè)置。USB設(shè)備收發(fā)數(shù)據(jù)編程實(shí)例

(2)USB中斷

S3C2410能夠接收56個(gè)中斷源的請(qǐng)求,當(dāng)它接收到來自USB設(shè)備的中斷請(qǐng)求時(shí),就會(huì)將SRCPND寄存器的INT_USBD置位,經(jīng)過仲裁之后,中斷控制器就向內(nèi)核發(fā)送IRQ中斷請(qǐng)求。(3)USB中斷服務(wù)例程 當(dāng)內(nèi)核接收USB設(shè)備的中斷請(qǐng)求之后,就會(huì)轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序運(yùn)行。這個(gè)中斷服務(wù)程序入口是在USB初始化時(shí)設(shè)置的。

pISR_USBD=(unsigned)IsrUsbd;

中斷服務(wù)程序IsrUsbd主要判斷中斷類型,再轉(zhuǎn)入相應(yīng)的程序進(jìn)行處理。USB設(shè)備收發(fā)數(shù)據(jù)編程實(shí)例

(4)USB讀寫

USB設(shè)備的讀寫通過管道來完成,管道式USB設(shè)備和USB主機(jī)之間數(shù)據(jù)通信的邏輯通道,它的物理介質(zhì)就是USB系統(tǒng)中的數(shù)據(jù)線。在設(shè)備端,管道的主體是端點(diǎn),每個(gè)端點(diǎn)占據(jù)各自的管道和USB主機(jī)通信。 所有的設(shè)備都需要有支持控制傳輸?shù)亩它c(diǎn),協(xié)議將端點(diǎn)0定義為設(shè)備默認(rèn)的控制端點(diǎn)。在設(shè)備正常工作之前,USB主機(jī)必須為設(shè)備分配總線上唯一的設(shè)備地址,并完成讀取設(shè)備的各種描述符,根據(jù)描述符的需求為設(shè)備的端點(diǎn)配置管道,分配帶寬等工作。另外,在設(shè)備的工作過程中,主機(jī)希望及時(shí)獲取設(shè)備的當(dāng)前狀態(tài),也是通過端點(diǎn)0來完成的。四、實(shí)驗(yàn)步驟本實(shí)例在運(yùn)行時(shí),需要借助USB數(shù)據(jù)傳送演示軟件DNW.exe一起調(diào)試并觀察實(shí)驗(yàn)結(jié)果。具體步驟如下:(1)編譯通過后,運(yùn)行程序。一定要在程序下載運(yùn)行正確后,才可以進(jìn)行安裝驅(qū)動(dòng)。(2)用USB線連接目標(biāo)板的USB接口到主機(jī)的USB接口,第一次運(yùn)行時(shí)將會(huì)出現(xiàn)驅(qū)動(dòng)安裝對(duì)話框,將安裝路徑指向到USB的driver文件夾,點(diǎn)擊確認(rèn)安裝。實(shí)驗(yàn)步驟(3)運(yùn)行調(diào)試工具DNW.exe,進(jìn)行適當(dāng)配置,選擇波特率為115200,使用COM1接口。注意USBPort的DownloadAddress設(shè)置應(yīng)該在系統(tǒng)的RAM空間,且不能和當(dāng)前運(yùn)行的程序空間重疊,例如0x30200000。如果設(shè)置正確,程序運(yùn)行時(shí),DNW的標(biāo)題欄上會(huì)顯示信息:[COM1,115200bps][USB:OK],表明串口和USB連接成功。(4)在SelectMenu中,選擇[1],給出要下載到的SDRAM地址,可以看到提示信息:USBhostisconnected.Waitingadownload.

選擇USBPort->Transmit,即可進(jìn)行文件的下載。 選擇USBPort->RxTest,接收來自USB設(shè)備端點(diǎn)1上發(fā)送的測(cè)試數(shù)據(jù)。 選擇USBPort->Status,可以觀察USB的狀態(tài)。

主要內(nèi)容1324串行口模塊程序設(shè)計(jì)紅外模塊設(shè)計(jì)液晶顯示模塊設(shè)計(jì)USB模塊程序設(shè)計(jì)5SD卡模塊程序設(shè)計(jì)IIS模塊程序設(shè)計(jì)接觸屏模塊程序設(shè)計(jì)PS/2模塊程序設(shè)計(jì)678一、SD卡概述SD卡由日本松下、東芝及美國(guó)SanDisk公司于1999年8月共同開發(fā)研制,是一種基于Flash的新一代存儲(chǔ)器,它的容量大,性價(jià)比高,體積小并且訪問接口簡(jiǎn)單,被廣泛應(yīng)用于各種數(shù)碼產(chǎn)品如手機(jī)、大容量存儲(chǔ)設(shè)備中。標(biāo)準(zhǔn)SD的外形尺寸是24mm×32mm×2.1mm,采用9芯的接口,CLK為時(shí)鐘線,CMD為命令/響應(yīng)線,DAT0-DAT3為雙向數(shù)據(jù)傳輸線,VDD、VSS1和VSS2為電源和地。SD卡系統(tǒng)支持SD模式和SPI模式,不同的通信模式下,SD卡的引腳定義不同。

SD卡概述SPI是串行的工作模式,速度相對(duì)較低,但是使用方便,只要MPU含有SPI接口均可使用。SD模式可以最多4線傳輸,因此速度比較快,由于SD卡的普及,越來越多的MPU內(nèi)部集成了SD控制器,簡(jiǎn)化了工作。本章僅以S3C2410為例討論最常用的SD協(xié)議。

SD卡概述SD總線是一個(gè)星型的總線結(jié)構(gòu),系統(tǒng)初始化時(shí),主控制器分別為每個(gè)設(shè)備分配一個(gè)設(shè)備地址,此后主控制器就可以根據(jù)此設(shè)備地址獨(dú)立操作該設(shè)備。SD總線通信基于命令和數(shù)據(jù)位流,SD命令由命令線CMD進(jìn)行傳輸,每個(gè)SD命令表示一個(gè)卡操作的開始,SD卡在收到命令后,會(huì)向主控制器發(fā)送一個(gè)應(yīng)答信號(hào),表示已經(jīng)接受了一個(gè)命令。應(yīng)答信號(hào)也傳輸在CMD線上。有小部分的命令沒有應(yīng)答信號(hào),這取決于命令類型。SD數(shù)據(jù)傳輸是雙向的,所有數(shù)據(jù)都在數(shù)據(jù)線上進(jìn)行傳輸,每個(gè)數(shù)據(jù)流都包括一個(gè)起始位和一個(gè)結(jié)束位。二、S3C2410的SD主控制器

S3C2410的SD主控制器支持MMC/SD卡和SDIO設(shè)備,它完成了協(xié)議上的很多工作,用戶只需要按照協(xié)議配置寄存器,以及按照協(xié)議流程對(duì)SD卡操作,就可以完成SD卡的功能了。S3C2410的SD卡接口電路如下圖所示:S3C2410的SD主控制器

S3C2410的SD卡接口電路:S3C2410的SD主控制器

使用S3C2410控制SD卡工作,需要配置的寄存器主要有以下幾個(gè):(1)SDI控制寄存器(SDICON)

SDICON寄存器主要用于完成SD卡基礎(chǔ)配置,包括大小端、中斷允許、模式選擇、時(shí)鐘使能等,它是可讀/寫的,地址為0x5A000000。

S3C2410的SD主控制器

(2)SDI波特率預(yù)分頻寄存器(SDIPRE)

SDIPRE主要用于對(duì)SDCLK的配置,它是可讀/寫的,地址為0x5A000004(3)SDI命令參數(shù)寄存器(SDICARG)

SDICARG寄存器用于存放指令的參數(shù),它是可讀/寫的,地址為0x5A000008(4)SDI命令控制寄存器(SDICCON)

SDICCON寄存器用于控制指令形式,配置SPI還是SDI指令,指令的反饋長(zhǎng)度,是否等待反饋,是否運(yùn)行指令,指令的索引等。它是可讀/寫的,地址為0x5A00000CS3C2410的SD主控制器

SD卡發(fā)送命令時(shí),需要按以下步驟配置寄存器:(1)向SDICARG寄存器中寫入命令參數(shù)。(2)定義命令形式并且通過設(shè)置SDICCON[8]位開始令。(3)當(dāng)SDISTA的特定標(biāo)志被設(shè)置時(shí),確認(rèn)SDI命令操作的結(jié)果,如果命令的類型為無答應(yīng)類型,那么這個(gè)標(biāo)記為SDICSTA[11],如果命令的類型為有答應(yīng)類型,那么這個(gè)標(biāo)記為SDICSTA[9]。(4)通過寫1到SDICSTA的標(biāo)記位上,從而清除相應(yīng)的位。三、SD卡的操作步驟

(1)初始化操作步驟:①配置時(shí)鐘,設(shè)置工作模式。在初始化時(shí),設(shè)備需要工作在一個(gè)較低的頻率,一般為400KHz。設(shè)置完時(shí)鐘和工作模式后,延時(shí)至少74SDCLK,等待SD卡內(nèi)部操作完成。②發(fā)送CMD0命令,初始化SD卡,讓SD卡進(jìn)入空閑態(tài),SD卡獲得一個(gè)缺省的地址0(相對(duì)卡地址RCA=0x0)。如果CS引腳被拉低,卡將轉(zhuǎn)到SPI模式。③發(fā)送ACMD41命令,判斷目標(biāo)卡是SD卡還是MMC卡。但是ACMD命令是特殊用途命令,使用之前應(yīng)該先發(fā)送CMD55命令來聲明。

SD卡的操作步驟④發(fā)送CMD2命令,以獲得SD卡的標(biāo)識(shí)號(hào)CID,驗(yàn)證SD卡是否接入。⑥配置高速時(shí)鐘,準(zhǔn)備數(shù)據(jù)傳輸。一般設(shè)置為20MHz-25MHz。⑦發(fā)送CMD7命令,進(jìn)入傳輸數(shù)據(jù)狀態(tài)。⑧發(fā)送ACMD6命令,設(shè)置總線寬度為4,默認(rèn)總線寬度為1。ACMD6命令在傳輸模式才有效,因此要在執(zhí)行完CMD7之后執(zhí)行。SD卡的操作步驟

(2)寫操作步驟:①單塊寫入發(fā)送CMD24命令,多塊寫入發(fā)送CMD25命令。②發(fā)送CMD12命令,終止寫操作。(3)讀操作步驟:①單塊讀取發(fā)送CMD17命令,多塊讀取發(fā)送CMD18命令。②發(fā)送CMD12命令,終止讀操作。 四、SD卡讀寫數(shù)據(jù)編程實(shí)例

本實(shí)例實(shí)現(xiàn)了通過S3C2410的SD卡接口,設(shè)置SD卡塊的大小為512字節(jié),通過查詢方式,向其中的一個(gè)塊寫入128個(gè)字,再讀出并在終端上回顯,同時(shí)顯示SD卡的標(biāo)識(shí)碼CID。(1)初始化操作 函數(shù)SD_card_init()對(duì)SD主控制器和SD卡進(jìn)行初始化,包括設(shè)置時(shí)鐘、工作模式、線寬等。SD卡讀寫數(shù)據(jù)編程實(shí)例

(2)寫操作函數(shù)Wt_Block()實(shí)現(xiàn)了對(duì)SD卡的塊進(jìn)行寫操作,根據(jù)block變量執(zhí)行單塊或多塊寫操作,把Tx_buffer數(shù)組中的數(shù)字1-128寫進(jìn)SD卡(3)讀操作讀操作與寫操作相對(duì)應(yīng),函數(shù)Rd_Block()實(shí)現(xiàn)了對(duì)SD卡的塊進(jìn)行讀操作,根據(jù)block變量執(zhí)行單塊或多塊讀操作,把SD卡塊中的數(shù)據(jù)讀到Rx_buffer數(shù)組中。代碼與Wt_Block非常相似,只是執(zhí)行的命令不同,單塊寫操作執(zhí)行命令CMD17,多塊寫操作執(zhí)行命令CMD18。五、實(shí)驗(yàn)操作步驟及現(xiàn)象

(1)使用串口線連接目標(biāo)板上的UART0和PC機(jī)的串口COM1,在PC機(jī)上運(yùn)行超級(jí)終端(波特率115200、1位停止位、無校驗(yàn)位、無硬件流控制),或者使用其他串口程序。使用ULINK2仿真器連接PC機(jī)的USB接口和目標(biāo)板上的JTAG接口。(2)打開SD_TEST工程,編譯鏈接后下載到FLASH中,運(yùn)行程序。實(shí)驗(yàn)操作步驟及現(xiàn)象(3)如果沒有插入SD卡,可以看到終端上不斷輸出信息:

CMD55Timeout! CMD41Timeout! Initializefail NoCardassertion將SD卡插入開發(fā)平臺(tái)上的SD卡插槽,可以看到輸出了寫入的數(shù)據(jù)0-128和SD卡的CID號(hào):實(shí)驗(yàn)操作步驟及現(xiàn)象InSDreadyInstand-by****4bitbus****Blocks=1[Blockwritetest,Pollingwrite]writedataok0000000100020003000400050006000700080009000a000b000c000d000e000f0010001100120013001400150016001700180019001a001b001c001d001e001f[Blockreadtest:Pollread]chkdataendreaddata0000000100020003000400050006000700080009000a000b000c000d000e000f0010001100120013001400150016001700180019001a001b001c001d001e001f811CID=3534453,44303247,80019d04,6a009c6f主要內(nèi)容1324串行口模塊程序設(shè)計(jì)紅外模塊設(shè)計(jì)液晶顯示模塊設(shè)計(jì)USB模塊程序設(shè)計(jì)5SD卡模塊程序設(shè)計(jì)IIS模塊程序設(shè)計(jì)接觸屏模塊程序設(shè)計(jì)PS/2模塊程序設(shè)計(jì)678一、IIS總線接口概述IIS(Inter-ICSound)總線是一種串行總線設(shè)計(jì)技術(shù),專門用于音頻設(shè)備之間的數(shù)據(jù)傳輸。S3C2410的IIS總線接口能用來連接一個(gè)外部8/16位立體聲音頻CODEC(編碼解碼器),既支持IIS總線數(shù)據(jù)模式,也支持MSB-justified數(shù)據(jù)模式。該接口提供基于FIFO的DMA傳輸模式而不是中斷模式,既可以同時(shí)發(fā)送和接收數(shù)據(jù),也可以只發(fā)送或只接收數(shù)據(jù)。

IIS總線接口概述

IIS總線接口如圖所示:IIS總線接口概述上圖中各部分功能描述如下: 總線接口、寄存器區(qū)和狀態(tài)機(jī)BRFC:負(fù)責(zé)控制總線接口邏輯和FIFO訪問。 兩個(gè)5位預(yù)分頻器IPSR:一個(gè)作為IIS總線接口的主時(shí)鐘發(fā)生器,另一個(gè)作為外部CODEC的時(shí)鐘發(fā)生器。

64字節(jié)大小的FIFO(TxFIFO和RxFIFO):發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)寫入TxFIFO,接收數(shù)據(jù)時(shí),數(shù)據(jù)從RxFIFO讀出。

IIS總線接口概述主IISCLK發(fā)生器SCLKG:主模式下,串行位時(shí)鐘由主時(shí)鐘產(chǎn)生。 通道發(fā)生器和狀態(tài)機(jī)CHNC:用來生成并控制IISCLK和IISLRCK。

16位的移位寄存器SFTR:在發(fā)送模式下,并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)輸出;在接收模式下,串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)輸入。二、S3C2410的IIS總線接口IIS總線僅處理音頻數(shù)據(jù),其他信號(hào)如控制信號(hào)等單獨(dú)傳送,基于減少引腳數(shù)目和布線簡(jiǎn)單的目的,IIS總線只由三根串行線組成:時(shí)分復(fù)用的數(shù)據(jù)通道線SD、字選擇線WS和時(shí)鐘線SCK。S3C2410的IIS總線接口S3C2410處理器中與IIS相關(guān)的信號(hào)線有5根: (1)串行數(shù)據(jù)輸入IISDI:對(duì)應(yīng)IIS總線接口中的SD信號(hào),方向?yàn)檩斎搿?(2)串行數(shù)據(jù)輸入IISDO:對(duì)應(yīng)IIS總線接口中的SD信號(hào),方向?yàn)檩敵觥?(3)左右通道選擇IISLRCK:對(duì)應(yīng)IIS總線接口中的WS信號(hào),即采樣時(shí)鐘。 (4)串行位時(shí)鐘IISCLK:對(duì)應(yīng)IIS總線接口中的SCK信號(hào)。 (5)音頻系統(tǒng)主時(shí)鐘CODECLK:一般為采樣頻率的256倍或384倍,符號(hào)為256fs或384fs,其中fs為采樣頻率。CODECLK通過處理器主時(shí)鐘分頻獲得,可以通過在程序中設(shè)定分頻寄存器獲取,分頻因子可以為1到32。

S3C2410的IIS總線接口S3C2410的IIS總線接口有三種工作模式: (1)普通傳輸模式 在普通傳輸模式下,對(duì)于發(fā)送和接收FIFO,IIS有準(zhǔn)備好標(biāo)志位。當(dāng)FIFO準(zhǔn)備發(fā)送數(shù)據(jù)時(shí),如果發(fā)送FIFO非空,則該標(biāo)志位置1;如果發(fā)送FIFO為空,則該標(biāo)志位置0。準(zhǔn)備接收數(shù)據(jù)時(shí),如果接收FIFO不滿,則該標(biāo)志位置1,表示FIFO可以接收數(shù)據(jù)。如果接收FIFO已滿,則該標(biāo)志位置0。這些標(biāo)志位決定CPU何時(shí)讀寫FIFO。 (2)DMA傳輸模式 在這種模式下,發(fā)送或接收FIFO的存取由DMA控制器來實(shí)現(xiàn),由FIFO就緒標(biāo)志位來自動(dòng)請(qǐng)求DMA服務(wù)。S3C2410的IIS總線接口S3C2410的IIS總線接口有三種工作模式: (3)發(fā)送和接收模式 在這種模式下,IIS總線接口可以同時(shí)發(fā)送和接收數(shù)據(jù)。

IIS總線接口可以由處理器S3C2410的IIS模塊和音頻芯片UDA1341硬件實(shí)現(xiàn),UDA1341TS作為音源的控制器,把采集到的音頻模擬信號(hào)通過配置其寄存器,轉(zhuǎn)換成IIS格式的數(shù)字信號(hào)送給S3C2410的IIS控制器,然后CPU使用DMA控制器把得到的數(shù)字信號(hào)存放到一塊內(nèi)存空間上。因此需要關(guān)注的是正確地配置IIS模塊和UDA1341芯片,音頻數(shù)據(jù)的傳輸反而比較簡(jiǎn)單。三、IIS總線的特殊控制器

處理器中與IIS相關(guān)的寄存器有五個(gè):(1)IIS控制寄存器IISCON

通過該寄存器可以獲取FIFO的準(zhǔn)備好狀態(tài)、啟動(dòng)或停止發(fā)送和接收時(shí)的DMA請(qǐng)求,使能IISLRCK、分頻功能和IIS接口。IISCON寄存器是可讀/寫的,對(duì)于小端/半字、小端/字或大端/字系統(tǒng),地址為0x55000000;對(duì)于大端/半字系統(tǒng),地址為0x55000002IIS總線的特殊控制器

(2)IIS模式寄存器IISMOD IISMOD寄存器選擇主/從、發(fā)送/接收模式,設(shè)置有效電平、數(shù)據(jù)通道位,選擇CODECLK和IISLRCK頻率。IISMOD是可讀/寫的,對(duì)于小端/半字、小端/字或大端/字系統(tǒng),地址為0x55000004;對(duì)于大端/半字系統(tǒng),地址為0x55000006(3)IIS分頻寄存器IISPSR。

IISPSR主要用于設(shè)置分頻器的系數(shù)值,該寄存器是可讀/寫的,對(duì)于小端/半字、小端/字或大端/字系統(tǒng),地址為0x55000008;對(duì)于大端/半字系統(tǒng),地址為0x5500000AIIS總線的特殊控制器

(4)IISFIFO控制寄存器(IISFCON)

IISFCON用于設(shè)置發(fā)送/接收FIFO的傳輸模式、使能選擇以及數(shù)據(jù)計(jì)數(shù)等,該寄存器是可讀/寫的,對(duì)于小端/半字、小端/字或大端/字系統(tǒng),地址為0x5500000C,對(duì)于大端/半字系統(tǒng),地址為0x55000012(5)IISFIFO寄存器(IISFIFO)

IISFIFO主要用于IIS傳輸或接收數(shù)據(jù),IIS總線接口包含兩個(gè)64位的FIFO用于發(fā)送和接收模式。IISFIFO寄存器是可讀/寫的,對(duì)于小端/半字系統(tǒng),地址為0x55000010;對(duì)于大端/半字系統(tǒng),地址為0x55000012四、音頻芯片UDA1341TS說明UDA1341TS是Philips公司的音頻數(shù)字信號(hào)編譯碼器,可將立體聲模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),同樣也能把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),并可用PGA(可編程增益控制),AGC(自動(dòng)增益控制)對(duì)模擬信號(hào)進(jìn)行處理;對(duì)于數(shù)字信號(hào),該芯片提供了DSP(數(shù)字音頻處理)功能。實(shí)際使用中,UDA1341TS廣泛應(yīng)用于MD、CD、PC和數(shù)碼攝像機(jī)等。UDA1341TS提供兩組音頻輸入信號(hào)線、一組音頻信號(hào)輸出線,一組IIS總線接口信號(hào),一組L3總線。UDA1341TS與IIS接口的連接電路如圖5-17所示。S3C2410的五根IIS總線接口信號(hào)線分別與UDA1341TS的DATA0、DATA1、WS、BCK和SYSCLK相連。

音頻芯片UDA1341TS說明UDA1341TS的L3總線,包括微處理器接口數(shù)據(jù)L3DATA、微處理器接口模式L3MODE和微處理器接口時(shí)鐘L3CLOCK三根信號(hào)線。當(dāng)UDA1341TS芯片工作于微控制器輸入模式時(shí),微處理器通過L3總線對(duì)UDA1341TS中的數(shù)字音頻處理參數(shù)和系統(tǒng)控制參數(shù)進(jìn)行配置。S3C2410處理器中沒有L3總線專用接口,可以利用通用I/O口進(jìn)行控制。音頻芯片UDA1341TS說明

UDA1341TS與IIS接口的連接電路:

五、WAV文件格式

WAV格式的文件是多媒體中使用的聲波文件格式之一,在Windows操作系統(tǒng)下,開機(jī)或關(guān)機(jī),以及打開文件出錯(cuò)時(shí)都會(huì)聽到一些熟悉的聲音,這些聲音就是WAV格式的音頻文件。WAV文件格式與MP3或一些視頻文件相比要簡(jiǎn)單得多,它以RIFF(ResourceInterchangeFileFormat,資源互換文件格式)格式為標(biāo)準(zhǔn),包括RIFFhead、RIFFtype、fmtchunk和音頻datachunk四個(gè)部分,下面對(duì)這四個(gè)部分進(jìn)行具體介紹。

WAV文件格式

(1)RIFFheadRIFFhead大小為8字節(jié),前4個(gè)字節(jié)以“RIFF”作為標(biāo)示,后4個(gè)字節(jié)size表示整個(gè)WAV文件的大小,不包括RIFFhead,即FileLen-8=size。(2)RIFFtype RIFFtype大小為4字節(jié),內(nèi)容為“WAVE”,表示該文件是WAV文件。WAV文件格式(3)fmtchunk

fmtchunk的格式如表5-35所示,一般情況下大小Size為16,此時(shí)沒有最后2個(gè)字節(jié)的附加信息;如果為18,則最后多了2個(gè)字節(jié)的附加信息,主要由一些軟件制作成的WAV格式中含有2個(gè)字節(jié)的附加信息。(4)datachunk datachunk為整個(gè)音頻文件的主體,是真正保存WAV數(shù)據(jù)的地方,前4個(gè)字節(jié)為標(biāo)示“data”,然后是大小為4字節(jié)的Size,表示音頻數(shù)據(jù)的大小,接著就是WAV數(shù)據(jù)。根據(jù)fmtchunk中斷聲道數(shù)及采樣bit數(shù),音頻數(shù)據(jù)的形式也不同。六、音頻播放的編程實(shí)例

本實(shí)例實(shí)現(xiàn)了用DMA方式播放wav格式的文件,要播放的音頻文件以數(shù)組的形式存放在內(nèi)存區(qū)。(1)IIS初始化

主要任務(wù)是設(shè)置通用I/O端口,定義各管腳功能。(2)播放音頻

函數(shù)iis_play_wave()實(shí)現(xiàn)了播放音頻的功能。參數(shù)nTimes表示播放的次數(shù),pWavFile表示wav文件轉(zhuǎn)換后的數(shù)組存放的內(nèi)存地址,nSoundLen表示這個(gè)數(shù)組的長(zhǎng)度。七、實(shí)驗(yàn)操作步驟及現(xiàn)象(1)使用串口線連接目標(biāo)板上的UART0和PC機(jī)的串口COM1,在PC機(jī)上運(yùn)行超級(jí)終端(波特率115200、1位停止位、無校驗(yàn)位、無硬件流控制),或者使用其他串口程序。使用ULINK2仿真器連接PC機(jī)的USB接口和目標(biāo)板上的JTAG接口,將耳機(jī)與實(shí)驗(yàn)箱的AUDIOOUT接口相連。實(shí)驗(yàn)操作步驟及現(xiàn)象(2)打開iis_test工程,編譯鏈接后下載到FLASH中,運(yùn)行程序后,按照提示按下“1”后可以通過耳機(jī)聽到WAV格式的音頻循環(huán)播放。(3)如要播放其他WAV格式的音頻文件,需先將其轉(zhuǎn)換成數(shù)組格式。運(yùn)行格式轉(zhuǎn)換工具Data2Hex,如圖5-18所示,點(diǎn)擊“打開文件”,選擇要轉(zhuǎn)換的WAV音頻文件,選擇轉(zhuǎn)換后的文件名以及存儲(chǔ)路徑,“偏移量”一欄填“0”,表示從音頻文件開頭開始轉(zhuǎn)換,選擇想要轉(zhuǎn)換的數(shù)據(jù)長(zhǎng)度,點(diǎn)擊“生成51數(shù)組”后退出即可。

主要內(nèi)容1324串行口模塊程序設(shè)計(jì)紅外模塊設(shè)計(jì)液晶顯示模塊設(shè)計(jì)USB模塊程序設(shè)計(jì)5SD卡模塊程序設(shè)計(jì)IIS模塊程序設(shè)計(jì)接觸屏模塊程序設(shè)計(jì)PS/2模塊程序設(shè)計(jì)678一、觸摸屏工作原理觸摸屏(TouchScreenPanel,TSP)按其技術(shù)原理可以分為五類:矢量壓力傳感式、電阻式、電容式、紅外線式和表面聲波式,其中電阻式觸摸屏在嵌入式系統(tǒng)中用的較多。電阻式觸摸屏是一個(gè)多層的復(fù)合膜,由一層玻璃或有機(jī)玻璃作為基層,其表面涂有一層透明導(dǎo)電層,最上面是一層外表面經(jīng)過硬化處理從而光滑防刮的塑料層,其內(nèi)表面也涂有一層透明導(dǎo)電層,在兩個(gè)導(dǎo)電層之間有許多細(xì)小的透明隔離點(diǎn)把它們隔開絕緣。當(dāng)手指觸摸屏幕時(shí),平常絕緣的兩個(gè)導(dǎo)電層在觸摸點(diǎn)處就有了接觸。觸摸屏工作原理檢測(cè)器檢測(cè)到這個(gè)接通后,其中一個(gè)導(dǎo)電層接通Y軸方向的5V均勻電壓場(chǎng),另一導(dǎo)電層將接觸點(diǎn)的電壓引至控制電路進(jìn)行A/D轉(zhuǎn)換,將得到的電壓值與5V相比即可得知觸摸點(diǎn)的Y軸坐標(biāo)。同理可得知觸摸點(diǎn)的X軸坐標(biāo)。這是所有電阻式觸摸屏共同的基本原理。電阻式觸摸屏根據(jù)信號(hào)線數(shù)又分為四線、五線、六線…等類型,信號(hào)線數(shù)越多,技術(shù)越復(fù)雜,坐標(biāo)定位也越精確。Embest

EduKit-III采用四線式電阻觸摸屏,點(diǎn)數(shù)為320×240。二、S3C2410的觸摸屏

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論