[分享] 自制USBISP下载线

fengzilele   2008-6-26 09:13 楼主

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下载线本身的价值。

回复评论 (21)

自制USBISP下载线

根据网上的资料整理制作的基于M8的USB接口的ASPISP下载线。做了30几块,有30几位使用,除个别由于焊接问题,没有发现大的问题。现提供全部资料。
点赞  2008-6-26 09:14

自制USBISP下载线

点赞  2008-6-26 09:14

自制USBISP下载线

首先声明,我没有编写一句代码,仅对硬件做了调整。
1。AVRISP的固件采用网上德国人的07.3.28的最新版固件,各位可以跟踪该网站,获得最新的信息。他提供2种模式的固件,我使用的是兼容AVRASP的。该网站还提供了固件的源代码。

2。windows驱动也是该网上提供的,我仅改了一句:
    将;Modem3="Communications Port"改为Modem3="USBASP-ISP"
    这样在windows中看到的设备为“USBASP-ISP”
3。 下载软件采用最新版的AVRSTUDIO。该3月28日的固件就是配合最新版的AVRSTUDIO使用的,老版的AVR STUDIO也能用,可能要跳出更新固件代码的窗口,直接关闭即可。在AVR STUDIO外的其它开发环境中使用不正常,或不支持,或支持的不好。

制作
1。硬件......
2。将固件写入AVRISP的M8中。
    a/ 在USB口接入5V电源,将JP短路,选择其它的一个AVR编程器如并口的ISP编程器,将其编程口接在AVRISP的编程口上。
    b/ 配置AVRISP上M8的熔丝位:电源检测电压为2.7v,检测有效;系统使用高频外部晶体;满幅震荡!!
    c/ 写固件
3。将AVRISP上的JP开路,插到本本的USB口上,安装wondows驱动。驱动安装成功后,可以在windows的设备管理中看到一个串口设备USBASP-ISP。该驱动将AVRISP作为串口设备,占用一个COM口。请查看该COM口的号码。
4。如果你的本本中有很多的串口设备,需要进行调整,将USBASP-ISP对应的COM口号降到9以下,即在COM0-COM9。原因是AVR STUDIO中的串口仅能连接COM9以下的串口设备。(这个对计算机不熟悉的用户就不方便了)

使用
1。以上完成后,打开AVR STUDIO。在Tools->Program AVR->Connect中选择STK500 or AVRISP
可以使用aoto让STUDIO自己找,也可直接选择AVRISP对应的COM口。


2。出现以下窗口STK500 with top module '0x00'说明AVRISP正常,可以工作。
注意选择要编程的AVR芯片型号,和编程方式为ISP mode!!

3。在这里可以设置AVRISP的编程速度(AVRISP有记忆的)。选择速度后按WRITE按钮。


4。对于编程工作在1M以下的AVR芯片,要降低AVRISP的编程速度,否则回出现错误提示:
点赞  2008-6-26 09:17

回复 4楼 的帖子

5。当被编程的AVR芯片工作在2M以上时,可以使用最高的速度,下载程序还是比较快的。速度的选择比较重要,如果采用低速,下载程序的时间不太容易忍受了。


6。在使用中可能会由于目标板的上电、断电等,会造成USBISP连接不上,此时将AVRIAP从本本的USB口拔下,然后从新插上,在AVR STUDIO中需要重新连接一下(从1开始)既可。

总结:
不如并口的ISP方便,因为在ICC、CVAVR、BASCOM中可以直接使用STK200/STK300的并口ISP。AVRISP只能在AVR STUDIO中使用,并且速度不能自动调节。但对没有并口的本本来说,还是一个比较好的方案。

另外,对于这个AVRISP的制作,可以在它的基础上深入学习,提高水平,因为是全部公开的。其它的方案只能作为工具使用,不方便深入的学习和研究。这也是我推荐AVRISP的原因。

本方案全部采用免费资源,应该无版权的官司之争。如果有侵权的部分,请告之。
点赞  2008-6-26 09:18
感谢楼主分享!
点赞  2008-6-26 09:36

HAO

我想要原理图,及PCB啊,还有监控程序
点赞  2008-6-26 10:17
xiexiexxxxxxxxxxxxxxxx
点赞  2008-6-26 10:56

牛!把ma老师也请来了

引用: 原帖由 machao 于 2008-6-26 09:13 发表
USBISP东西随小,但在技术上要求高,涉及到很多的层面,包括USB协议、AVR的应用、AVR的编程下载、Windows的低层硬件接口和驱动程序等等。如果能在仿制的基础上,深入学习了解和掌握这些知识,并能进行改进,那么在技术上的收获将远远超过USBISP下载线本身的价值。

万万分赞同!网上乱78糟可下载的参考代码很多,看似简单,但要各环节都弄清楚却是难之又难,没有广泛的知识会处处碰壁。
AVR俺刚玩开了个头,正在碰壁的时候,却又因种田忙得没时间玩了,唉……
点赞  2008-6-26 12:18

完全看不懂。。。。

我看了半天没明白 data【1】中的数据是哪里传递过来的 :'(
点赞  2008-7-11 09:00

原来通过上位机控制的。。。。怪不得找不到了。。。

为什么m8下面 电脑可以识别内
m48下死活不认
需要修改哪些函数呀
点赞  2008-7-11 10:12

好贴

点赞  2008-9-29 15:20

Re: [讨论] 自制USBISP下载线

留个爪印。。
点赞  2009-3-29 20:30

Re: [讨论] 自制USBISP下载线

好东东!
点赞  2009-4-10 12:07
学习下,累计知识中,谢谢
点赞  2009-4-23 20:29
xiexie
点赞  2010-4-2 21:35
有点笼统
点赞  2010-5-7 18:56
感谢楼主分享!
点赞  2011-3-14 16:28
学习
点赞  2011-12-2 21:25
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复