USBISP下载arduino bootloaders

手上一块arduino不工作了,怀疑芯片故障了,新买来328P后只是块avr单片机,并不能直接用来做arduino,需要刷入arduino的 bootloaders后就是一样的arduino了。

买来usb ISP,才发现arduino的IDE里只支持的编程器名称有USBtinyISP和USBasp,虽然我不知道这几种与USBISP有什么区别,但显然跟我手上这个还有点差别。

USBISP就是烧录avr和51的烧录器,肯定是支持我来烧录bootloaders的。

首先,编程器带的线是10PIN的,arduino上的编程口是6PIN的,需要一个转换。

网上有专门卖转换插头,显然我没有买,根据引脚定义,直接用杜邦线连接起来就可以了。

以下引用了别人的图片:

烧写mega328p的bootloader: 如下图,插好设备板上的”ON”指示灯会点亮。

打开软件progisp,步骤如下

1、修改芯片为328P
2、点击RD,下边应提示读出ID成功。
3、熔丝位设置。
在hardware\arduino\avr\boards.txt文件里有这样代码:


##############################################################

uno.name=Arduino/Genuino Uno

uno.vid.0=0x2341
uno.pid.0=0x0043
uno.vid.1=0x2341
uno.pid.1=0x0001
uno.vid.2=0x2A03
uno.pid.2=0x0043
uno.vid.3=0x2341
uno.pid.3=0x0243

uno.upload.tool=avrdude
uno.upload.protocol=arduino
uno.upload.maximum_size=32256
uno.upload.maximum_data_size=2048
uno.upload.speed=115200

uno.bootloader.tool=avrdude
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0x05
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.bootloader.file=optiboot/optiboot_atmega328.hex

uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.board=AVR_UNO
uno.build.core=arduino
uno.build.variant=standard

##############################################################

uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0x05

就是说熔断位应设置为低位FF,高位DE,扩展位05

设置好后要写入,检验熔丝位有没有正确写入,可以在点写入之后再点读出,看是否与写入相同!

4、调用flash文件,文件在hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex

5、点自动,稍等一下就可以测试arduino了。

ISP下载软件

扩展:原版arduino uno R3 的串口是Mega16u2,烧录串口的方式是熔丝位:低位FF,高位D9,扩展位f4.固件在\hardware\arduino\avr\firmwares\atmegaxxu2\Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex

 

此条目发表在待分类分类目录。将固定链接加入收藏夹。