Arduino UNO给Arduino Nano刷程序 (Arduino As ISP)

废话不多说,材料:Arduino UNO、Arduino Nano、杜邦线、Arduino UNO的USB连接线、Arduino IDE。

(一)先按照上图将Arduino UNO和Arduino Nano用杜邦线连起来。

(二)给UNO刷上 ArduinoISP 程序 :
“菜单 >> File(文件) >> Examples(示例) >> 11.ArduinoISP >> ArduinoISP”
这个时候你的UNO就变成了一个编程器
如下图所示:

(三)配置选项
选择:
“菜单 >> Tools(工具)>> Board(板): Arduino Nano”
“菜单 >> Tools(工具)>> Processor(处理器): ATmega328p (Old Bootloader)”
“菜单 >> Tools(工具)>> Programmer(编程器): Arduino As ISP”
然后打开你要刷的程序
如下图所示:

若是空片,则需要点击:
“菜单 >> Sketch(项目) >> Burn Bootloader(烧录引导程序)”
如果不是空片就跳过这一步

(四)编译+通过Arduino As ISP编程器上传程序
点击:
“菜单 >> Sketch(项目) >> Upload Using Programmer(使用编程器上传)”
或者可以使用快捷键Ctrl+Shift+U
也可以按住Shift点上传按钮

完工

一些零零散散的东西

1.关于Arduino As ISP刷写进去之后芯片运行速度很慢
这个一看就是熔丝位没设置好,烧录一下引导程序即可,这个会自动设置熔丝位。

2.关于ArduinoISP程序的SPI Clock
SPI Clock必须要比芯片时钟频率慢至少4倍以上,例如Atmega328p可以使用16MHz的外部晶振,因此SPI Clock可以设置为16000000/6,但是写入空片的时候由于芯片使用的是8MHz的内部晶振而不是16MHz的外部晶振,SPI Clock需要低于8000000/4,否则会无法读取芯片签名。

2.关于Arduino As ISP刷写速度
找到:
#define BAUDRATE 19200
改成
#define BAUDRATE 115200
刷进Uno,同时,在你Arduino的安装目录里找到hardware\arduino\avr里的programmer.txt,把arduinoasisp.name=Arduino as ISP 下的 arduinoasisp.speed和arduinoasisp.program.speed后面的19200改成115200,重启Arduino IDE即可