欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自制ArduinoUno R3开发板,烧写bootloader

程序员文章站 2022-06-09 10:57:45
...

自制Arduino uno R3开发板

主要步骤:

一、
系统板的电路设计与制作

二、 CH340G驱动安装

三、 USBasp驱动安装和为系统板烧写bootloader

本文将从以上三点详细讲解如何设计并制作Uno Mini系统板,主芯片采用Atmega328P,USB转TTL采用CH340G。

一、
系统板的电路设计与制作

1、

Atmega328P原理图

自制ArduinoUno R3开发板,烧写bootloader

以上是基本电路,必须全做。RESET端上拉1K电阻,保持高电平,下接按键后接地,当按键按下则RESET端拉低,芯片复位。RX和TX分别是串口的接收端和发送端,直接通过电阻接串口芯片CH340G的TX和RX端,注意,主芯片TX和串口芯片RX端接,主芯片RX和串口芯片TX端接,不可接反。VCC和GND接104PF退耦电容(此处电容由芯片厂家给出容值)。PB6和PB7接16M晶振电路,为芯片提供外部时钟。22PF是16M晶振常用谐振电容,应用广泛,部分由晶振厂家提供容值。1M电阻是防止晶振过度驱动,过分驱动晶振会渐渐损耗,减少晶振的接触电镀,这将引起频率的上升。AREF端下接一个104PF退耦电容接地,这是AD和DA功能基准电压引脚。ISCP作为USBasp下载电路接口,引出相应引脚即可。

2、

CH340G原理图

自制ArduinoUno R3开发板,烧写bootloader

这是最简单的CH340G电路,需要注意的是在使用5V电源时,需要在V3脚接一个104PF电容到地,V3引脚的电容用于内部电源节点退耦,来改善USB传输过程中的EMI,一般选用4700PF到0.1UF。D+和D-接口分别接USB端口D+和D-,一一对应即可。晶振电路同样是22PF谐振电容接12M晶振。在DTR引脚接一个104电容后到328P的RESET引脚,以避免Arduino下载电路时的手动复位,达到一键下载的效果。

3、7805稳压电路

自制ArduinoUno R3开发板,烧写bootloader

采用经典的7805稳压芯片电路。二极管防止输出与输入端压差造成芯片损坏。

4、 PCB设计注意

(1)、CH340G的V3引脚所接电容应该尽量接近芯片;

(2)、CH340G的VCC引脚接地的电容应尽量靠近芯片;

(3)、328P和340G的时钟电路应该尽量接近芯片;

二、CH340G驱动安装

340USB转串口芯片对WIN10的适用性较强。需要注意USB母座的D+、D-与芯片连接不能出错,电路不能有虚焊。驱动可以到沁恒官网下载(http://www.wch.cn/download/CH341SER_EXE.html)。下面展示如何安装驱动:

1、
下载好后点击CH341SER.EXE文件,弹出窗口,点击安装即可,如果此时未插入系统板,则会显示预安装成功,插入系统板后,无需再次安装,电脑将自动显示出模拟串口。

自制ArduinoUno R3开发板,烧写bootloader

2、
在未安装驱动时,正常情况下,设备管理器将显示如下,如果插入USB线后,设备管理器显示未知USB设备(设备描述符请求失败),那么可能是USB数据线与芯片连接出错,或者是虚焊。

自制ArduinoUno R3开发板,烧写bootloader

3、
安装驱动以后,设备管理器将显示出模拟串口,如下:

自制ArduinoUno R3开发板,烧写bootloader

至此,为CH340G安装驱动成功。

三、为系统板烧写bootloader

有两种方法,一是用USBasp等编程器为芯片烧写boot,二是用另一块Arduino板子为芯片烧写boot。这里采用第一种方式,注意如果用IDE通过USBasp给芯片烧写,由于某宝购买的USBasp大概率不是Arduino官方认可的,所以不容易成功。推荐使用progisp烧录程序给芯片直接烧写bootloader。

(一)、为USBasp安装驱动(文末附驱动文件夹下载地址)

对于WIN7 运行libusb-win32-bin-1.2.6.0文件夹下bin文件夹中的inf-wizard.exe文件即可

WIN10 64位系统下的方式是先禁用驱动程序强制签名后再安装驱动程序,具体做法如下:

设置­—更新与安全—恢复—立即重启,重启后出现蓝屏和选项后:

疑难解答—高级选项—启动设置—重启—按7选择禁用驱动程序强制签名。

接着打开设备管理器,右键点击带感叹号的USBasp,更新驱动,将驱动路径定位到驱动文件夹的X64文件下,点击安装,在弹出的安全警告中点击始终安装。安装后就能在设备管理器中查看到正常的USBasp了。

驱动安装成功后,推荐使用progisp烧写bootloader。

(二)、USBasp与系统板的连接方式

如果系统板有供电,那么USBasp上的VCC与GND就不需要与系统板连接。那么连接就是(不能连错了,小心):

MOSI————MOSI MISO————MISO

SCK————SCK RST————RST

连上系统板和USBasp后,将USBasp插入电脑,打开progisp,基本设置如下:

自制ArduinoUno R3开发板,烧写bootloader

左上角Select Chip一定选择ATmega328p,选错轻则锁死芯片,重则烧毁;中间各选项勾选如图,分别勾选比较识别字,芯片擦写,空片检查,编程FLASH,校验FLASH,编程熔丝;擦除是将芯片FLASH清除;右上角调入FLASH是调入bootloader或者编译完成的hex文件,调入过后,点击自动,即可烧写。需要特别注意的是一切烧写程序的操作需要在正确设置熔丝位的情况下进行,下面讲如何正确设置熔丝位和解锁锁死的芯片。

(三)、关于设置328P熔丝位(熔丝位有关知识,请参考文末推荐文章)

熔丝位的设置极其重要,需要极其细心,否则会锁死芯片,导致芯片变成板砖。如果熔丝位设置与烧写的bootloader不对应,那么就算烧写成功,也不能从Arduino IDE一键下载程序,这一点非常重要。此处讲解设置步骤:

1、按Arduino\hardware\arduino\avr路径打开文件夹,打开boards.txt文件,此文件中可查看相应板卡芯片的熔丝位:

自制ArduinoUno R3开发板,烧写bootloader

可以查看到对于uno的328P芯片,低熔丝位(low_fuses)是FF,高位(high_fuses)是DE,扩展位(extended_fuses)是FD。

2、如何在progisp里设置熔丝位

点击自动旁边三点,如下图所示:

自制ArduinoUno R3开发板,烧写bootloader

然后弹出设置框,即可设置:

自制ArduinoUno R3开发板,烧写bootloader

注意:设置好后点击写入,写入芯片后主页面左下角会有提示,但为了保险最后再点击读出,看烧写的是否和设置的一样。

特别提醒:SPIEN位千万不能设置为1,否则芯片变板砖。

3、关于熔丝位设置错误导致锁死AVR芯片的解救方法

如果不小心设置错熔丝位,progisp显示进入不了编程模式,那么就需要一个4M有源晶振进行解锁。正确连接有源晶振,拆除328P的外部16M无源晶振,将有源晶振的信号输出脚接到328P的XTAL1引脚上,连接USBasp和电脑,点击progisp,能进入编程模式后,迅速改正熔丝位,之后再接上16M晶振即可。

(四)、为系统板烧写bootloader

按照Arduino\hardware\arduino\avr\bootloaders\optiboot路径打开文件夹,我们DIY的是uno3开发板,注意此处不可选错文件,optiboot_atmega328.hex即我们需要烧写的文件。

自制ArduinoUno R3开发板,烧写bootloader

调入FLASH,点击自动,几十秒就能烧写好。到这系统板的制作就完成最重要的一步。

四、验证bootloader烧写是否成功

1、验证程序

向串口发送一个字符,芯片接收到后,返回字符的阿斯克码值:

自制ArduinoUno R3开发板,烧写bootloader

2、LED显示

由于PCB下载电路上没有并联LED,拆除后重新在面包板上接入LED显示:

自制ArduinoUno R3开发板,烧写bootloader

黄色是电源显示,蓝色LED正极接5V,负极并接在328P的RX脚,蓝灯持续闪烁,说明正在下载。

3、下载效果

下载成功,向串口显示器发送换行符,返回10,说明实验成功,系统板正常工作

自制ArduinoUno R3开发板,烧写bootloader

自制ArduinoUno R3开发板,烧写bootloader

参考:

USBasp驱动文件和progisp下载:

https://pan.baidu.com/s/13y88ogGtFYYOMrc_d6Dmqg 提取码:nsvw

有关熔丝位讲解文章:https://blog.csdn.net/tyshtang/article/details/46137849