Exynos4412設備驅動和測試程序設計_第1頁
Exynos4412設備驅動和測試程序設計_第2頁
Exynos4412設備驅動和測試程序設計_第3頁
Exynos4412設備驅動和測試程序設計_第4頁
Exynos4412設備驅動和測試程序設計_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Exynos4412設備驅動及測試程序設計實驗報告15281099劉梓麟計算機科學與技術2018年4月15日一、實驗目的1. 理解Text LCD設備在4412系統(tǒng)中的設備端口定義2. 學握用戶程序借助于系統(tǒng)調用對Text LCD控制的原理3. 掌握TextLCD驅動程序設計的主要內容4. 完成TextLCD測試程序設計二、實驗原理1. TextLCD驅動程序 1.1功能及原理 定義Text LCD設備地址值。012: define TEXTLCD.ADDRESS 0x05000010013: define TEXTLCD_ADDRESS_RANGE 0x1000 為了控制Text LCD,定

2、義ioctlO函數(shù)中使用的命令參數(shù)。022:#define TEXTLCD_ON1023:#de仃ne TEXTLCD_OFF2024:廿define TEXTLCD INIT3025:itdefine TEXT_CLEAR4026:027:ndefine TEXT_LINE15028:廿de Fine TEXTJJNE26 runCommand()按照時序,向Text LCD發(fā)送控制命令。38行的數(shù)據(jù)為0x0100表示EN(enable)信號。033void runCommand(void)034035command &= OxOOFF;036*textlcd_ioremap =comman

3、d0x0000;037udelay (1000);038*textlcd_ioremap =command0x0100;039udelay (1000);040*textlcd_ioremap =command0x0000;041udelay (1000);042044: void writeCharacter(char ch)045: 046: unsigned short int data;047: data 二 ch & OxOOFF;048: *textlcd_ioremap = 0x0400;049: udelay(1000);050: *textlcd_ioremap = data

4、 | 0x0500;051: udelay(1000);052: *textlcd_ioremap = data 0x0400;053: udelay (1000);054: 向Text LCD寫顯示數(shù)據(jù)。第48行,RS為1,寫數(shù)據(jù)寄存器;第50行,使能EN為1, 同時送出數(shù)據(jù);第52行,EN變?yōu)?。 控制Text LCD函數(shù)56: clearDisplayO清屏,并把光標返回到HOME位置。62:不改變DD RAM (顯示)內容,只把光標放到Home的位置。68:當讀或寫LCD數(shù)據(jù)時,要決定增加(I/D=l)或減少(1/0=0)光標位置,還要決定卷屏 (S=l)或不卷屏(S=0) o75:設

5、置D顯示文本,C顯示光標,或C閃爍光標。82:決定把畫面(S/C=l)或光標(S/C=O)向右(R/Z=l)或向右(R/L=O)移動。89:設置接口的數(shù)據(jù)傳輸長度為8比特(DL=1)或4比特(DL=O):設置顯示行數(shù)為2行(21) 或者1行(N=0),并且把字符字體指定為5X10點陣(21)或者5X7點陣(F=0)。當TextLCD模塊連接電源后,需要50ms的復位時間,所以,向TextLCD發(fā)送命令,要在加電 后等待一段時間(大于50ms)。另外,當接口使用4位傳輸數(shù)據(jù)時,要先傳送高位4位,再 傳送低4位。103:指定顯示存儲器DDRam的地址。110:讀LCD模塊內部忙標Busy Flag

6、(BF)以及讀取地址計數(shù)器對應的內容。LCD模塊執(zhí)行056:void clearDisplay(void)062:void returnllomc(void)068:void entryModeSet(int increase, int shift)075:void displayOnOffControl(int display, int cursor, int blink)082:void cursorOrDisplayshift(int serecnOrCursor, int rightOrLeft)089:void setFunctionSet(int dataLcngth, int r

7、ow, int font)/096: void setCGRamAddress(int address)103: void setDDRamAddress(int address)110: void readBusyFlagAndAddrcss(int *pBusyFlag, int *pAddressCounter)每個操作控制命令時需要一定的時間,所以當MCU發(fā)出一個操作控制命令后,可以通過讀取 BF的方式,提高傳輸效率。當MCU讀到BF為1時,需要等待;直到BF為0后,才發(fā)送下 一個控制命令。 initializeTextLcd()134: void initializeTextLcd(

8、void)135: 136: setFunctionSet (lt 1, 0): /I da taken: 8; 1 line: 2; 0 font: 5X7 dot137: displayOnOffControl(1, 0, 0) ; /I display on;0 cursor off;0 cursor blink off 138: clearDisplayO ;139: entryModeSet(1, 0) ; / 1 after data is read or written, curor pos increase; 0 screen scroll off140: returnllom

9、eO ;141: 136:接口傳輸數(shù)據(jù)的長度:8;顯示線數(shù):2;字符點陣:5X7o137:把display設置為on,不顯示光標,光標不閃爍。139:讀寫一數(shù)據(jù)后,地址自動增加。不滾屏顯示。 IoctlO202switch (cmd) 203case TEXTLCD_ON:204displayOnOffControl (1, 0, 0);205break;206case TEXTLCD_OFF:207displayOnOffControl (0, 0, 0);208break;209case TEXTLCD_INIT:210initializeTextLcd();211break;212cas

10、e TEXT_CLEAR:213clearDisplay ();214break;215case TEXT_LINE1:216setDDRamAddress(0x00);217break;218case TEXT_LINE2:219setDDRamAddress (0x40);220break;2. TextLCD測試程序2.1功能及原理 打開設備文件打開TextLcd設備驅動程序。驅動程序的路徑是“/dev/fpga_textlcd”。Fd為設備文件024: fd = open(/dev/fpga_textlccT, 0_WR0NLY); 標識符。OJVRONLY表示以只寫的形式打開。 Te

11、xtLCD初始化和關閉操作015: ioctl(fd, TEXTLCD_INIT);035: ioctl(fd, TEXTLCD_OFF); TextLCD顯示輸出028:ioctl (fd,TEXTLCD CLEAR);029:ioctl (fd,TEXTLCD_LINE1);030:write(fd,msgsOj, strlen(msgs0);031:ioctl (fd,TEXTLCD_LINE2);032:write (fd,msgs1, strlen(msgsl);28:清屏。29-31:通過操作命令,設置Text LCD顯示格式。32:使用write()函數(shù)輸出顯示字符串。3KeyP

12、ad原理M3 Deivce(DipSW Dot. OLED . etc.)CS9FPGA ChipS4412圖2-3-1 M3楔塊的keypad和4412的連接關系8。圖2-3-2 M3模塊的keypad原理圖3394.蜂鳴器原理PiezoController包含一個八位的寄存器Piezo,由控制寄存器控制。表1-4-1表示的是Piezo控制寄存器的數(shù)據(jù)位結構。PhZalAddiPss0x0500_0050Piezo_Ctl_RegBIT 1514131211109876543210Piezo表示的八位寄存器,音階數(shù)據(jù)如下。序號音階數(shù)據(jù)1哆0x012#來0x313來0x024#咪0x325咪0

13、x036發(fā)0x047#唆0x339唆0x0510#拉0x3411拉0x0612#西0x3513西0x0714哆0x1115#來0x4116來0x1217#咪0x4218咪0x1319發(fā)0x1420#唆0x4321唆0x1522#拉0x4423拉0x1624#西0x4525西0x1726哆0x2127#來0x5128來0x2229#咪0x5230咪0x2331發(fā)0x2432#唆0x5333唆0x2534#拉0x5435拉0x2636#西0x5537西0x27表2-4-2用Piezo表示的音階三、實驗結果1. 顯示字符串由兩行變?yōu)橐恍衖nt lengthoflinel;全局變量在fpga_text

14、lcd_write()函數(shù)中,用全局變Slengthiflinel保存length的值。 len gthofline1=length;在 fpga_textlcd_ioctl()函數(shù)中,把 case TEXTLCD_LINE2 中 setD D Ram Address函數(shù)的參數(shù)修改為lengthoflinel,即可在第一行內容后繼續(xù)顯示原來第二行的內容。2. 顯示字符的左移(或右移)功能在 case TEXTLCD_LINE1 和 case TEXTLCD_LINE2 后分另U力口入一層循 環(huán),循環(huán)中加入一行代碼:cursorOrDisplayshift (1, 0)即可實現(xiàn)輸入內 容的左移,

15、將第二個參數(shù)修改為1即可實現(xiàn)右移。3. 顯示字符的卷屏左移(或右移)功能在 case TEXTLCD_LINE1 和 case TEXTLCD_LINE2 后分別加入一行代 碼entryModeSet (1, 1)可以實現(xiàn)卷屏。4. 綜合編程編寫新的測試函數(shù),并導入之前的keypad, piezo驅動程序:#inelude #inelude #include #inelude #inelude #include textlcd.hint main(void)int fd_keypadJ fd_piezo, fd_textlcd;char buf20;char msg16 = 0;unsigne

16、d char inputNumber;unsigned char nullValue = 0x00;unsigned char values =0x11 0x12, 0x13 0x14, 0x15, 0x16, 0x17, 0x21; fd_keypad = open(/dev/fpga_keypad3O_RDWR);fd_piezo = open(H/dev/fpga_piezoO_RDWR);fd_textlcd = open (* /dev/f pga_text 1 cd H, O_RDWR); if(fd_keypad 0) printf( Device Open ERROR!n);r

17、eturnif(fd_piezo 0)printf(Device Open ERROR!nH);return -1;if(fd_textlcd 0)printf(Device Open ERROR!n”);returnbuf0 = 0;buf1 = 0;char temp2;printf(Please push the button !n); ioctl(fd_textlcd, TEXTLCD_INIT);/初始化循環(huán)while(l)read(fd_keypadJbuf 20); /讀鍵盤號printf(,%srn, buf);/獲取鍵盤號對應的數(shù)字1-8if(buf0 =p)inputNum

18、ber = 0;else if(bufl = 32)inputNumber = buf0 - 48;/輸出對應的音符printf(input:%dn”, inputNumber);write(fd_piezo &valuesinputNumber-11); ioctl(fd_textlcd, TEXTLCD_CLEAR);/輸出對應的textlcd符號switch(inputNumber)case 1:msg0 = V;ioctl(fd_textlcd, TEXTLCD_LINE1);write(fd_textledmsg, strlen(msg); break;case 2:msg0 = O; ioctl(fd_textlcdJ write(fd_textled, break;case 3:msg0 = J3J; ioctl(fd_textled, write(fd_tex

溫馨提示

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

最新文檔

評論

0/150

提交評論