相关文章推荐
聪明的足球  ·  [Arduino]烧写Arduino ...·  3 周前    · 
坏坏的路灯  ·  Yikes Invalid device ...·  1 年前    · 
朝气蓬勃的猴子  ·  巧用 exports 和 ...·  1 年前    · 
行走的眼镜  ·  iOS ...·  1 年前    · 

[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).