在arduino开发过程中,我们可能会遇到主控烧坏需要重新更换MCU,或者是自己画基于arduino开发的主板需要自行烧录arduino的bootloader的时候。网上很多教程都会告知如何用可正常使用的arduino开发给丢bootloader的板子刷写bootloader,但是像mega2560、uno这类的板子usb转串口是使用16u2,8u2芯片模拟出来的usbserial,一旦该芯片固件损坏或没有烧写,那么arduino还是无法正常连接pc使用的。本文在介绍如何使用正常的arduino开发板给修缮的arduino开发板重烧bootloader之余,还将记录如何使用arduino给16u2烧写usbserial固件。
一、准备工作:
1,一片可以正常使用的arduino开发版,本文以arduino uno举例;
2,需要重写bootloader的arduino开发板;
3,杜邦线6条,usb延长线一条;
4,安装有arduino IDE的PC;
二、储备知识:
1,ICSP/ISP接口定义(如图):
*MISO---VCC
SCK----MOSI
RST----GND
2,开发板硬件链接(如图):
注意,下方为正常使用的板子,上方为待烧写的板子,待烧写的主板也可直接将线接到右侧的icsp口上(D10接RESET,D11接MOSI,D12接MISO,D13接SCK,vcc接5v,GND接GND)。
三,烧写bootloader:
1,打开arduino IDE,在文件->示例->Arduinoisp中打开arduinoisp项目。
2,选择对应的开发板选项,该选项是你正常使用的arduino主板:
,选择好对应的主板,com口
3,将usb数据线链接到正常使用的arduino开发板,烧录arduino as isp
到此,arduino as isp 已制作完成。
四,使用arduino as isp烧录新主板的bootloader。
1,按开发板链接图将需要烧写bootloader的开发板链接到正常使用的uno上;
2,打开arduinoIDE,将开发板设置成待烧录的开发板型号;
3,将usb数据线链接到正常使用的arduino,并选择识别的com口;
4,编程器选择“arduino as isp”
5,点击“工具-->烧录引导程序”完成新bootloader的烧写;
五,使用arduino as isp烧写16u2(8u2同)的usbserial固件:
1,重新将D10,11,12,13的线链接到16u2的ICSP口上(D10接RESET,D11接MOSI,D12接MISO,D13接SCK,vcc接5v,GND接GND);
2,编写一份cmd脚本,内容如下:
C:\Progra~2\Arduino\hardware\tools\avr/bin/avrdude -CC:\Progra~2\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM4 -b19200 -e -Ulock:w:0x0F:m -Uefuse:w:0xF4:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m
C:\Progra~2\Arduino\hardware\tools\avr/bin/avrdude -CC:\Progra~2\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM4 -b19200 -Uflash:w:C:\Progra~2\Arduino\hardware\arduino\avr/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex:i -Ulock:w:0x0F:m@echo offecho 按下任意键退出...pause>null
3,将该代码保存成.cmd格式,设置权限运行;
4,出现如下图所示信息则证明刷写成功
注意:批处理中,“C:\Progra~2\Arduino\”为你arduinoIDE的安装路径,请自行完全替换,“-PCOM4”,替换为你pc端口识别的com口序号,“Ulock:w:0x0F:m -Uefuse:w:0xF4:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m”这些为16u2/8u2熔丝位,不必更改。
至此,16u2的usbserial烧写完毕。