此仿真器与计算机通信既可以通过232串口,也可通过USB口。
硬件电路设计
仿真器的硬件由USB/RS232接口电路、主控电路以及仿真接口电路共三部分组成,下面将会简单地介绍这几部分的电路。
仿真器与计算机间的接口电路如下图所示.分为USB和RS232两种,其中232接口为了降低成本,由分立元件组成。USB接口芯片采用CP2102芯片,CP2102是美国SILICorl公司生产的高集成度USB转UART专用芯片。CP2102集成度高,内置USB2.0全速功能控制器、USB收发器、晶体振荡器、EEPROM及异步串行数据总线(LJART),支持调制解调器全功能信号,无需任何外部的LJSB器件。与其他LJSB—LJART转接电路的工作原理类似,CP2102通过驱动程序将PC的USB口虚拟成COM口以达到扩展的目的。虚拟COM口(VCP)的器件驱动程序允许一个基于CP2102的器件以PC应用软件的形式作为一个增加的COM口独立于任何现有的硬件。COM口使用运行在PC上的应用软件以访问一个标准硬件COM口的方式访问基于CP2102的器件,PC与CP2102间的数据传输是通过USB完成的,因此,无需修改现有的软件和硬件就可以通过USB向基于CP2102的器件传输数据。此外,通过厂商及销售商免费提供的、适用于Windows(含WindowsCE)、Linux、MacOS-×等多个操作系统的驱动程序,可省去CP2102系列器件二次开发的投入。这样,在一般情况下,焊接完毕并安装好驱动程序即可使用。用CP2102进行串口扩展所需的外部器件非常少,仅需3只去耦电容器即可,它用最简单的外部电路、最少的外部器件和最小的电路板面积实现USB2.0到UART的转换。
在下图中,为了自动识别仿真器是通过RS232口还是通过USB口与计算机通信,在系统中增加了隔离电路,通过D5~D8四个二极管来控制。
仿真器的核心部分如下图所示,控制芯片采用ATMEL公司的Megal6单片机,工作电压为2.7~5.5V,本方案晶振采用普通的8MHz,J5作为仿真器的模式选择,PC6引脚悬空时,是作为JTAG仿真器使用,当接地时作为STK500(也就是ISP下载器)使用。
JTAG(JointTestActionGroup:联合测试行动小组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。JTAG最初是用来对芯片进行测试的,JTAG的基本原理是在器件内部定义一个TAP(TestACCessPort:测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(1n—SystemProgrammable;在线编程),对FLASH等器件进行编程。由于JTAG接口的引脚排列在不同的电路上会有所不同,如果接口不匹配,只需将仿真器与目标板相应的接口用导线相连接就可以
软件程序固化
接下来就要将bootloader程序下载到仿真器中,由于本设计的仿真器主控元件采用AT—megal6L,所以首先要对ATmegal6L下载程序。目前网上关于AVR单片机下载器的制作方法非常多,大致可分为并口、串口和USB接口三种方式,其中电路最简单的就是通过计算机并口。常用http://WWW.ouravrcom/es_isp_cable_DIY.html上的简化电路图,该图在SLISPl6和PorlyProg2000下测试过,下载顺利。为了降低成本,可以将ISP下载器的GND、MOSI、RESET、MOSI、SCK的五个接口分别与目标板J6的4、9、5、1、7引脚连接,最后给目标板提供5V直流电源。
下载软件我们采用SLISP1.6,由于其是由广州双龙开发的,采用中文界面,方便操作。目标板写入程序可参考http://WWW.avrportal.com/?page=JTAG网站,由于本文晶振选择8MHz,所以选择相应的bootIoader程序,在网页中将此文件数据复制,然后打开记事本,将程序粘贴并保存为hex文件格式。
接下来打开SLISP软件,通信接口选择LPTl,速度选择FAST,目标芯片选择ATmeqal6(L),然后打开FLASH选择刚才生成的hex文件。
弹出空闲存储器填充对话框,填充方式任选,最后点击确定按钮。
然后要对芯片的熔丝位进行配置,选择文本框“编程选项”中的“配置熔丝”,弹出“配置熔丝设置”的对话框。在对AVR单片机熔丝编程时,检查框打钩表示0,而不打勾表示1。本设计晶振选择为外部8MHz,所以CKSELO~CKSEL3酉己置为1111;分配boot区为最大的存储空间,设置BOOTSZO~1为00以分配。1024字节,将BOOTRST置为0。将(3CDEN置为0,最终熔丝位设置如gh 图所示,单击确定按钮完成配置。接下来单击主窗口的编程,对ATrr)egal6L芯片写入程序。
如果写入成功,下一步就是通过AVRStudio开发软件来对ATmegal6上的JTAGICE固件升级。
AVRStudio可在Atmel网站上免费下载,笔者建议选择4.13版本。首先将仿真器设为JTAG模式,连接计算机与仿真器的串口,打开AVRStudio软件,单击工具栏下的"AVRProg”选项,如果连接成功则出现下图所示的对话模式,否则请检查硬件电路。
点击固件升级对话框中的Browse按钮,选择AVRJTAGICE升级固件LJpgrade.ebr1文件,它保存在AVRStudio的VWRTOOIs\jTAGIC\安装目录下。选择Program按钮对固件进行升级,这是仿真器上的D3将会不断地闪烁,这将等待约一分钟左右。等到升级完成后,D3将停止闪烁,单击确定完成,然后重启仿真器。
等到D3停止闪烁里的"Displaythe‘connecl’Dialog"图标,如下图所示,Platform选择JTAGICE,Port选择COMl,点击Collrlect按钮与仿真器进行连接,如果连接成功,将会弹JTAGICE的对话框,我们就可以选择目标板的芯片型号,配置不同设置,实现对具有AVR系列具有JTAG接口的芯片进行仿真。同样,只要给电脑装上CP2。102芯片的驱动程序,CP2102就可以将LJSB口虚拟为串口,这样就可以通过电脑的LJSB口与仿真器连接。
结束语
本文设计一种结构简单、价格低廉的AVR单片机仿真器,可以对ATmegal6、ATmega162、AT—megal69、ATmega32、ATrrlega64、ATmegal28、ATmega323、AT90CAN128等芯片进行仿真。同时,该仿真器具有RS232和LISB两种接口模式,特别是LISB接口可使仿真器在笔记本上使用,解决笔记本电脑没有串口的问题。
上一篇:有保护功能的51单片机编程器