Exynos4412设备驱动和测试程序设计[共12页]

上传人:哈**** 文档编号:136888905 上传时间:2020-07-03 格式:DOCX 页数:11 大小:60.13KB
返回 下载 相关 举报
Exynos4412设备驱动和测试程序设计[共12页]_第1页
第1页 / 共11页
Exynos4412设备驱动和测试程序设计[共12页]_第2页
第2页 / 共11页
Exynos4412设备驱动和测试程序设计[共12页]_第3页
第3页 / 共11页
Exynos4412设备驱动和测试程序设计[共12页]_第4页
第4页 / 共11页
Exynos4412设备驱动和测试程序设计[共12页]_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《Exynos4412设备驱动和测试程序设计[共12页]》由会员分享,可在线阅读,更多相关《Exynos4412设备驱动和测试程序设计[共12页](11页珍藏版)》请在金锄头文库上搜索。

1、Exynos4412设备驱动及测试程序设计实验报告15281099刘梓麟计算机科学与技术2018年4月15日一、实验目的1. 理解Text LCD设备在4412系统中的设备端口定义2. 学握用户程序借助于系统调用对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函数中使用的命令参数。022:#define TEXTLCD_ON1023:#de仃ne TEXTLCD_OFF2024:廿define TEXTLCD INIT3025:itdefine TEXT_CLEAR4026:027:ndefine TEXT_LINE15028:廿de Fine TEXTJJNE26 runCommand()按照时序,向Text LCD发送控制命令。38行的数据为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写显示数据。第48行,RS为1,写数据寄存器;第50行,使能EN为1, 同时送出数据;第52行,EN变为0。 控制Text LCD函数56: clearDisplayO清屏,并把光标返回到HOME位置。62:不改变DD RAM (显示)内容,只把光标放到Home的位置。68:当读或写LCD数据时,要决定增加(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:设置接口的数据传输长度为8比特(DL=1)或4比特(DL=O):设置显示行数为2行(21) 或者1行(N=0),并且把字符字体指定为5X10点阵(21)或者5X7点阵(F=0)。当TextLCD模块连接电源后,需要50ms的复位时间,所以,向TextLCD发送命令,要在加电 后等待一段时间(大于50ms)。另外,当接口使用4位传输数据时,要先传送高位4位,再 传送低4位。103:指定显示存储器DDRam的地址。110:读LCD模块内部忙标Busy Flag

6、(BF)以及读取地址计数器对应的内容。LCD模块执行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发出一个操作控制命令后,可以通过读取 BF的方式,提高传输效率。当MCU读到BF为1时,需要等待;直到BF为0后,才发送下 一个控制命令。 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:接口传输数据的长度:8;显示线数:2;字符点阵:5X7o137:把display设置为on,不显示光标,光标不闪烁。139:读写一数据后,地址自动增加。不滚屏显示。 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()函数输出显示字符串。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控制寄存器的数据位结构。PhZalAddiPss0x0500_0050Piezo_Ctl_RegBIT 1514131211109876543210Piezo表示的八位寄存器,音阶数据如下。序号音阶数据1哆0x012#来0x313来0x024#咪0x325咪0

13、x036发0x047#唆0x339唆0x0510#拉0x3411拉0x0612#西0x3513西0x0714哆0x1115#来0x4116来0x1217#咪0x4218咪0x1319发0x1420#唆0x4321唆0x1522#拉0x4423拉0x1624#西0x4525西0x1726哆0x2127#来0x5128来0x2229#咪0x5230咪0x2331发0x2432#唆0x5333唆0x2534#拉0x5435拉0x2636#西0x5537西0x27表2-4-2用Piezo表示的音阶三、实验结果1. 显示字符串由两行变为一行int lengthoflinel;全局变量在fpga_text

14、lcd_write()函数中,用全局变Slengthiflinel保存length的值。 len gthofline1=length;在 fpga_textlcd_ioctl()函数中,把 case TEXTLCD_LINE2 中 setD D Ram Address函数的参数修改为lengthoflinel,即可在第一行内容后继续显示原来第二行的内容。2. 显示字符的左移(或右移)功能在 case TEXTLCD_LINE1 和 case TEXTLCD_LINE2 后分另U力口入一层循 环,循环中加入一行代码:cursorOrDisplayshift (1, 0)即可实现输入内 容的左移,将第二个参数修改为1即可实现右移。3. 显示字符的卷屏左移(或右移)功能在 case TE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号