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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

UBRDIVn的值可以由以下表達式確定:

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

UART操作(7)回送模式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

五、UART編程實例

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

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

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

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

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

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

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

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

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

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

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

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

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

S3C2410的LCD控制器

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

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

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

三、STNLCD控制器操作

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

EduKit-III實驗平臺采用的是STNLCD。四、點陣字庫原理

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

點陣字庫原理

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

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

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

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

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

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

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

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

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

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

LCDCON5寄存器是可讀/寫的,地址是0x4D000000,主要用于確定相關(guān)信號的格式和極性(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)藍色查找表寄存器(BLUELUT)

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

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

TPAL寄存器主要功能包括是否開啟臨時調(diào)色板以及設置臨時調(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ā)級別以及屏蔽相關(guān)中斷六、LCD顯示的編程實例

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

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

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

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

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

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

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

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

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

S3C2410USB設備控制器

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

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

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

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

(1)初始化USB

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

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

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

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

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

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

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

(2)USB中斷

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

pISR_USBD=(unsigned)IsrUsbd;

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

(4)USB讀寫

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

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

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

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

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

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

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

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

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

S3C2410的SD主控制器

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

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

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

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

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

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

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

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

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

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

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

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

IIS總線接口概述

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UDA1341TS與IIS接口的連接電路:

五、WAV文件格式

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

WAV文件格式

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

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

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

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

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

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

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

溫馨提示

  • 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

提交評論