很早就听说过Arduino开发板,其主要特点就是,简单易用,上手很快,官方已经封装好了常用的库,开发起来非常方便快捷,于是,我就准备自制一块Arduino板。
1.首先我直接Copy了官方leonardo板的原理图,其中图中圈出来的部分是可选的,剩下的是必须的。
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\fd4157da4e2d4c0f93f070eb6c2bbd91\102709044739.png)
2.打PCB、焊接、测试
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\3bdb159dc7db461898ef2411c5c29516\027090825181.png)
3.硬件上基本上没有问题,现在开始调试软件,首先我们需要去官网下载环境包,注意不仅仅是ArduinoIDE,还有驱动、Bootloader代码等等文件,这些都放在一个压缩包内,官网直接下载这个压缩包即可,解压后类似这样,我这里用的是
1.5.6版本
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\fc473923d9734fb5bae3b7c3315638d2\027091555850.png)
我们第一步要做的就是把Bootloader代码下载到单片机,目的是让它变成Arduino,否则它只是一个ATMEGA32单片机,Bootloader代码就在我们刚刚下的环境包中
C:\Users\Administrator\Desktop\Arduino\arduino-1.5.6-r2\hardware\arduino\avr\bootloaders\caterina
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\0d4a87a87af243f3835100476b1f0fba\027092014707.png)
在这里,我们可以发现Leonardo板两个Bootloader代码(Hex文件),随便选择一个即可 。
接下来,我们需要另一款工具来把这个Bootloader下载到我们的单片机中去–USBASP(某宝上10块钱包邮)
将下载器与单片机预留的ISP口对应连接即可
下载器 <===================>单片机
MISO <===================>MISO
MOSI <===================>MOSI
SCK <===================>SCK
RST<===================>RST
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\150e661369f74d33994ccae260258e25\027092328521.png)
此外我们还需要一款上位机配合这个下载器使用–PROGISP
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\87ee63e9735f47408a4907b372d640e9\027092851418.png)
AVR单片机比较重要的一步就是设置熔丝位,如果设置错误,就会锁死单片机,楼主很不幸,第一次就设置错了,导致单片机锁死,而且USBASP再也无法连接单片机,也就是说,锁死之后,你就无法通过本软件修改熔丝位了, 当然还有其他解救方法,我们后面会讲到,这里主要讲熔丝位的设置,主要针对ATMEGA32U4这个芯片,其他的请自行查看手册。
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\ac8863ed7f8b43f1a638cfae36beb4d0\027093401269.png)
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\acd0aaea95a84aaf88431d39363ab22a\102709344083.png)
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\ed0b7cc363cd46168ef75a58367bf657\102709353243.png)
Atmega32U4熔丝位配置如下:
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\3604bb4d343941f5a15c51e9ec73df89\031101420474.png)
点击自动按钮,等待编程完成,当看到如下界面,表示没有问题
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\3c64d9069fe24795afc2f48c8400ac39\031102313813.png)
此时,如果你的PC6口接了LED的话,那么这个LED应该开始闪烁起来了 ,有LED但是没闪烁,则上述步骤有错误,特别是熔丝位的设置,检查下熔丝位的设置和Bootloader代码,重新写入。
4.成功烧录之后,此时我们的板子就变成了Arduino Leonardo,但是还差一步,我们还没有安装驱动,此时如果插上USB线,windows是无法识别的,驱动就在我们下载的环境包的drives目录下,32和64位的驱动都包含在内。
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\10c3e0d1005d4677ae7b64a5d0e1feac\027093917691.png)
5.安装好驱动之后,我们插上USB。
![](C:\Users\stone\AppData\Local\YNote\data\enotsl@163.com\066c7f08bcac4c8bada070da3ebfb99e\027094250212.png)
大功告成!!!
最后我来讲下,熔丝位设置错误单片机被锁死的解决办法:
找一个可以正常工作的单片机,将其晶振的XTALOUT脚引出一根线到ATEMGA32U4的XTALIN脚,或者单片机直接输出一个时钟给ATMEGA32U4的XTALIN脚也行,我就是用STM32 PA8脚的时钟输出功能输出时钟给ATMEGA32U4的,然后打开PROGISP软件,你就会发现可以连上单片机了,赶快重新修改熔丝位,写入单片机把!