新闻  |   论坛  |   博客  |   在线研讨会
自制USBISP下载线
0750long | 2010-02-03 08:52:59    阅读:4445   发布文章

自制USBISP下载线

 

 

 

E.1 问题的提出
     笔者在多年的AVR教学和开发应用实践过程中,一直使用本书中推荐(见第4章的第3节)的兼容STK200/STK300的ISP下载电缆。该下载电缆支持所有使用ISP技术的AVR芯片,同时也支持ATMEL公司51系列兼容芯片AT89S51、AT89S52、AT89S53、89S8252。
     这个ISP下载线实现下载编程的方法为:由PC机的并行口来驱动ISP编程所需的信号波形,实现对AVR的程序下载和熔丝位的配置编程。出于安全的考虑,为了防止使用中误操作而损坏PC机的并行口,使用了一片74HC244作为缓冲,以保护计算机的并行口。
     这个并口的AVR ISP的成本非常低,而且多数的开发平台支持该下载的使用,操作简单方便,经过多年实际应用的检验,性能非常可靠。
     最近几年,随着笔记本电脑价格的下降,使用手提的人越来越多(包括我自己),这使得很多人碰到一个尴尬的问题:现在的笔记本电脑一般不配备打印机并行接口,替代的是USB口(从另外一个方面证明:串行接口通信是发展趋势)。这样就不能使用原来需要并口连接的ISP下载线了。
     解决这个问题的方法有以下3种:
1.购买成品工具。
     如JTAGICE mkII、AVR Dragon等。这是AVR的标准开发工具,具有在片(通过JTAG、debugWIRE)实时仿真和程序下载的功能,使用USB和RS-232接口。缺点是,通常只能在AVR Studio环境下使用,价格比较贵(AVR Dragon约500元人民币)。
2.购买一块笔记本并口卡(PCMCIA To Parallel)。
     笔记本上有一个PCMCIA接口(英文全称Personal Computer MemoryCard International Association),可以插入一块PCMCIA卡实现各种扩展。PCMCIA卡,是一种信用卡一样大小的可拆装的模块,用于向便携式计算机上连接调制解调器、网络适配器或硬盘等多种设备。
     有了笔记本并口卡,相当笔记本上配有了并口(与台式PC的并口全兼容),可以直接使用原来的并口ISP下载线,这是作者推荐的比较好的办法(笔者目前就是使用此方案)。
     这个方法也有着明显的缺点,首先笔记本并口卡实在不流行,用的人少,所以不太好买,价格也贵(500元左右);其次,目前笔记本上的PCMCIA接口正逐渐被一种新的ExpressCard接口替代,这两个接口是完全不同的。所以这个办法也只能作为过度的方案。
     需要提醒读者的是,商场上有一种USB to PRINT的接口转换线,价格仅几十元。但这个转换接口仅是通过USB口实现连接并口打印机的功能,并没有实现并口的全面转换(在WINDOWS的硬件设备中,看到的是USB口设备,不是并行口设备),所以根本不能使用并口ISP下载线。
3.自制USB下载线
     在现在的电脑上,USB已经是一个通用标准的接口了,因此国外有一些AVR的爱好者在不断尝试设计制作简单的USB下载线。目前在网上能够发现的有2类做法:一种是设计制作USB To Parallel的USB口转全功能的并口转换器,这样相当笔记本上配有了与台式PC的并口全兼容的接口,那么直接使用并口ISP下载线就可能了。这应该育种完善的比较好的想法,但这种转换器比较复杂,实现起来比较困难,目前已经可以实现大部分的功能了,但还存在者不稳定和兼容的问题。另一种是直接设计通过USB接口支持的简单的下载线,它的优点是成本低,便于自己动手制作。这个办法也是比较可行的方案。
     经过笔者对以上3种方案的多次尝试,认为到目前为止以上3种方案都存在这样或那样的不足,都没有使用并口ISP下载线来的方便。这也证明技术在不断的发展和进步,需要大家不断的能力,设计出更方便、更实用的工具。

E.2 自制USB下载线
     为了解决在教学中的困难,笔者根据网上的资料,进行了仔细的分析和整理,并在此基础上制作的基于一片ATmega8模拟USB接口的ASPISP下载线。一共做了三十几块提供学生使用。经过半年时间的实际使用检验,没有发现大的问题。现提供全部资料。
     首先需要声明的,笔者没有编写一句代码,仅对硬件做了调整。所有资料和代码都是开源的。
1.AVRISP的固件采用网上德国人的07.3.28的最新版固件,各位可以跟踪该网站(http://www.ullihome.de/index.php/USBAVR-ISP)获得最新的信息。他提供2种模式的固件,我使用的是兼容AVRASP的。该网站还提供了固件的源代码。
2.配置AVRISP上ATmega8的熔丝位:电源检测电压为2.7v;检测有效;系统使用高频外部晶体;高频满幅震荡。具体参数如下:
     BODLEVEL = 1                 (BOD电压为2.7v)
     BODEN = 0                 (BOD有效)
     CKSEL="1111",SUT=11         (高频外部晶体,64ms启动延时时间)
     CKOPT = 0                 (高频满幅震荡)
3.Windows下的驱动也是使用该网站上所提供的驱动软件,我仅改了一个地方,将《Modem3="Communications Port"》改为《Modem3="USBASP-ISP"》,这样在Windows的设备管理器中看到的设备为“USBASP-ISP”。
4.编程下载软件采用最新版的AVR STUDIO。AVRISP的固件(07.3.28)就是配合最新版的AVR STUDIO使用的。旧版本的AVR STUDIO也能用,可能要跳出更新固件代码的窗口,直接关闭即可。在AVR STUDIO外的其它开发环境中使用不正常,或不支持,或支持的不好。
5.如果你的笔记本中有很多的串口设备,则需要进行一定的调整,将USBASP-ISP对应的COM口号降到9以下,即对应在COM0~COM9之间。其原因是AVR STUDIO中的串口仅能连接逻辑号为COM9以下的串口设备(这个对计算机不熟悉的用户就不方便了)。
     所有的资料全部在光盘中提供,具体的一些制作方法可以参考德国制作者的网站,或到http://www.ouravr.com中查找相关的信息,笔者已经将制作过程和如何使用完整的发布在网站上。

笔者之所以提供这个USBISP的制作方案,出于以下原因:
   有相当的实际使用价值,解决实际中的困难。
?硬件相当简单,成本低廉,制作方便,方便自己制作。
?本身就是AVR的应用,有全部的开源代码和参考资料,作为实战训练也好,以及想在技术上更深入的学习和提高,它都是一个非常好的项目。
?USBISP东西随小,但在技术上要求高,涉及到很多的层面,包括USB协议、AVR的应用、AVR的编程下载、Windows的低层硬件接口和驱动程序等等。如果能在仿制的基础上,深入学习了解和掌握这些知识,并能进行改进,那么在技术上的收获将远远超过USBISP下载线本身的价值。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客