找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8473|回复: 5
打印 上一主题 下一主题
收起左侧

改造USBasp编程器用arduino烧录引导程序

[复制链接]
跳转到指定楼层
楼主
玩arduino的朋友应该都知道常用的arduino的处理器几乎都是atmega系列的单片机(AVR单片机一种)想要更加灵活的玩转arduino的莫过于自己制作一块arduino主板,但这就带来了一个问题——BootLoader的烧录(也就是引导程序的烧录)

arduino的BootLoader不能使用串口烧录这是常识(我个人认为),唯一的办法就是编程器(也叫烧录器或下载器)
可以将一块arduino板子制作成arduinoISP,但据说并不稳定,有一定概率烧录失败(我并没有有试验过,所以具体情况我也不太清楚,用过的可以说一下)
还有就是目前最便宜的编程器也就是是USBasp(国内大部分AVR单片机用的都是这种),也就是下图这种(颜色不一定相同)
注:USBisp和USBasp并不是同一种下载器,某宝搜出来的虽然写的是isp,但几乎都是智峰USBasp

某宝一搜USBasp出来一大堆(本文仅针对这种带外壳,插头向后的烧录器,其他的不保证成功
因为arduino的jtag接口是6p的,所以要再接上一个10p转6p的转换头(当然直接用杜邦线接也可以)


但很多人买回来连上电脑后并不能使用,在arduino上点击“烧录引导程序”会提示:
avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
烧录引导程序出错。



原因在于目前国内的USBasp大部分使用的是国内“智峰”的USBasp编程器的程序固件,虽然免驱,但只能用智峰的下载软件progisp。而arduino官方的烧录程序识别的是国际版USBasp,也就是说虽然都是USBasp,但固件和驱动完全不一样(这也是为什么很多的USBasp不能在Linux上对AVR单片机烧录程序的原因)

因此,如果要用USBasp烧录引导程序,我知道两种办法
一:在arduino安装目录找到BootLoader的hex文件,然后使用progisp进行烧录,但这种方法比较麻烦,每次换不同的版型都要更换flash、更换配置(熔丝位设置等等,设置不当还会引起单片机锁死,然而解锁更麻烦)网上已经有这种方法了,在此不介绍
二:还一种就是我琢磨了好久才解决的一种办法,把智峰的USBasp改造成国际版,一劳永逸,做成之后就可以直接用改造后的USBasp下载BootLoader,也可以使用编程器上传arduino程序

改造方法如下:
一 前期准备:
  硬件
    两个USBasp烧录器(改造完后一个是智峰驱动,一个是通用版,以后就有两种USBasp下载器,面对不同情况,毕竟progisp大多时候还是比通用版AVR烧录程序很好用)
    一根USBasp下载线(买的时候一般都有)
    尖头短路镊子(没有也可以用导线代替)
    烙铁等电工工具
  软件
USBasp固件(解压)   http://www.fischl.de/usbasp/
    智峰progisp   http://www.pc6.com/softview/SoftView_118051.html
    Zadig(驱动安装)  http://zadig.akeo.ie/


二 硬件修改:
把其中一个USBasp的外壳拆掉,手拿着外壳(不要碰尾端),USB头向下,对着硬板或地面向下一压就拆掉了

注意图上用红线标记的地方(B短路点),有个0欧的电阻,有的下载器是直接用焊锡焊成一个点
把0欧的电阻焊掉或把锡点焊开,也就是让线路断开(重要)

把两个编程器用下载线连接起来


将智峰USBasp插在电脑上

用短路镊子连接待改造的编程器的“up”两侧对应的两个过孔(也可以用导线临时焊接在一起)
下载固件期间“up”两端的过孔须保持连接状态,下载完成后断开(不用立即断开)



三 固件下载:
打开progisp
确认改造的USBasp处理器型号,图中所示位置,应为atmega8或atmega88或atmega48,后缀A、L之类的可以忽略


点右侧“调入Flash”,在下载的“USBasp固件”中打开“in irmware
可以分别找到对应的型号atmega8、atmega48、atmega88的hex文件
按图示下载程序,可按图示框选相应选项

熔丝位设置方式,可以直接在下方输入
ATMEGA8设置为   低位值EF,高位值C9
ATMEGA48设置为 低位值FF,高位值DD
ATMEGA88设置为 低位值FF,高位值DD


固件下载成功后
断开“up”对应电路
可关闭progisp

四 安装驱动:
拔掉智峰USBasp,插上改造后的USBasp,电脑会提示安装驱动失败或其他提示(也有提示成功的,为保万一还是再装一下,因为驱动有3种),忽略
打开Zadig
选择 Options->List All Devices
在下拉框中选择USBasp(一定不要选错)
绿色箭头右侧选择为WinUSB
然后Install Driver(我已经安装过了,所以显示为Reinstall Driver)

注:arduino对应驱动为WinUSB,而如果想用AVRDUDE下载AVR程序,需要将驱动改为libusb-win32或libusbK




至此,一个公版USBasp就改造完成了
不仅arduino可以用来烧录BootLoader,linux也可以用来下载程序了

评分

参与人数 2黑币 +55 收起 理由
QQwert + 5 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:85865 发表于 2018-2-8 13:41 | 只看该作者
这个好,学习了,准备也改一个试试
回复

使用道具 举报

板凳
ID:85865 发表于 2018-2-8 14:33 | 只看该作者
WINUSB 和 Libusb 驱动不能共存的吗?
回复

使用道具 举报

地板
ID:85865 发表于 2018-2-8 14:34 | 只看该作者
用arduino可以来烧录BootLoader,就不能用progisp来烧录
回复

使用道具 举报

5#
ID:283192 发表于 2018-2-8 21:00 | 只看该作者
学习了  谢谢分享
回复

使用道具 举报

6#
ID:304003 发表于 2018-4-9 10:31 | 只看该作者
好东西
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表