Proteus在ARM系统设计中的应用

来源:本站
导读:目前正在解读《Proteus在ARM系统设计中的应用》的相关信息,《Proteus在ARM系统设计中的应用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《Proteus在ARM系统设计中的应用》的详细说明。
简介:针对ARM系统开发存在的缺陷,提出一种基于Proteus软件进行ARM系统设计的方法。分析Proteus软件的强大功能和特点,并结合一个简单的实例阐述该软件在ARM系统设计中的应用过程。

引言

现在,人们生活中的每个角落都有嵌入式设备的存在,比如DVD、移动电话、MP3及掌上电脑等等。这些嵌入式设备多采用32位RISC嵌入式处理器作为核心部件。其中基于ARM核的嵌入式处理器独占鳌头,在32位RISC处理器中占据超过75%的市场份额。因而越来越多的电子爱好者都加入了学习ARM的队伍中。

通过和一般单片机系统开发过程的比较不难发现,嵌入式系统的设计包括硬件设计和软件设计两个方面,其调试过程包括软件调试、硬件测试、系统调试3个过程。软件调试一般比较容易进行,但是硬件测试和系统调试则比较麻烦,因为要进行这两个过程必须在PCB制作、元器件焊接完毕之后才能进行;而PCB的制作、元器件的焊接是非常费时费力的,如果能采用仿真工具Proteus VSM,则不用制作具体的电路板也能够完成以上工作。毫无疑问,这样可给广大ARM学习者带来很大的方便。

1 Proteus简介

Proteus软件是英国Labcenter electronics公司的EDA工具软件,是一个电子设计的教学平台、实验平台和创新平台,涵盖了电工电子实验室、电子技术实验室、单片机应用实验室等的全部功能。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件的特点是:

① 实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

② 支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及Phillips公司的ARM(LPC系列)等。

③ 提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil、ADS等软件。

④ 具有强大的原理图绘制功能。能够进行SCH(原理图)和PCB(印刷板)电路的设计。

2 Proteus环境下的原理图设计

Proteus和Protel、EWB等软件相似,绘制原理图都要先从器件库里取出所需的元器件符号并在绘图区布局好,同时编辑好元件的参数,接着进行连线,添加必要的网络标号等步骤。下面通过一个简单的实例说明如何使用Proteus软件实现ARM(以LPC2106为例)系统的设计与仿真。实例以LPC2106控制器为核心,使用硬件SPI接口与74HC595进行连接,添加必要的外围电路,控制74HC595驱动LED数码管显示。

电路原理如图1所示。LPC2106的P0.4(/SCK/CAP0.1)、P0.6(/MOSI/CAP0.2)和P0.8(/TxD1/PWM4)分别与74HC595的SH_CP、DS和ST_CP相连来控制74HC595,74HC595的输出Q0~Q6分别与数码管和LED相连,控制它们的实时显示。

Proteus在ARM系统设计中的应用

图1 SPI实验原理图

3 程序代码的编写

程序代码的编写主要分4个部分进行:

① LPC2106的初始化代码;

② LPC2106异常向量入口及异常向量与C语言代码的接口,包括初始化堆栈的代码;

③ LPC2106目标板特殊的代码,包括异常处理程序和目标板初始化程序;

④ 根据实例要求并结合原理图,编写实现预期功能的代码,即通常的执行代码,代码文件保存为“main.c”。

通常为了节省开发的时间,一般用设计好的工程模板,这里使用LPC2100系列工程模板。模板中包含LPC2100系列ARM7微控制器的启动文件,包括STACK.S、HEAP.S、STARTUP.S和TARGET.C;模板还包含LPC2100系列ARM7微控制器的头文件,分散加载描述文件(如mem_a.scf、mem_b.scf和mem_c.scf)等等。这样在以后的程序代码编写时就可以直接使用这些工程模板,而不用再编写初始、启动等程序代码了,只需根据不同的要求编写“main.c”就行了,因而节省了大量时间,大大提高了工作效率。

这里主要说明“main.c”的编写,要实现的功能是使用硬件SPI接口输出0~F的数据,通过74HC595控制LED数码管显示0~F字符,同时控制4个LED显示对应的十六进制数。程序源代码如下:

#include "config.h"

#defineHC595_CS0x00000100

void delay(uint32 dly) {

uint32 i;

for(;dly>0;dly)

for(i=0;i<50000;i++);

}

void SPI_init() {

SPI_SPCCR=0x52;

SPI_SPCR=0x30;

}

uint8 SPI_senddata(uint8 data) {

IO0CLR=HC595_CS;

SPI_SPDR=data;

while((SPI_SPSR&0x80)==0);

IO0SET=HC595_CS;

return(SPI_SPDR);

}

uint8 const display[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,

0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86, 0x8E };

int main() {

uint8 rcv_data;

uint8 i;

PINSEL0=0x00005500;

PINSEL1=0x00000000;

IO0DIR=HC595_CS;

SPI_init();

while(1) {

for(i=0;i<15;i++) {

rcv_data=SPI_senddata(display[i]);

delay(15);

}

}

return(0);

}

4 仿真

用ADS集成开发环境进行程序的编译连接设置,ADS集成开发环境是ARM公司推出的ARM核微控制器集成开发工具,英文全称为ARM Developer Suite,成熟版本为ADS1.2。ADS1.2支持ARM10以前的所有ARM系列微控制器,支持软件调试,支持汇编、C和C++源程序,具有编译效率高、系统库功能强等特点。

打开ADS1.2集成开发环境CodeWarrior IDE,使用事先加入的工程模板建立一个新的工程spi.mcp,把以上编好的代码文件main.c添加进工程。进行相关设置后,选择Project→Make命令,编译并连接工程,生成spi.hex文件。

在原理图中双击微控制器LPC2106,出现一属性设置窗口Edit Component,如图2所示。在其中的Program File中添加上面生成的spi.hex文件的路径,单击OK完成设置。

Proteus在ARM系统设计中的应用

图2 器件编辑窗口

点击原理图左下角的Proteus在ARM系统设计中的应用运行按钮Proteus在ARM系统设计中的应用,即开始仿真运行。数码管显示SPI发送的0~F的数据,LED显示的是相对应的十六进制值。仿真结果完全符合设计要求。

结语

本文结合一个简单的SPI接口实验详细说明了Proteus 在ARM开发中的应用。可以看出,Proteus功能十分强大, 能仿真各种数字模拟电路, 且操作简单, 使用方便。使用Proteus进行ARM的虚拟开发,不仅可以减少实验硬件资本的投入,还突破了实际开发板中实验内容的局限性,使开发者能够充分发挥自身的主动性。使用Proteus仿真进行系统虚拟开发成功之后再进行实际制作,无疑可以提高开发效率、降低开发成本、提升开发速度,具有较高的推广应用价值。

提醒:《Proteus在ARM系统设计中的应用》最后刷新时间 2024-03-14 00:57:07,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《Proteus在ARM系统设计中的应用》该内容的真实性请自行鉴别。