[Arduino]烧写Arduino BootLoader的几种方法
身为Arduino 电子工程师,很多时候都会涉及到自制各种功能的Arduino 电路板(亦或者说是功能扩展板),但是从网上或者其他渠道购买的Atmel 公司出品的ATmega 系列单片机是不能直接用来写入Arduino 程序的,这时我们需要对单片机芯片进行Arduino BootLoader的烧写。
ICSP接口介绍
首先,介绍下ICSP接口。
ICSP(In-Circuit Serial Programming)接口为在线程序烧录接口,其在arduino 系列电路板上为一个2*3的排针端子,6根排针与Arduino 电路板上的单片机相连接,分别对应
5V
,
MISO
,
MOSI
,
SCK
,
GND
和
RESET
,具体顺序如下图所示。
其中
MISO
,
MOSI
,
SCK
为Arduino SPI 接口。
有些人认为ICSP接口为Arduino的SPI接口,我认为这种说法是不正确的。SPI接口应为
MISO
,
MOSI
,
SCK
及
SS
接口,在ICSP中并没有包含
SS
接口,而且ICSP接口中包含
RESET
复位引脚,方便进行程序的烧写。所以我认为ICSP接口兼容SPI连接较为合适。
下面介绍几种比较方便的Arduino BootLoader烧写方法。
1.使用AVR USB tiny ISP 烧写
个人认为,使用AVR USB tiny ISP 烧写是最为简单快捷的方式,其优点为使用Arduino IDE 进行烧写,步骤简单。
AVR USB tiny ISP 可以在淘宝网上购买到,其价格在40~60元左右。
(1)下载安装 AVR USB tiny ISP 驱动程序
驱动下载链接:
AVR USB tiny ISP 驱动程下载链接
安装过程较为简单,这里不赘述,保持默认设置,安装过程持续下一步即可。
需要注意的是,在安装过程中会弹出如下提示,
(2)BootLoader烧写
1.将AVR USB tiny ISP与待烧写Arduino 的 ICSP接口相连,注意检查线序是否正确。
2.将AVR USB tiny ISP通过USB线与电脑相连,若驱动安装正确,在计算机管理->设备管理器中将出现如下图所示的USBtiny 设备。
使用该方法涉及到的软件及固件,请点击如下网盘链接进行下载。因使用下载器厂家及型号不定相同,遂不敢保证软件及方法完全可靠适用!
具体资料及软件下载
(1)连接方式
1.将AVR烧写器插到电脑的USB端口上,电脑自动识别出设备,该设备应为免驱设备,不必进行驱动的安装,在连接电脑后,烧写器绿灯常亮。
2.通过6P排线连接下载器与待烧写的单片机芯片的ICSP接口(若没有预留该接口位,需要按照文章前述将6个接口位分别与单片机对应的
5V
,
MISO
,
MOSI
,
SCK
,
GND
和
RESET
接口相连接)
(2)软件设置
1.打开“progisp20”文件夹中的“progisp”应用程序。
2.按照如下参考图设置参数。
(3)固件烧写
1.点击软件右下方“自动”,进行烧写。
2.等待烧写完成,在完成后,软件下方会出现烧写完成的提示。
3.使用其他Arduino板 烧写
使用我们可以正常使用的Arduino 开发板也可作为烧写器给单片机芯片烧写BootLoader。在手上并没有如上2种方法的烧写/下载器等工具的时候,我们可以采用该种方法来完成Arduino BootLoader 的烧写。
在这里我们采用一块Arduino UNO 开发板作为烧写器对待烧写单片机进行Arduino BootLoader 的烧写。
该部分也可参考
https://www.arduino.cc/en/Tutorial/ArduinoISP
(1)连接方式
将Arduino 的 数字11、12、13引脚对应与待烧写的数字11、12、13引脚相连,UNO 的10号引脚连接到待烧写的RESET引脚上,并将UNO 板上的5V、GND接口与待烧写板的5V、GND分别相连。
也有说法称,当被烧写的电路板或对应最小系统电路为Arduino UNO 时,需要使用一个10uf的电容连接待烧写电路板的reset和GND。笔者未进行实验。
(对应关系如下表所示)
作为烧写器的Arduino UNO 板
|
待烧写单片机芯片/电路板
|
D10
|
RESET
|
D11
|
D11
|
D12
|
D12
|
D13
|
D13
|
5V
|
5V
|
GND
|
GND
|
(2)烧写ArduinoISP固件
1.将作为烧写器的Arduino UNO板通过USB线连接到电脑,打开Arduino IDE 。
2.选择并设置好开发板型号、处理器及COM口。(注意要选择的型号为作为烧写器的Arduino 型号)
3.在工具栏选择->文件->示例->11.Arduino ISP->ArduinoISP,打开ArduinoISP程序,编译(验证)、上传到开发板中。
(3)BootLoader烧写
1.在在工具栏选择->工具->开发板型号,选择待烧写的Arduino型号。在工具->处理器,选择正确的处理器型号。
2.在工具->编译器 中,选择Arduino as ISP。
通过将一块
Arduino
Uno设置成ISP模式,从而实现为空白的ATMega328Pb芯片烧录bootlaoder。烧录了bootlaoder的芯片可以用usb-ttl转换器进行简单快捷的程序下载。
在我们在使用
Arduino
开发板时经常会发现上传失败的问题,这时候很大一部分原因是我们的
Arduino
开发板的没有固件,或者说固件版本太低。向上面这种情况就是板子固件版本太低,编译器使用的
bootloader
版本是最新的版本,这是偶我们只要将编译器的
bootloader
换为old
bootloader
就能正常下载。说明确实板子的固件版本太低了,这时候就需要更新固件了。
首先,介绍下ICSP接口。ICSP(In-Circuit Serial Programming)接口为在线程序烧录接口,其在
arduino
系列电路板上为一个2*3的排针端子,6根排针与
Arduino
电路板上的单片机相连接,分别对应5VMISOMOSISCKGND和RESET,具体顺序如下图所示。其中MISOMOSISCK为
Arduino
SPI 接口。有些人认为ICSP接口为
Arduino
的SPI接口,我认为这种说法是不正确的。SPI接口应为MISOMOSISCK及SS。
手上有两块几年前买的
arduino
nano板子,这两天要用的时候发现用
arduino
IDE 1.8.11
烧写
的时候始终报错“上传失败”。查阅相关资料发现应该在 IDE–工具–处理器 中选择ATmega238P(Old
Bootloader
)即可上传成功。
这也侧面说明了我的板子的
BootLoader
已经旧了,不如顺便更新一下。
STM32duino——用
Arduino
IDE玩STM32(一): 刷入
Bootloader
,实现免串口下载写在前面:为什么我们需要STM32duino?准备工作刷入
Bootloader
安装相关支持第一个测试程序注意事项参考文献
写在前面:为什么我们需要STM32duino?
同样的价格,更高的性能
性能简单对比:
STM32F103C8T6 vs
Arduino
Nano
主频: 72MHz vs 8MHz
SRAM:
What makes an
Arduino
what it is? Many things, but one of the most important ones is the way every
Arduino
board is easily programmed with the
Arduino
Software (IDE).