基于LPC2131型ARM数子时钟嵌入式系统开发.doc_第1页
基于LPC2131型ARM数子时钟嵌入式系统开发.doc_第2页
基于LPC2131型ARM数子时钟嵌入式系统开发.doc_第3页
基于LPC2131型ARM数子时钟嵌入式系统开发.doc_第4页
基于LPC2131型ARM数子时钟嵌入式系统开发.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

基于LPC2131型ARM数子时钟嵌入式系统开发1、引言在当今社会,嵌入式系统已经悄然无声融入到我们生活的每一个方面。人们很少会意识到他们往往随身携带了好几个嵌入系统MP3,手机或者智能卡等,而且人们在与汽车,电梯,厨房设备,电视,录像机以及设备的嵌入式系统交互时也往往对此毫无觉察。在信息时代可能有人没接触过计算机,但在现代社会每一个人的生活都或多或少地和嵌入式系统有联系。人们有时候可能就会问这些所谓的嵌入式系统产品是如何开发出来的呢。这就是我这篇文章将为你解答的问题。我想通过一个实例,来说明嵌入式系统开发的流程。嵌入式系统开发是一个软,硬件协同开发的过程。ARM嵌入式开发平台是以ARM CPU为开发的硬件平台,以ADS或相关软件为集成开发环境,以ARM-Linux 嵌入式操作系统及各种中间件、驱动程序为软件平台搭建的ARM嵌入式系统,其中,硬件平台和软件平台是核心。由于嵌入式系统的发展已经过了几十年,要想在一篇一、两千字的文章里把嵌入式系统讲清楚是不可能的。所以我想以一个很简单的电子时钟实例开发,来展示一下嵌入式系统的开发过程。2、数子时钟嵌入式系统开发流程首先让我们先看看嵌入式系统的比较权威一点的定义吧。根据IEEE(国际电机工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。看了这个定义我想大部人都可能有点犯晕了。其实大家只要抓住嵌入式系统用于控制的装置就可以了。下面我会通过实例讲解嵌入式系统的主体开发流程,让大家对它有更具体的认识。但由于专业需要,因此我的重点会集中在对硬件平台搭建、软件开发上。其它的部分我会一带而过。实例,电子时钟在我们日常工作生活中有很广泛开展的应用。实现时钟的设计思路很多。如何使用LPC2131型微处理器实现一个时钟的功能呢。当想开发一个或一类产品时,开发人员遵循着以下顺序流程。2.1、确定设计任务和设计目标一般分为功能性需求和非功能性需求两个方面,功能需求主要包括,输入和输出信号和系统的操作方式等等;非功能需求主要包括系统的性能、成本、功耗、体积、重量等。那么对于这个例子而言,设计任务就是一个我们常见的电子时钟;设计目标首先它肯定得能实现时钟的功能,主要说来有:正常走表、按键清零、松手重新走表。至于什么时间调节,节能,走表精度和其它的一些性能、成本、功耗、体积、重量之类的的要求,前面我已经说过了,我只是要让大家对嵌入式系统开发过程有一个宏观的认识,因此这些内容我就不再多讲了。2.2、体系结构设计描述系统如何实现功能和非功能的需求,包括机械部分设计、软件和硬件的功能划分和它们的选型等;一个好的体系结构是该系统实现是否成功、性能是否好的关键步骤。也就是选择实现系统的平台(包括硬件开发平台、软件开发平台)。首先,对于硬件开发平台指的就是开发板,也叫目标板。通俗点就是根据前面的的设计任务和设计目标,我们要选择哪些电子元件来实现这个系统。嵌入式系统硬件平台结构主要分为两大:一部分为系统主板,为基于ARM的最小系统,凶手ARM CPU,Flash SDRAM,串口及急用等最基本部分;另一部分为系统扩展板,提供了用于完成各个不再硬件的功能模块。显然,我们可以看到要实现这个时钟的功能,需要用到,键盘输入、LED(7段码)输出和ARM(LPC2131)微处理器和ARM本身运行所必须的硬件电路(我们知道,要使ARM微处理器能正常工作,有一些必不可少的硬件电路,例如电源电路,复位电路,JTAG下载电路等)。我在这里就只对CPU详述一下。由于我们此处明确地说明了用LPC2131,所以我们不用选择。但在实际中,应该根据你设计的需要和目标,产品是用于哪一群体来具体也选择。CPU-LPC2131R功能具体描述功能如下。16/32位ARM7TDMI-S核,超小LQFP64封装。8/16/32kB的片内静态RAM和32/64/128/256/512kB的片内Flash程序存储器。128位宽度接口/加速器可实现高达60MHz工作频率。通过片内boot装载程序实现在系统编程/在应用编程(ISP/IAP)。单个Flash扇区或整片擦除时间为400ms。256字节行编程时间为1ms。EmbeddedICE RT和嵌入式跟踪接口通过片内RealMonitor软件对代码进行实时调试和高速跟踪。1个(LPC2131/32)或2个(LPC2134/36/38)8路10位的A/D转换器,共提供16路模拟输入,每个通道的转换时间低至2.44us。1个10位的D/A转换器,可产生不同的模拟输出。(LPC2132/34/36/38)2个32位定时器/外部事件计数器(带4路捕获和4路比较通道)、PWM单元(6路输出)和看门狗。低功耗实时时钟具有独立的电源和特定的32kHz时钟输入。多个串行接口,包括2个16C550工业标准UART、2个高速I2C总线(400 kbit/s)、SPI和具有缓冲作用和数据长度可变功能的SSP。向量中断控制器。可配置优先级和向量地址。小型的LQFP64封装上包含多达47个通用I/O口(可承受5V电压)。多达9个边沿或电平触发的外部中断管脚。通过片内PLL(100us的设置时间)可实现最大为60MHz的 CPU操作频率。片内集成振荡器与外部晶体的操作频率范围为130 MHz,与外部振荡器的操作频率范围高达50MHz。低功耗模式:空闲和掉电。可通过个别使能/禁止外部功能和外围时钟分频来优化功耗。通过外部中断或BOD将处理器从掉电模式中唤醒。单电源,具有上电复位(POR)和掉电检测(BOD)电路:CPU操作电压范围:3.03.6 V (3.3 V10%),I/O口可承受5V的电压。当然在此例中我们用到的只是它功能的很小一部分。我列举出它的功能,只是让大家有个认识。其次,因为我们要实现功能很简单,不需要操作系统支持,所以软件开发平台我选择ADS,其简要介绍如下:ADS(ARM Developer Suite),是在1993年由Metrowerks公司开发是ARM处理器下最主要的开发工具。ADS 是全套的实时开发软件工具,包编译器生成的代码密度和执行速度优异。可快速低价地创建ARM 结构应用。ADS包括三种调试器ARMeXtended Debugger, AXD 向下兼容的ARMDebugger for Windows/ARM Debugger forUNIX 和ARM 符号调试器。其中AXD 不仅拥有低版本ARM调试器的所有功能,还新添了图形用户界面,更方便的视窗管理数据显示,格式化和编辑以及全套的命令行界面。该产品还包括RealMonitor(可以在前台调试的同时断点续存并且在不中断应用的情况下读写内存跟踪调试工具)。2.3、软件和硬件的设计根据上述的软件和硬件的实现方案,对软件和硬件执行详细的设计。一般为了缩短开发周期,是并行进行设计的。到这里我就涉及到嵌入式系统最核心的地方硬件、软件设计,其设计如下。2.3.1、硬件设计1,键盘输入电路 本实例中只需要两个按键:复位键和控制键,因此,可以由两个GPIO管脚来检测按键状态,如图所示,为键盘输入电路。当按键被按下前,对应的管脚处于上拉状态(高电平)。当某个按键被按上时,对应的管脚被接地(低电平)。通过读取对应管脚的电平,就可以判断按键的状态。2,扫描电路在本实例中,我们需要显示的数字共6个(小时,分钟,秒各两个),每控制一个七段码LED的显示至少需要7个管脚,即LED的gnd接地,其它端口各一个管脚控制,控制6个七段LED。为了节省微处理器I/O数量,我们可以对微处理器I/O进行扩展。或者采用如图所示的七段LED输出电路扫描方式。在图中,每个七段LED的ag端是并联在一起的;分别连接LPC2131型微处理器P1.19P1.25,而gnd端口各由一个管脚控制,6个七段码LED的gnd端分别连接LPC2131微处理器的P0.0P0.5。当需要其中某一个七段码LED时,将对应gnd端口电平拉低,ag端口根据需要提供不同的电平来显示数字。2.3.2软件设计软件设计部分主要包括以下几个方面,时钟控制,键盘扫描程序,LED七段码显示输出和函数。1,时钟控制程序LPC2131型微处理器中有内置的计数器,可以中断,我们可以利用计数器模块产生秒表计时器所需的时间间隔。本例中的秒表精度为1秒。中断周期0.001333秒,因此需进入中断600次。Void _irq IRQ_Timer0(void)if(segid5)segid+;else segid=0;me+;if(me99)return;if(me=100)me=0;he+;if(he=60)second=0;minute+;If(minute=60)minute=0;hour+;If(hour=24)hour=0;T0IR=0x01;VICVectAddr=0x00;如果只是声明一个中断处理函数,编译器还是没法知道这个中断处理函数到底处理的是哪个中断。因此还需要把中断处理函数的入口地址放到对应中断号处#define VICVectAddr0ICVectAddr0=(uint32)IRQ_Timer0;2,键盘输入扫描程序由图可知,数字时钟的复位键和控制键是分别连接到LPC2131型微处理器的p0.6和p0.7。当p0.6和p0.7为低电平时,表示复位键/控制被接下。为了能够检测p0.6和p0.7管脚上的输入电平,我们首先应该将这两个管脚的方向设置为输入。void key_handler(void)/变量用于key_en单次按键时间稍长时,防止按键被误判为多次按下If(key_en=0) if(IO0PIN&key_reset)=key_reset&(IO0PIN&key_ctrl)=key_ctrl)key_en=1;else if(IO0PIN&key_reset)=0) /清零键被按下clk_on=0;second=0;minute=0;hour=0;key_en=0;else if(IO0PIN&key_ctrl)=0)/控制键被按下if(clk_on=1)clk_on=0;else (clk_on=0)clk_on=1;key_en=0;数字时钟的按键扫描程序中key_reset和key-ctrl是只有某一位为期不远的32位整形值。它们的定义为int key_reset=(int)(16)int key_ctrl=(int)(17)因此如果表达式(IO0PIN&key_reset)=0为真,则表示IO0PIN的低6位为0。否则IO0PIN的低第6位1。3,LED显示程序void dispLED(int segid,int second,int minute,int hour)int digi;int SEGS_AIG;int SEGS_AND=0x3F;if(LED_Refresh=0)return;else LED_Refresh=0;switch(segid)case 0:IO0SET=SEGS_GND;IO0CLR=(int)(10);digi=second%10;break;case 1:IO0SET=SEGS_GND;IO0CLR=(int)(11);digi=second/10;break;case 2:IO0SET=SEGS_GND;IO0CLR=(int)(12);digi=minute%10;break;case 3:IO0SET=SEGS_GND;IO0CLR=(int)(13);digi=minute/10;break;case 4:IO0SET=SEGS_GND;IO0CLR=(int)(14);digi=hour%10;break;case 5:IO0SET=SEGS_GND;IO0CLR=(int)(15);digi=hour/10;break;default:break;switch(digi0)case 0:SEGS_AIG=0X3F;break;case 1:SEGS_AIG=0X06;break;case 2:SEGS_AIG=0X5B;break;case 3:SEGS_AIG=0X4F;break;case 4:SEGS_AIG=0X66;break;case 5:SEGS_AIG=0X6D;break;case 6:SEGS_AIG=0X7D;break;case 7:SEGS_AIG=0X07;break;case 8:SEGS_AIG=0X7F;break;case 9:SEGS_AIG=0X6F;break;default:break;IO1CLR=(int)(ox3F19);/设置P1.19P1.25为低电平IO1SET=(int)(SEFS_AEG19);/根据SEGS_AIG的值来设置P1.19P1

温馨提示

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

评论

0/150

提交评论