将USBASP改造成STK502编程器(转)
现在淘宝上还有不少USBasp或者USBisp的51/AVR编程器,它们使用了开源的USBasp硬件,以及PROGISP软件或者其它一些下载软件。其实我们可以非常方便的将它们改为STK502编程器,不但稳定性更好,也可以和AVR Studio无缝集成,使用更加方便。
USBasp是开源项目AVRDoper出现之前比较有名的一个开源USB编程器项目,它可以对AVR单片机进行编程。它使用avrdude等软件做为上位机编程软件,可以在Windows和Linux操作系统中使用,但是它不能用于AVR Studio软件中,因为它的驱动使用了libusb,而不是STK500的串口方式。
下图是一个简化了的使用AVRUSB的STK502编程器的原理图,是开源项目AVR-Doper的简化版本。为了更容易说明AVRUSB部分的功能,这里只保留了USB接口和编程接口部分的电路,去掉了电平转换、端口保护电路、升压电路、高压编程等功能,这也是AVR业余爱好者DIY时常用的一个电路。淘宝上的USBASP和这个差不多,基本没有任何保护电路(十多元的东西,要求也没有办法太高了)。如果想做一个功能完善、带有良好保护电路的STK502编程器,可以参考一下AVRUSB的开源项目AVRDoper,它提供了详细的原理图和完整的代码。
下图中XS1作为编程接口,它使用了标准的6芯接口方式,通过它可以对其它单片机进行编程(XS1也可以使用10芯的接口方式)。如果将P1使用短路块连接,那么这个接口也可以作为外部编程器对单片机U1的编程接口,方便升级单片机的程序,或者写入Bootloader、改变熔丝位等。

因为AVR-doper这个项目已经提供了完整的参考程序,所以只需要拿过来修改一下参数就能使用(主要就是USB接口D+和D-部分的参数和编程接口的定义)。和其它AVRUSB项目的参数设置不同,这个项目的参数配置稍微有一点特殊,它不是直接修改参数配置文件usbconfig.h,而是修改另外一个硬件配置文件hardware.h。打开文件hardware.h后,找到下面代码段后,就可以根据说明修改对应的参数:
/* The following defines can be used with the PORT_* macros from utils.h */ //这一行选择硬件,1代表使用USBASP硬件方式
#define USBASP_HARDWARE 1 #if USBASP_HARDWARE /* USBasp hardware from www.fischl.de/usbasp/ */ #undef ENABLE_HVPROG
#define ENABLE_HVPROG 0
#define METABOARD_HARDWARE 1 /* most settings are the same as for metaboard */ //定义LED指示灯接口
#define HWPIN_LED C, 1
#define HWPIN_ISP_SUPPLY1 C, 3 /* these pins are NC on USBasp */
#define HWPIN_ISP_SUPPLY2 C, 4 //定义ISP编程端口,也就是硬件SPI端口
#define HWPIN_ISP_RESET B, 2
#define HWPIN_ISP_MOSI B, 3
#define HWPIN_ISP_MISO B, 4
#define HWPIN_ISP_SCK B, 5 //USB接口,DPLUS代表D+,DMINUS代表D-
#define HWPIN_USB_DPLUS D, 2
#define HWPIN_USB_DMINUS D, 4
#define HWPIN_ISP_TXD D, 0
#define HWPIN_ISP_RXD D, 1
#define HWPIN_JUMPER C, 2 #elif METABOARD_HARDWARE /* Metaboard hardware from www.obdev.at/goto?t=metaboard */
上面的参数配置是对应上面的参考电路图,大家可以根据自己使用的单片机和具体硬件电路修改上面的参数。最主要的参数就是上面深色背景表示的参数,它们分别对应LED指示、ISP编程接口、USB接口等。修改并保存参数后,重新编译整个项目,最后下载到单片机中就可以进行编程测试了。
如果使用BootloadHID配合AVR-Doper,效果更好。用户可以随时通过USB升级编程器固件程序,或者改变程序的功能。
avrdoper.zip (117.44 KB, 下载次数: 20)
点击文件名下载附件
将USBASP改造成STK502编程器(转)的更多相关文章
- IC开短路测试(open_short_test),编程器测试接触不良、开短路
http://kitebee.meibu.com/forum.php?mod=viewthread&tid=69654&extra=page%3D5 IC开短路测试(open_shor ...
- 编程器NAND Flash 技术入门
NAND Flash分类 SLC(Single-Level Cell)架构:单一储存单元(Cell)可储存1bit data MLC(Multi-Level Cell)架构:单一储存单元(Cell)可 ...
- XPROG-m编程器
XPROG-m编程器是为取代较早版本的XPROG编程器而设计的. XPROG-m编程器硬件完全与XPROG编程器向上兼容,还具有其它许多功能. 该XPROG - M支持摩托罗拉68HC05,68HC0 ...
- 利用CH341A编程器刷新BIOS,恢复BIOS,妈妈再也不用担心BIOS刷坏了
前几天,修电脑主析就捣鼓刷BIOS,结果刷完黑屏开不了机,立刻意识到完了,BIOS刷错了.就从网上查资料,各种方法试了个遍,什么用处都没有.终于功夫不负有心人,找到了编码器,知道了怎么用.下面看看具体 ...
- ELINK编程器典型场景之远程镜像
当不想直接提供Hex/Bin等二进制程序文件给用户时,通过生成远程镜像功能将程序文件加密后,再提供给用户自行脱机下载来达到远程更新的目的. 远程镜像生成的一般步骤为由客户端提供SN码,本地依据SN码加 ...
- ELINK编程器典型场景之多APP文件下载
有些应用场合中,单MCU内会采用BootLoader+APP1+APP2的加载模式,程序启动时先进入BootLoader程序,依据设定条件跳转至APPx应用运行:为满足此类需求,设计多达5个程序文件( ...
- ELINK编程器能用来做什么
以前 产品量产与测试的时候,在电脑上用JATG/SWD编程器或串口下载器等工具下载程序到产品中,效率低且操作复杂 现在 可以用ELINK脱机编程器来摆脱电脑并降低操作复杂度,只需把程序文件下载到 ...
- ELINK离线编程器常见问题
Q1 编程器是否可以接JTAG JTAG接口已经包含SWD接口引脚,按以下引脚对应接线即可: SWDIO->目标板JTAG 的JTMS SWCLK->目标板JTAG 的JTCK Q2 PC ...
- ELINK离线编程器版本说明
ELINK离线编程器版本详情,ELinkPROG版本与固件版本须匹配使用! 编程器支持芯片详细列表参见 https://www.cnblogs.com/raswin/p/9303300.html
随机推荐
- linux ubuntu下如何安装并且切换java版本(Unsupported major.minor version 52.0)
最近在做一个dcos(数据中心操作系统)的东西,需要用marathon来做进程管理.遗憾的是0.6版本的marathon在API方面很是缺少,换成了0.15版本之后,运行时提示“Unsupported ...
- CGRect相关工具函数
NSStringFromCGRect(aCGRect): CGRectFromString(aString):如果把视图的框架以字符串的形式放在NSUserDefaults里面,那么该方法可以将其转回 ...
- Debian 安装Nvidia显卡驱动
1.到nvidia官方网站下载自己显卡对应型号得驱动,如果不知道显卡型号,可以使用如下命令来查看 lspci | grep VGA 2.安装显卡驱动所必需得工具 apt-get install bui ...
- c++绘图软件<一>
准备写一个绘图软件,参考了三层架构(表现层.业务逻辑层.数据访问层). //////////////////////////////////////////////////////////////// ...
- eclipse修改豆沙绿
长时间的使用eclipse开发会很累吧 设置一个保护眼睛的豆沙绿色 不刺眼 是不是会更好一些呢 那么如何设置呢现在就教大家 工具/原料 eclipse jdk 方法/步骤 1 首先打开eclip ...
- linux shell 远程执行命令
经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...
- unit正交相机Size的计算公式
如:相机的大小为800*480,要使相机适应800*480像素的图,则 Size = 相机高/2/像素单位 = 480/2/100 = 2.4
- linux通过history查看命令执行时间
Linux的bash内部命令history就可以显示命令行的命令历史,默认环境执行 history 命令后,通常只会显示已执行命令的序号和命令本身.如果想要查看命令历史的时间戳,那么可以执行:# ex ...
- ERROR: No pool defined. at least one pool section must be specified in config file
root@ubuntu:/opt/php7# /opt/php7/sbin/php-fpm [22-Sep-2015 14:29:00] WARNING: Nothing matches the in ...
- Android开发实现HttpClient工具类
在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.你可以把HttpClient想 ...