分享

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

 旭日东升4k165w 2019-09-02
本帖最后由 KMKA 于 2018-2-7 01:59 编辑

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

arduino的BootLoader不能使用串口烧录这是常识(我个人认为),唯一的办法就是编程器(也叫烧录器或下载器)
可以将一块arduino板子制作成arduinoISP,但据说并不稳定,有一定概率烧录失败(我并没有有试验过,所以具体情况我也不太清楚,用过的可以说一下)
还有就是目前最便宜的编程器也就是是USBasp(国内大部分AVR单片机用的都是这种),也就是下图这种(颜色不一定相同)
注:USBisp和USBasp并不是同一种下载器,某宝搜出来的虽然写的是isp,但几乎都是智峰USBasp
IMG_20180206_230810.jpg
某宝一搜USBasp出来一大堆(本文仅针对这种带外壳,插头向后的烧录器,其他的不保证成功
因为arduino的jtag接口是6p的,所以要再接上一个10p转6p的转换头(当然直接用杜邦线接也可以)
IMG_20180206_232919.jpg

但很多人买回来连上电脑后并不能使用,在arduino上点击“烧录引导程序”会提示:
avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.' 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./usbasp/
    智峰progisp   http://www.pc6.com/softview/SoftView_118051.html
    Zadig(驱动安装)  http://zadig./


二 硬件修改:
把其中一个USBasp的外壳拆掉,手拿着外壳(不要碰尾端),USB头向下,对着硬板或地面向下一压就拆掉了
拆除外壳
注意图上用红线标记的地方(B短路点),有个0欧的电阻,有的下载器是直接用焊锡焊成一个点
把0欧的电阻焊掉或把锡点焊开,也就是让线路断开(重要

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


将智峰USBasp插在电脑上

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


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

点右侧“调入Flash”,在下载的“USBasp固件”中打开“\bin\firmware\
可以分别找到对应的型号atmega8、atmega48、atmega88的hex文件
按图示下载程序,可按图示框选相应选项
mcu.jpg
熔丝位设置方式,可以直接在下方输入
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)
test.jpg
注:arduino对应驱动为WinUSB,而如果想用AVRDUDE下载AVR程序,需要将驱动改为libusb-win32或libusbK




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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多