华电ARM嵌入式系统实验报告_第1页
华电ARM嵌入式系统实验报告_第2页
华电ARM嵌入式系统实验报告_第3页
华电ARM嵌入式系统实验报告_第4页
华电ARM嵌入式系统实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

将AD的采样结果放置到片外FLASH中显示一、实验目的了解ARM汇编语言的基本框架,学会使用ARM的汇编语言编程。掌握ARM启动的基本知识和流程。掌握运用AD采集信号并在片外显示。二、实验设备ARM7电路板,Pentiumll以上的PC机,仿真器电缆。PC操作系统WINXP,ARMSDT2.5集成开发环境。三、实验步骤本实验使用实验教学系统的CPU板显示读出的数据。在PC机并口和实验箱的CPU板上的JTAG接口之间,连接SDT调试电缆。接入电源线缆,给系统上电。打开SDT开发环境,对代码进行编译调试,编译通过后,首先启动JTAG驱动程序,之后运行SDT的调试环境,装载实验程序。四、实验内容1.将十次的AD采样结果,放置到片外FLASH当中。主程序如下:***************************************************************************文件名:I2CTEST.C*功能:使用硬件I2C对ZLG7290进行操作,利用中断方式操作。*说明:将跳线器JP5短接。"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个/"config.h”ZLG7290"config.h”ZLG7290Glitter_COMBAUD9600ADC_Data;0x70/*0x70/*定义器件地址*/0x70//波特率设置值#define#defineuint32uint8count=0;0x81000000#defineFLASH_ADDR0x81000000//转换地址。将要发送给SST39VF160的地址值进行转换,以便于LPC2210输出。//由于SST39VF160的A0是与LPC2210的A1相连,所以addr要左移1位。#defineGetAddr(addr)(volatileuint16*)(FLASH_ADDR|(addr<<1))#defineUART_BPS115200/*定义通讯波特率*/个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个*名称:WordProgram()功能:半字(16位)数据编程。*入口参数:Addr编程地址(SST39VF160内部地址)Data编程数据*出口参数:返回TRUE表示操作成功,返回FALSE表示操作失败"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个/uint8WordProgram(uint32Addr,uint16Data)

{volatileuint16*ip;ip=GetAddr(0x5555);ip=GetAddr(0x5555);ip[0]=0xaaaa;ip=GetAddr(0x2aaa);ip[0]=0x5555;ip=GetAddr(0x5555);ip[0]=0xa0a0;ip=GetAddr(Addr);*ip=Data;//转换地址0x5555//第一个写周期,地址0x5555,数据0xAA//第二个写周期,地址0x2aaa,数据0x55//第三个写周期,地址0x5555,数据0xA0//第四个写周期,地址Addr,数据Datawhile(1)//等待操作完成(若编程操作没有完成,每次读操作DQ6会跳变){temp1=*ip;temp2=*ip;if(temp1==temp2){if(temp1!=Data){return(FALSE);else{return(TRUE);}}}return(TRUE);}个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个*名称:IRQ_Time0()功能:定时器0中断服务程序,取反BEEPCON控制口。*入口参数:无出口参数:无""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""************************************************************************void__irqIRQ_AD(void){VICVectAddr=0x00;//通知VIC中断处理结束}个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个*名称:ChipErase()*功能:芯片全片擦除。*入口参数:无*出口参数:返回TRUE表示操作成功,返回FALSE表示操作失败"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""***********************************************************************uint8ChipErase(void){volatileuint16*ip;uint16temp1,temp2;ip=GetAddr(0x5555);ip[0]=0xaaaa;//第一个写周期,地址0x5555,数据0xAAip=GetAddr(0x2aaa);

ip[0]=0x5555;ip=GetAddr(0x5555);ip[0]=0x5555;ip=GetAddr(0x5555);ip[0]=0x8080;ip=GetAddr(0x5555);ip[0]=0xaaaa;ip=GetAddr(0x2aaa);ip[0]=0x5555;ip=GetAddr(0x5555);ip[0]=0x1010;//第三个写周期,地址0x5555,数据0x80//第四个写周期,地址0x5555,数据0xAA//第五个写周期,地址0x2aaa,数据0x55//第六个写周期,地址0x5555,数据0x10while(1)//等待操作完成(若擦除操作没有完成,每次读操作DQ6会跳变){temp1=*ip;temp2=*ip;if(temp1==temp2){if(temp1!=0xffff){return(FALSE);else{return(TRUE);}}}return(TRUE);}个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个*名称:DelayNS()功能:长软件延时入口参数dly延时参数,值越大,延时越久*出口参数:无"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个/voidDelayNS(uint32dly){uint32i;for(;dly>0;dly—)for(i=0;i<5000;i++);}个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个*名称:AD初始化功能:初始化AD。入口参数:无出口参数:无""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个/voidADInit(void){PINSEL1=0x01040000;//设置P0.27P0.28为AIN0功能ADCR=(1<<0)|(1<<1)|((Fpclk/1000000-1)<<8)|(1<<16)|(1<<21)|(0<<22)|(0<<23);/*设置AD中断IRQ*/VICIntSelect=0x00;//所有中断通道设置为IRQ中断

VICVectCntll=0x32;//AD0中断通道分配最高优先级(向量控制器0)VICVectAddrl=(uint32)IRQ_AD;//设置中断服务程序地址向量VICIntEnable=0x00000000|(1<<18);//使能定时器0中断}个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个*名称:I2C_Init()功能:主模式I2C初始化,包括初始化其中断为向量IRQ中断。*入口参数:fi2c初始化I2C总线速率,最大值为400K出口参数:无"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""*************************************************************************voidI2C_Init(uint32fi2c){if(fi2c>400000)fi2c=400000;PINSEL0=(PINSEL0&0xFFFFFF0F)|0x50;//设置I2C控制口有效I2SCLH=(Fpclk/fi2c+1)/2;//设置I2C时钟为fi2cI2SCLL=(Fpclk/fi2c)/2;I2CONCLR=0x2C;I2CONSET=0x40;//使能主I2C/*设置I2C中断允许*/VICIntSelect=0x00000000;//设置所有通道为IRQ中断VICVectCntl0=0x29;//I2C通道分配到IRQslot0,即优先级最高VICVectAddr0=(int)IRQ_I2C;//设置I2C中断向量地址VICIntEnable=0x0200;//使能I2C中断}**************************************************************************名称:main()"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个/intmain(void){uint8disp_buf[8];uint8key;uint8i;uint8j=0;uint32zshuzu[10];uint8Delay=0;volatileuint16*addr;uint32ADC_Data;//设置管脚连接,使用I2C口//设置管脚连接,使用I2C口//设置P0.27、P0.28连接到AIN0、AIN1//I2C配置及端口初始化=0;//PINSEL1=0x00000000;PINSEL1=0x01400000;DelayNS(10);I2C_Init(30000);/*进行测试*/for(i=0;i<8;i++)disp_buf[i]ZLG7290_SendBuf(disp_buf,8);DelayNS(4000);/*进行ADC模块设置,其中x<<n表示第n位设置为x(若x超过一位,则向高位顺延)*/

ADCR=(1<<0)((Fpclk/1000000-1)<<8)|时钟为1MHz(0<<16)操作(0<<17)转换(1<<21)掉电转换模式)(0<<22)式(非测试模式)(1<<24)转换(0<<27);降沿触发ADC转换)DelayNS(10);ADC_Data=ADDR;标志位ChipErase();//ADInit();//Uart0Init();|//SEL=1,选择通道0//CLKDIV=Fpclk/1000000-1,即转换|//BURST=0,软件控制转换|//CLKS=0,使用11clock|//PDN=1,正常工作模式(非ADCR=(1<<0)((Fpclk/1000000-1)<<8)|时钟为1MHz(0<<16)操作(0<<17)转换(1<<21)掉电转换模式)(0<<22)式(非测试模式)(1<<24)转换(0<<27);降沿触发ADC转换)DelayNS(10);ADC_Data=ADDR;标志位ChipErase();//ADInit();//Uart0Init();|//SEL=1,选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论