这篇文章上次修改于 474 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

电子坑深似海,各位尽早脱坑吧

烧录Bootloader

准备工具和元件

  • ATmega328P
  • 22pf陶瓷电容 x2
  • 16MHz晶振
  • USBasp或者USBtinyISP
  • 面包板和跳线杜邦线若干

接线方式

2018-12-16_22-45-31.png
搭建晶振电路,连接电源和ISP
Inkedcb2x5-x07yf_LI.jpg

烧录程序

下载progisp并打开,由于不是开源软件就不共享了,搜索下就能找到
img
选择芯片为ATmega328P
点击RD按钮,如果提示"读出ID成功",说明你的芯片和连线都是OK的

img

打开目录Arduino\hardware\arduino\avr(就是arduino IDE的文件夹),找到boards文件

打开它,你可以看到配置文件,根据配置文件,你可以找到hex文件所在路径,以及熔丝位的配置。

img

然后点开省略号按钮弹出以下窗口

img

根据文件你电脑上boards.txt列出的值填写即可

接下来是最后一步,烧录hex文件
目录在Arduino\hardware\arduino\avr\bootloaders\optiboot
img

img

点击“打开”按钮后,再进行关键一步,设置编程参数!千万不能省。

严禁勾选“加密芯片”选项!否则你的芯片可能跪了。

我们只勾选三个选项:校验falsh,芯片擦除,编程flash,如下图所示。(如果是首次烧录BootLoader,需要勾选编程熔丝)
设置完毕后,点击“自动按钮”,这样我们就完成了bootloader的烧写。

img

如果你有一个Arduino UNO R3的话,可以把这块芯片更换上去,测试下能不能正常工作。
也可以用接下来的方法烧一个Blink程序试试

使用FTDI Basic或USB转TTL烧录Arduino程序

USB转TTL接线方式

首先是普通的USB转TTL,接线方式如下图。
在D13脚可以接一个LED二极管,方便测试arduino(比如Blink程序)是否正常工作。

2018-12-16_23-26-26.png
这种接线方式有一个小问题:没有复位电路,程序不会自动烧录
2018-12-16_23-37-29.png
解决方法也很简单,在上传程序时,将RST(第一脚)连接到GND,直到微处理器进入复位状态,立即拨开RST脚与GND连接,下载程序(安装一个按钮在RST脚旁边也是一个不错的方法)。

FTDI Basic

如果你的是FTDI Basic这一类带DTR引脚的传输线,接法如下,这样就可以自动烧录程序了。

2018-12-16_23-45-05.png

参考

使用USBasp给arduino烧写bootloader
面包板图例来自《完美图解Arduino互动设计入门》
非常棒的Arduino入门书籍,强烈安利