现在,人们生活中的每个角落都有嵌入式设备的存在,比如数码相机、移动电话、TV机顶盒及掌上电脑等等。这些嵌入式设备多采用32位RISC嵌入式处理器作为核心部件。
其中基于ARM核的嵌入式处理器独占鳌头,在32位RISC处理器中占据超过75%的市场份额。ARM核嵌入式处理器通常采用C语言编程,目前ARM公司的开发工具ADS、RealView以及Keil与arm核处理器结合较好,得到了广大嵌入式学习者的一致认可。
在传统的嵌入式系统学习中,嵌入式开发平台是必不可少的。其中资源少的开发平台便宜但功能较少,资源多的开发平台又价格不菲,这对广大的嵌入式爱好者无疑是个障碍。然而,有没有在不增加甚至降低开发成本的同时还能进行同样或更好的开发呢?本文介绍的Proteus软件就是一个可以完全脱离硬件平台来学习嵌入式系统进行虚拟开发的利器,可以说是嵌入式系统学习的一次革命。
1 Proteus简介
Proteus软件是英国Labcenter electronics公司的EDA工具软件,是一个电子设计的教学平台、实验平台和创新平台,涵盖了电工电子实验室、电子技术实验室、单片机应用实验室等的全部功能。
其革命性的功能是将电路仿真和微处理器仿真进行协调,直接在基于原理图的虚拟原型上进行处理器编程调试,并进行功能验证,通过动态器件(如电机、LED、LCD、开关等),配合系统配置的虚拟仪器(如示波器、逻辑分析仪等),可实时看到运行后的输入输出的效果,其主要特点如下:
(1)可以仿真、分析各种模拟器件和集成电路,其支持Pillips公司系列的arm(LPC系列),Proteus的仿真是基于SPICE3F5的,因此它也能像其它的EDA软件那样进行电路分析,如模拟分析、数字分析、混合信号分析、频率分析等等;
(2)提供了虚拟示波器、逻辑分析仪、信号发生器、计数器、电表、Virtual Terminal等虚拟仪器仪表供选择;
(3)能够进行SCH(原理图)和PCB(印刷板)电路的设计;
(4)其自身只带汇编编译器,不支持C语言。但可以将它与Keil、ADS集成开发环境连接,将用汇编和C语言编写的程序编译好之后,可以立即进行软、硬件结合的系统仿真,达到很好的仿真效果。
2 Proteus环境下的系统设计与仿真
Proteus和PROTEL、EWB等软件相似,绘制原理图都要先从器件库里取出所需的元器件符号并在绘图区布局好,同时编辑好元件的参数,接着进行连线,添加必要的网络标号等步骤。下面通过一个简单的实例说明如何使用Proteus软件实现arm(以LPC2124为例)系统设计与仿真。实例以 LPC2124控制器为核心,与L297、L298组成步进电机控制器,添加必要的外围电路,实现对步进电机的正、反转控制。
2.1 电路原理图的设计
运行Proteus VSM的ISIS后出现如图1所示的主窗口界面,点击“File”—“New Design”新建一个设计项目。接下来就是在其中所需的添加元器件了,点击元器件添加按钮会弹出“Pick Devices”对话框,在其中选择需要添加的元器件,添加到器件列表区中。然后再依次点击列表区里的元器件,把它们放到绘图区并编辑其属性,接着进行合理的布局之后,就可以进行连线了。与PROTEL类似,Proteus也具有自动捕捉节点和自动布线功能,连线时当鼠标的指针靠近一个对象的引脚时,跟着鼠标的指针就会出现一个“×”提示符号,点击鼠标左键即可画线,在终点再点击确认一下就完成一段导线,所有导线画完后,点击电源按钮,添加必要的电源和接地符号,并编辑其属性后,原理图的绘制就完成了,如图2所示。
2.2 程序代码的编写
程序代码的编写主要分四个部分进行:
(1) LPC2124的初始化代码;
(2) LPC2124异常向量入口及异常向量与C语言代码的接口,包括初始化堆栈的代码;
(3) LPC2124目标板特殊的代码,包括异常处理程序和目标板初始化程序;
(4) 根据我们实例要求,结合原理图,编写实现预期功能的代码,即通常的执行代码,代码文件保存为“main.c”。
通常,为了节省开发者的时间,通常把这些文件保存在一个文件夹里,暂且把文件夹命名为“lpc2124模块”,这样在以后的程序代码编写时就可以直接调用这个模块,再根据不同的要求改写“main.c”就行了,而不必要又重新编写这些程序,节省了大量时间,大大提高了工作效率。
这里主要说明“main.c”的编写,要实现的功能是用LPC2124控制器、LP297、L298组成的步进电机控制 器,控制步进电机的运转,原理图中可以看到各元器件引脚的连接,图中还设置了七个电压探针,用数字图表显示各电压节点的电平随时间变化的曲线。KEY键控制电机的正反转(KEY键按下则电机反转)。程序流程图如图3所示。根据程序流程图编写好执行代码文件“main.c”。
图3 程序流程图
图4 ADS编译环境窗口
2.3 仿真
文中采用ADS集成开发环境进行程序的编译连接设置,ADS集成开发环境是ARM公司推出的ARM核微控制器集成开发工具,英文全称为ARM Developer Suite,成熟版本为ADS1.2。ADS1.2支持ARM10以前的所有arm系列微控制器,支持软件调试,支持汇编、C和C++源程序,具有编译效率高、系统库功能强等特点。
打开ADS1.2集成开发环境CodeWarrior IDE,点击Project→New Project建立一个新的工程lcd.mcp,把以上编好的代码文件全部添加进工程,如图4所示。进行相关设置后,选择Project→Make命令,编译并连接工程,生成stepper.hex文件。
在原理图中右击微控制器LPC2124,再单击,出现一属性设置窗口Edit Component,如图5。在其中的Program File中添加上面生成的stepper.hex文件的路径,单击OK完成设置。
点击原理图左下角中的运行按钮,即开始仿真运行。
仿真结果如图6所示。数字图表显示各电压节点的电平值随时间变化的曲线,步进电机按要求运行,按下KEY键电机反转。仿真结果完全符合设计要求。
图5 器件编辑窗口
图6 仿真结果图
3 结语
通过以上简单的步进电机控制系统设计过程可以看出,用Proteus软件进行ARM虚拟开发的优势所在。使用Proteus进行arm的虚拟开发,不仅可以减少实验硬件资本的投入,还突破了实际开发板中实验内容的局限性,使开发者能够充分发挥自身的主动性。使用Proteus仿真,大大降低了开发成本,提高了开发效率。笔者相信随着电子技术的不断发展、完善,基于软件的硬件虚拟开发的应用将会发挥越来越重要的作用。