当前位置:文档之家› arm实验报告

arm实验报告

电子科技大学成都学院实验报告册课程名称:嵌入式系统开发实践姓名:段定杰学号:1140710726院系:微电子技术系专业:集成电路设计与集成系统(嵌入式)教师:李伟2014 年6 月14 日实验一:基于S3C2440 IIC控制一、实验目的:本次实验的目的是通过S3C2440的IIC接口,向EEPROM芯片AT24C02A写入8个数据,然后再将所写的数据读出,并显示在串口调试工具上。

二、实验原理和内容:IIC外接EEPROM的硬件原理图:为了控制多主控 IIC 总线操作,必须写入值到以下寄存器中:–多主控IIC总线控制寄存器,IICCON–多主控IIC总线控制/状态寄存器,IICSTAT–多主控IIC总线 Tx/Rx 数据移位寄存器,IICDS–多主控IIC总线地址寄存器,IICADD当释放了IIC总线时,SDA和SCL线应该都保持为高电平。

一个高到低SDA 的变化可以启动一个起始条件。

SCL稳定保持在高电平时的一个低到高SDA的变化可以启动一个停止条件。

起始和停止条件通常由主设备产生。

第一个数据字节为7位地址值,其在启动起始条件后放到总线上,可以确定出主设备要选择的从设备。

第8位是决定传输方向(读或写)。

每个放到 SDA线上的字节都应该总共为8位。

字节可以在总线传输操作期间无限制的发送或接收。

数据通常从最高有效位(MSB)开始始发送,并且每个字节应该立即通过应答(ACK)位跟上。

实验内容:触摸屏的校准设计中通过IIC总线来存储校准参数到EEPROM,以便以后校准时可以随时读出。

三:实验步骤:1、首先在ADS上建立一个工程,工程名为IIC,然后选择一个合适的路径存放。

2、将光盘中TQ2440测试程序里面inc和src文件夹下的2440addr.h、2440lib.h、2440slib.h、def.h、Nand.h、Option.h、2440addr.inc、Memcfg.inc、Option.inc、2440init.s、2440slib.s、2440lib.c、nand.c这13个文件依次拷贝到刚才所建工程的文件夹下。

3、新建一个源文件,命名为IIC.c,存放到工程名为IIC的文件夹下。

4、在IIC.mcp下创建一个分组,取名为startcode,然后将前面拷贝的3个文件2440init.s、2440slib.s、nand.c依次添加到以startcode命名的文件夹下。

5、将IIC.c添加到工程里面去。

6、配置DebugRel Settings(参考实验一)。

7、在IIC.c里面进行程序的书写。

8、编译所写程序。

9、打开串口调试工具,将波特率设为115200。

10、将开发板、仿真器、串口线和电脑正确连接,打开Hjtag软件,调试程序。

四、实验数据和结果:1.定义一个延迟函数:2.IIC的写函数:void wr24c02(unsigned char worAddr,unsigned char *buffer,int date){int i;flag=1;rIICDS=devaddr;rIICCON=~0x10;rIICSTAT=0xf0;while(flag==1){delay(100);flag=1;rIICDS=worAddr;rIICCON=~0x10;while(flag==1){delay(100);for(i=0;i<date;i++){flag=1;rIICDS=*(buffer+i);rIICCON=~0x10;while(flag==1)delay(100);}rIICSTAT=0xd0;rIICCON=0xe0;delay(100);}}}3.IIC的读函数:void rd24c02(unsigned char worAddr,unsigned char *buffer,int date) {int i;unsigned char temp;flag=1;rIICDS=devaddr;rIICCON&=~0x10;rIICSTAT=0xf0;while(flag==1)delay(100);flag=1;rIICDS=worAddr;rIICCON&=~0x10;while(flag==1)delay(100);flag=1;rIICDS=devaddr;rIICCON&=~0x10;rIICSTAT=0xb0;while(flag==1)delay(100);flag=1;temp=rIICDS;rIICCON&=~0x10;while(flag==1)delay(100);for(i=0;i<date;i++){flag=1;if(i==date-1){rIICCON&=~0x80;}*(buffer+i)=rIICDS;rIICCON&=~0x10;while(flag==1)delay(100);}rIICSTAT=0x90;rIICCON=0xe0;delay(100);}实验结果:你在串口调试工具上写入一个数字或者字母,它会将这个数字或者字母通过调试工具读出来。

五:实验总结:这是本学期的第一个实验是基本S3C2440的IIC控制,它是要求通过串口调试工具把写出来的数据通过串口接口读出来。

实验二:基于S3C2440 空心圆显示一、实验目的:1.学会通过S3C2440来驱动外部3.5寸TFT屏幕,并且在屏幕上画出两个外切空心圆。

2.学会坐标的计算。

3.掌握TFT型LCD屏初始化寄存器的配置方法,以及屏显示的颜色控制方法。

二、实验原理和内容:人机交互是嵌入式系统必须具有的功能。

比较简单的人机交互有按键、LED、蜂鸣器,稍微复杂的有7段数码管和点阵。

但如今这些都不能满足人们的需求了,所以又出现了LCD和触摸屏技术。

s3c2440具有LCD和触摸屏接口,可以很好的连接LCD和触摸屏S3C2440A中的LCD控制器由从位于系统存储器的视频缓冲区到外部LCD驱动器的转移LCD图像数据逻辑组成。

LCD控制器支持LCD 的单色、2 位每像素(4 阶灰度)或4 位每像素(16阶灰度)模式,通过使用基于时间的抖动算法和帧频控制(FRC)方法,其可以连接到8位每像素(256 色)的彩色LCD面板和连接到12位每像素(4096色)的STN LCD。

其支持1位每像素、2位每像素、4位每像素和8位每像素的调色TFT彩色LCD面板连接,以及16位每像素和24位每像素的无调色真彩显示。

可以编程LCD控制器来支持不同涉及屏幕水平和垂直像素数、数据接口的数据线宽度、接口时序和刷新率的需要。

背景颜色的改变设置内容:在屏幕上画出两个外切空心圆。

三、实验步骤:1、首先在ADS上建立一个工程,工程名为lcd,然后选择一个合适的路径存放。

2、将光盘中TQ2440测试程序里面inc和src文件夹下的2440addr.h、2440lib.h、2440slib.h、def.h、Nand.h、Option.h、2440addr.inc、Memcfg.inc、Option.inc、2440init.s、2440slib.s、2440lib.c、nand.c这13个文件依次拷贝到刚才所建工程的文件夹下。

3、新建一个源文件,命名为lcd.c,存放到工程名为lcd的文件夹下。

4、在lcd.mcp下创建一个分组,取名为startcode,然后将前面拷贝的3个文件2440init.s、2440slib.s、nand.c依次添加到以startcode命名的文件夹下。

5、将lcd.c添加到工程里面去。

6、配置DebugRel Settings(参考实验一)。

7、在lcd.c里面进行程序的书写。

8、编译所写程序。

9、将开发板、仿真器、和电脑正确连接,并将3.5寸TFT屏连到开发板上对应的位置,打开Hjtag软件,调试程序。

10、观察LCD屏上显示的图形变化情况。

四、实验数据和结果:TFT屏幕的初始化设置:#include"2440addr.h"#define U32 unsigned int#define M5D(n)((n)&0x1fffff)#define LCD_WIDTH 320#define LCD_HEIGHT 240#define HSPW 30#define HBPD 38#define HFPD 20#define VSPW 3#define VBPD 15#define VFPD 12#define HOZV AL (LCD_WIDTH-1)#define LINEVAL (LCD_HEIGHT-1)//LCDCON1#define CLKVAL_TFT 3#define MMODE 0#define PNRMODE_TFT 3#define BPPMODE_TFT 13void Darw_Circular(int a,int b,int r,int c ) {int x,y;int tempx,tempy;for(y=0;y<LCD_HEIGHT;y++){for(x=0;x<LCD_WIDTH;x++){if(x<=a&&y<=b){tempx=a-x;tempy=b-y;}else if(x>=a&&y<=b){tempx=x-a;tempy=b-y;}else if(x>=a&&y>=b){tempx=x-a;tempy=y-b;}else{tempx=a-x;tempy=y-b;}if(tempx*tempx+tempy*tempy<=r*r) {LCD_BUFFER[x][y]=c;}}}}void LCD_Port(){rGPCCON=0xaaaa02a9;rGPCUP=0x0;rGPDCON=0xaaaaaaaa;rGPDUP=0x0;rGPGCON=0x3<<8;rGPGUP=0x1<<4;rGPGDAT=0x1<<4;}主函数:void Main(){CLK_DIV();LCD_Port();LCD_Init();while(1){Background(0x0);Darw_Circular(200,170,30,0xffffff );Darw_Circular(80,60,30,0xffffff );delay(10000);} }五、实验总结:本次实验我是画出了两个空心外切园,本实验加深了对坐标连线的理解,对TFT屏幕的配置。

实验中由于第一次用到屏幕显得有些生疏。

但是通过查资料得到解决。

实验三:基于S3C2440 学号姓名显示一、实验目的:1.更加熟练的使用开发板。

相关主题