利用Arduino Nano 对于另外的Arduino控制板下载Bootloader

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用Arduino Nano 对于另外的Arduino控制板下载Bootloader相关的知识,希望对你有一定的参考价值。

简 介: 测试了利用Nano板对于基于MEGA328的Arduino的Bootloader下载,在此基础之上,利用了FT232TL的USB-TTL UART模块对测试MEGA328下载执行程序。

关键词 ArduinoNanoISP

 

§01 Arduino 下载Bootloader


  如何用Arduino Nano给另外一个Arduino Nano烧录bootloader 中介绍,利用Arduino Nano小板作为AVRISP 对于其它电路板下载对应的Bootloader。

  测试所使用的Arduino的IDE按照 Arduino软件开发环境搭建 下载安装的1.8.15版本的IDE。

▲ 图1-1 Arduino IDE的版本

▲ 图1-1 Arduino IDE的版本

1、下载步骤

(1)第一步:下载ISP程序

  将Arduino中的示例程序Arduino ISP下载到Arduino Nano的开发板中。这个Nano模块可以用作AVR-ISP对于其它开发板下载Bootloader了。

▲ 图1-2 示例程序中的ISP程序

▲ 图1-2 示例程序中的ISP程序

  按照 通过CH340G驱动的Nano ATMEAG328P驱动板初步测试 中的方法,将上述Arduino ISP 程序烧录到Arduino Nano开发板。此时该开发板变成了一个AVRISP烧录器。

(2)连接待烧录Nano

  根据程序中给出的信息。Nano使用PIN10作为RESET控制端口。因此将ICSP端口的6条引线中,除了RESET之外的其它5条引线分别与待下载程序的开发板ICSP相连。 将PIN10与待下载板的ICSP的RESET引线相连。

// Pin 10 is used to reset the target microcontroller.
//
// By default, the hardware SPI pins MISO, MOSI and SCK are used to communicate
// with the target. On all Arduinos, these pins can be found
// on the ICSP/SPI header:
//
//               MISO °. . 5V (!) Avoid this pin on Due, Zero...
//               SCK   . . MOSI
//                     . . GND

  下图显示了下载引线的连接关系。

▲ 图1-3 使用Arduino Nano为ISP对Arduino下载Bootloader硬件连接

▲ 图1-3 使用Arduino Nano为ISP对Arduino下载Bootloader硬件连接

  下图显示了利用Arduino Nano对另外Nano下载Bootloader实际连接关系。

▲ 图1-4 使用Arduino Nano对另外Nano下载Bootloader实际连接关系

▲ 图1-4 使用Arduino Nano对另外Nano下载Bootloader实际连接关系

(3)下载Bootloader

  首先选择编程器为:Arduino as ISP。然后使用 烧录引导程序 命令完成Bootloader程序下载。

▲ 图1-5 利用Arduino IDE 烧录引导程序

▲ 图1-5 利用Arduino IDE 烧录引导程序

在下载之前,需要在工具 中的开发板 选择希望下载之后电路板对应的型号。比如选择Arduino Nano那么下载之后,则之能使用Arduino Nano完成将来程序下载。 选择 Arduino UNO 则可以利用Arduino UNO完成后面的开发下载。

2、下载结果测试

  下载完毕之后,使用Arduino IDE对于Nano重新测试,可以看到它可以完成正常的Bootloader下载。

  现在剩下一个问题:下载Bootloader,是否适合所有的开发板?比如Nano,Uno?

 

§02 作MEGA328测试板


  面利用 一分钟制版法 制作MEGA328测试小板,测试上述下载Bootloader过程以及通过 USB转TTL的FT232模块 下载Arduino执行程序。

The ATMEGA328P Subsystem Official Schematic 给出了官方的ATMEGA328P子系统电路图设计电路。

▲ Arduino 子系统的参考电路图

▲ Arduino 子系统的参考电路图

1、设计电路1

  根据 通过CH340G驱动的Nano ATMEAG328P驱动板初步测试 中给出的Nano原理图,设计测试MEGA328的原理图,如下图所示:
▲ 图2-1 测试MEGA328的原理图

▲ 图2-1 测试MEGA328的原理图

(1)端口定义

  • ISP端口的定义为:

</span

【表2-1 测试电路板上的ISP端口定义】

PIN1PIN2PIN3PIN4PIN5
MOSIMISOSCKRSTGND
  • 测试PIO端口定义:

【表2-2 测试电路板上PIO端口定义】

PIN1PIN2PIN3PIN4PIN5PIN6PIN7PIN8PIN9PIN10PIN11PIN12
+5VGNDRXDTXDRSTD2D3D4D5D6A0A1

(2)焊接测试电路板

  使用快速做板,制作了测试MEGA328 PCB板,经过焊接之后形成测试电路板。

▲ 图2-2 焊接完成的测试MEGA328

▲ 图2-2 焊接完成的测试MEGA328

2、下载Bootloader

(1)Nano与MEGA328ISP连接关系

  根据前面测试ISP连接关系以及【表2-1】中对于测试电路板ISP端口的定义,确定Nano与测试MEGA328连接关系。

▲ 图2-3 连接Nano-ISP 到测试MEGA328小板

▲ 图2-3 连接Nano-ISP 到测试MEGA328小板

  下表给出了Nano-ICSP与测试MEGA328的ISP端口的关系。

【表2-3 Nano ICSP 与MEGA328的ISP端口连接关系】

端口PIN1PIN2PIN3PIN4PIN5
MEGAMOSIMISOSCKRSTGND
NANOPIN4PIN1PIN3D10PIN6

(2)搭建下载电路

  在面包板上搭建下载测试电路。

▲ 图2-4 在面包板上连接Nano-ICSP与MEGA328的ISP

▲ 图2-4 在面包板上连接Nano-ICSP与MEGA328的ISP

(3)下载Bootloader

  利用Arduino IDE中的工具烧录引导程序下载Bootloader。

  在第一次下载的时候,发现初夏如下错误:

▲ 图2-5 下载出现错误

▲ 图2-5 下载出现错误

  经过检查,是测试版上的RESET引线中间由于快速制版过程中腐蚀过度,引起断裂。使用短接线将RST线联通之后,便可以烧录成功了。这也说明,下载BOOTLOADER的接口中必须包括有RST引线。

  下载Bootloader之后,MEGA328的工作电流便从原来的3.8mA上升到12.2mA。利用示波器测量晶体两端,可以测试到晶体16MHz的震荡波形。

▲ 图2-6 MEGA328的OSC1的波形

▲ 图2-6 MEGA328的OSC1的波形

3、测试下载程序

  测试下载所使用的USB-UART转接板是从 USB转TTL 支持3.3V 5V FT232RL模块 下载线 mini接口-淘宝网 购买到的,它的外形与接口定义如下:

▲ 图2-7 UAB-TTL UART 转接板管脚功能定义

▲ 图2-7 UAB-TTL UART 转接板管脚功能定义

  FT232TL的PIN6的端口定义为:

【表2-4 FT232TL端口功能定义】

PIN1PIN2PIN3PIN4PIN5PIN6
GNDCTSVCCTXRXDTR

(1)连接UART模块与MEGA328

  将UART-TTL模块的RX,TX分别与MEGA328的TX,RX相连。利用Arduino IDE下载程序。

   Arduino IDE 下载条件:
开发板:Arduino Nano
处理器:ATMega328(Old Bootloader)

▲ 图2-8 面包板上搭建的下载连接线图

▲ 图2-8 面包板上搭建的下载连接线图

(2)下载结果

  第一次上载程序是成功的。但是后面上载就不成功了。

  将DTR通过一个0.1uF的电容连接到 MEGA328RST上,便可以继续成功上载程序了。为什么需要通过0.1uF连接MEGA328的RST呢?这是因为DTR在静态的时候,始终为底电平,所以它需要通过电容来触发RST。

▲ 图2-9下载程序的动态过程

▲ 图2-9下载程序的动态过程

(3)制作下载线

▲ 图2-10 设计从UART-TTL模块到ISP -PIN5 之间的连接关系

▲ 图2-10 设计从UART-TTL模块到ISP -PIN5 之间的连接关系

【表2-5 转接连接线的功能定义】

端口PIN1PIN2PIN3PIN4PIN5
ISP端口VCCGNDRXDTXDRST
FT232端口VCCGNDTXDRXDDTR

  为了实现DTR与RST之间是通过0.1uF的电容连接,因此在连接线的RST与DTR中间串联了一个0.1uF的瓷片电容。

▲ 图2-11 接口中设置104uF

▲ 图2-11 接口中设置104uF

根据 Arduino UNO Rev3 设计,可以看到对于ATMEGA328的RESET是有电容C5,上拉电阻RN10,二极管D2。

▲ -2-12 Arduino UNO上的编程接口

▲ -2-12 Arduino UNO上的编程接口

 

试结论 ※


  试了利用Nano板对于基于MEGA328的Arduino的Bootloader下载,在此基础之上,利用了FT232TL的USB-TTL UART模块对测试MEGA328下载执行程序。

 



  ■ 相关文献链接:

  ○ 相关图表链接:


  1. 测试MEGA328的工程文件:AD\\Test\\2021\\ZYK\\Test328Nano.SchDoc ↩︎

以上是关于利用Arduino Nano 对于另外的Arduino控制板下载Bootloader的主要内容,如果未能解决你的问题,请参考以下文章

基于ATMEGA8的Arduino Nano(UNO)开发板

Arduino nano 通过RF433将DHT11数据传输实验

arduino uno/nano工作频率

arduino nano在烧录代码前应该怎么做

arduinonanol灯频闪,程序没运行

BPI-Nano arduino Nano 开发板和 BPI-UNO arduino UNO 开发板