编程语言及工具
本节将详细介绍AVR单片机的流行编程方式,并略述其工作原理,旨在让AVR爱好者根据自己的需要选择或制作恰当的编程工具。下面我们一起来看看avr单片机编程方式讲解。
AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。AVR单片机是 Atmel 公司 1997 年推出的 RISC 单片机。RISC(精简指令系统计算机)是相对于CISC(复杂指令系统计算机)而言的。RISC 并非只是简单地去减少指令,而是通过使计算机的结构更加简单合理而提高运算速度的。
对于初学者,建议使用ICC AVR.用ICC编辑了工程文件,然后在下载并在线仿真调试时,要用AVR studio。JTAG仿真器,作为AVR最小系统版和电脑的串口的链接点,能做到在线仿真和下载程序。这是常用的组合。
本节将详细介绍AVR单片机的流行编程方式,并略述其工作原理,分析其优缺点,旨在让AVR爱好者根据自己的需要选择或制作恰当的编程工具。
这是比较常用的编程方式,目前大多台式机都有打印口(并口),如图2-1所示:
图2.1 PC机的打印口
一般来说,PC机并口电路由74LS373(数据锁存器)和74LS240(状态缓冲器)组成。对于LPT1来说,数据锁存器74LS373的I/O地址为378H,该端口称为数据端口,而状态缓冲器74LS240的地址为379H,该端口成为状态端口。其中,数据端口可读可写,而状态端口只可读。根据并行接口的特点制作的AVR下载工具硬件电路简单,配合PC端的下载软件即可完成对AVR单片机的编程。
既然是通过串行方式编程,则需要使用AVR的SPI串行外设接口。有兴趣的朋友可以学习一下通过SPI接口下载编程的时序图(如图2.2所示)。在这里就不赘述了。
图2.2 SPI下载编程时序图
了解了下载编程的时序,我们就可以在PC端编写相应的上位机,通过并口模拟这个时序,利用AVR单片机的SPI接口对其进行编程,当下比较流行的上位机软件是双龙公司http://www.sl.com.cn),目前的版本为1.7.0.16,除了支持利用并口进行ISP编程(AVRISP)外,还支持USBISP,JTAGMKII等方式。如图2.3所示。
图2.3 双龙ISP编程软件
从其界面可以看出,SLISP实现了完整的下载功能:配置熔丝位,烧录Flash,烧录EEPROM等。在配置熔丝位的时候要尤其注意与AVR时钟相关的熔丝设置,避免因选择了错误的时钟源而锁死MCU。
有了现成的上位机软件,那么这个工具的硬件是如何设计的呢?千万不要想得太复杂,既然上位机已经替我们完成了SPI下载时序的模拟和数据的读写,我们只要搭好并口和AVR 硬件SPI接口之间的“桥梁”就可以了。
目前常见的并口下载线都有一块74HC244(如图2.4所示),该芯片为八缓冲器,三态输出,由目标机电源供电。该芯片有两个输出使能(OE)引脚(低电平有效),这样,我们可以做到在下载时使能输出,而下载完成后,拉高两个OE引脚,使74HC244各缓冲器处于高阻态,相当于拔除了下载线,从而真正实现了在线编程;除此之外,74HC244还有增大并口驱动能力的作用,如果没有74HC244,若AVR的SPI硬件接口上接有负载元件,很有可能导致下载失败,而有了缓冲器,驱动能力变大,就能成功下载程序。并口的引脚定义如图2.4所示。
图2.4 74HC244和并口DB25引脚定义
并口和AVR SPI接口的连接方式要符合PC端所使用的上位机对硬件连接的定义。双龙SLISP要求的硬件连接方式如图2.5所示。
图2.5 并口ISP硬件接口连接
图2.6 并口ISP编程器硬件原理图
注意,硬件图中使用并口的PIN4和PIN5作为74HC244的使能信号,以达到编程完成后隔离AVR和下载器的目的。
STK200/STK300是ATMEL公司早期推出的一种烧写程序的方式,故而支持的AVR型号比较少,烧录速度也比较低,且不支持AVR Studio;此外,随着笔记本的普及和USB技术的发展,PC并口的使用频率越来越低,所以,此类烧录方法将会最终退出历史舞台。不过,由于其硬件电路简单,编程方式实现容易,至今仍有很多AVR爱好者使用该方式。
STK500是ATMEL最推荐的编程方式,由于采用了ATMEL官方的STK500固件,该类编程工具可以烧写全系列的AVR,烧写速度相对并口ISP方式来说要快不少,并且,基于STK500烧录方式的编程工具支持AVR Studio。在这里,我们介绍国外AVR发烧友制作的一款基于ATmega8和STK500烧写方式的编程工具。
在Our AVR论坛上,马潮老师有一篇帖子详细说明了该工具的制作,并提供了全部资料,有兴趣的朋友可以访问AVRISP制作完整资料以获得更多信息。该工具不支持BaseCOM AVR,ICCAVR,CodeVisionAVR直接下载,而并口ISP则可以,这不能不说是一个遗憾。基于STK500的这款编程工具只支持AVR Studio,并且编程下载速度无法自动调节,但是,时下的大多笔记本都没有并口,所以这还是一个比较好的方案。此外,该工具需要在系统中安装上层驱动,有XP和VISTA的驱动。经测试,能够完美支持。注意,大家要安装微软原版的,未经阉割的操作系统,否则可能造成安装了驱动文件,但编程工具无法使用。
该编程工具的硬件电路图如图2.7所示。
图2.7 AVRISP硬件电路原理图
从硬件电路可以看出,该工具需要的外设较少:电源芯片HT7536一片,Mega8一片,晶振一枚,电阻电容若干,完全可以自制,在AVRISP制作完整资料一文中,马潮老师也给出了固件和上层驱动,把固件烧录入Mega8,安装好上层驱动以后即可使用。制作完成的实物如图2.8所示。
图2.8 AVRISP实物图
硬件电路制作完成后,将JP短接,使用其他的编程器(如并口ISP),将10PIN的编程接口插入AVRISP的编程口。编程前注意配置熔丝位:掉电检测电压为2.7V,开启BOD,系统时钟选为高频外部晶体,满幅振荡。如图2.9所示
图2.9 AVRISP熔丝位设置
设置好熔丝位,将程序烧录入ATmega8后,将AVRISP的USB口和PC相连,系统会提示发现新硬件,这里以Windows XP SP3为例说明驱动安装方法,如图2.10,图2.11,图2.12所示。注意选择“从列表或指定位置安装”
图2.10 AVRISP驱动安装步骤一
图2.11 AVRISP驱动安装步骤二
图2.12 AVRISP驱动安装步骤三
安装好驱动好以后,我们可以在设备管理器中看到名为“USBASP-ISP”这个设备,也就是AVRISP编程器,该设备在“端口(COM和LPT)”分支下,上层驱动将编程器虚拟为一个串口,使用时注意将其串口号的范围更改至“COM1~COM9”中的任意一个,如图2.13所示。因为AVR Studio仅支持这9个串口编程设备。注意不要使用USB HUB(USB集线器)连接AVRISP,否则会造成安装好驱动后,编程器却无法使用的后果。
图2.13 设备管理器中的USBASP-ISP
双击这个设备,可以在“端口设置”选项卡中的“高级”选项中修改其串口号。安好驱动,设置好串口以后,我们就可以使用AVR Studio来下载程序了。打开AVR Studio,选择STK500编程方式,选择串口号,如图2.14所示(或点击Tools→Program AVR→Auto Connect)。
图2.14 使用AVR Studio下载程序
成功连接后,将弹出如图2.15所示的对话框,注意,上文提到,该工具不能自动调节下载速度,因此,我们要手动修改下载速率,注意下载速度不能超过被编程的AVR芯片的时钟速率的1/4,否则AVR Studio会弹出错误对话框提示你降低编程速度。在下拉菜单中修改好下载速度后,注意点击Write按钮保存设置,然后单击Close退出。
图2.15 AVRISP下载速率的设置
设置完成后,单击“Program”选项卡,在“Flash”一栏,浏览到需要下载的*.hex文件,单击Program,即可完成编程操作,速度还是比较快的。
全部0条评论
快来发表一下你的评论吧 !