利用Arduino Nano 对于另外的Arduino控制板下载Bootloader
简 介: 测试了利用Nano板对于基于MEGA328的Arduino的Bootloader下载,在此基础之上,利用了FT232TL的USB-TTL UART模块对测试MEGA328下载执行程序。
关键词
: Arduino,Nano,ISP
§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)第一步:下载ISP程序
将Arduino中的示例程序Arduino ISP
下载到Arduino Nano的开发板中。这个Nano模块可以用作AVR-ISP对于其它开发板下载Bootloader了。
▲ 图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硬件连接
下图显示了利用Arduino Nano对另外Nano下载Bootloader实际连接关系。
▲ 图1-4 使用Arduino Nano对另外Nano下载Bootloader实际连接关系
(3)下载Bootloader
首先选择编程器为:Arduino as ISP
。然后使用 烧录引导程序
命令完成Bootloader程序下载。
▲ 图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 子系统的参考电路图
1、设计电路1
根据 通过CH340G驱动的Nano ATMEAG328P驱动板初步测试 中给出的Nano原理图,设计测试MEGA328的原理图,如下图所示:
▲ 图2-1 测试MEGA328的原理图
(1)端口定义
- ISP端口的定义为:
</span
PIN1 | PIN2 | PIN3 | PIN4 | PIN5 |
---|---|---|---|---|
MOSI | MISO | SCK | RST | GND |
- 测试PIO端口定义:
PIN1 | PIN2 | PIN3 | PIN4 | PIN5 | PIN6 | PIN7 | PIN8 | PIN9 | PIN10 | PIN11 | PIN12 |
---|---|---|---|---|---|---|---|---|---|---|---|
+5V | GND | RXD | TXD | RST | D2 | D3 | D4 | D5 | D6 | A0 | A1 |
(2)焊接测试电路板
使用快速做板,制作了测试MEGA328 PCB板,经过焊接之后形成测试电路板。
▲ 图2-2 焊接完成的测试MEGA328
2、下载Bootloader
(1)Nano与MEGA328ISP连接关系
根据前面测试ISP
连接关系以及【表2-1
】中对于测试电路板ISP
端口的定义,确定Nano
与测试MEGA328
连接关系。
▲ 图2-3 连接Nano-ISP 到测试MEGA328小板
下表给出了Nano-ICSP与测试MEGA328的ISP端口的关系。
端口 | PIN1 | PIN2 | PIN3 | PIN4 | PIN5 |
---|---|---|---|---|---|
MEGA | MOSI | MISO | SCK | RST | GND |
NANO | PIN4 | PIN1 | PIN3 | D10 | PIN6 |
(2)搭建下载电路
在面包板上搭建下载测试电路。
▲ 图2-4 在面包板上连接Nano-ICSP与MEGA328的ISP
(3)下载Bootloader
利用Arduino IDE中的工具烧录引导程序下载Bootloader。
在第一次下载的时候,发现初夏如下错误:
▲ 图2-5 下载出现错误
经过检查,是测试版上的RESET
引线中间由于快速制版过程中腐蚀过度,引起断裂。使用短接线将RST
线联通之后,便可以烧录成功了。这也说明,下载BOOTLOADER
的接口中必须包括有RST
引线。
下载Bootloader
之后,MEGA328
的工作电流便从原来的3.8mA
上升到12.2mA
。利用示波器测量晶体两端,可以测试到晶体16MHz
的震荡波形。
▲ 图2-6 MEGA328的OSC1的波形
3、测试下载程序
测试下载所使用的USB-UART转接板是从 USB转TTL 支持3.3V 5V FT232RL模块 下载线 mini接口-淘宝网 购买到的,它的外形与接口定义如下:
▲ 图2-7 UAB-TTL UART 转接板管脚功能定义
FT232TL的PIN6的端口定义为:
PIN1 | PIN2 | PIN3 | PIN4 | PIN5 | PIN6 |
---|---|---|---|---|---|
GND | CTS | VCC | TX | RX | DTR |
- FT232RL 驱动下载链接 :http://pan.baidu.com/s/1c0COdNy
(1)连接UART模块与MEGA328
将UART-TTL模块的RX,TX分别与MEGA328的TX,RX相连。利用Arduino IDE下载程序。
- Arduino IDE 下载条件:
-
开发板
:Arduino Nano
处理器
:ATMega328(Old Bootloader)
▲ 图2-8 面包板上搭建的下载连接线图
(2)下载结果
第一次上载程序是成功的。但是后面上载就不成功了。
将DTR通过一个0.1uF的电容连接到 MEGA328RST上,便可以继续成功上载程序了。为什么需要通过0.1uF连接MEGA328的RST呢?这是因为DTR在静态的时候,始终为底电平,所以它需要通过电容来触发RST。
▲ 图2-9下载程序的动态过程
(3)制作下载线
▲ 图2-10 设计从UART-TTL模块到ISP -PIN5 之间的连接关系
端口 | PIN1 | PIN2 | PIN3 | PIN4 | PIN5 |
---|---|---|---|---|---|
ISP端口 | VCC | GND | RXD | TXD | RST |
FT232端口 | VCC | GND | TXD | RXD | DTR |
为了实现DTR与RST之间是通过0.1uF的电容连接,因此在连接线的RST与DTR中间串联了一个0.1uF的瓷片电容。
▲ 图2-11 接口中设置104uF
根据 Arduino UNO Rev3 设计,可以看到对于ATMEGA328的RESET是有电容C5,上拉电阻RN10,二极管D2。
▲ -2-12 Arduino UNO上的编程接口
※ 测试结论 ※
测试了利用Nano板对于基于MEGA328的Arduino的Bootloader下载,在此基础之上,利用了FT232TL的USB-TTL UART模块对测试MEGA328下载执行程序。
■ 相关文献链接:
- 如何用Arduino Nano给另外一个Arduino Nano烧录bootloader
- Arduino软件开发环境搭建
- 通过CH340G驱动的Nano ATMEAG328P驱动板初步测试
- 一分钟制版法
- USB转TTL的FT232模块
- USB转TTL 支持3.3V 5V FT232RL模块 下载线 mini接口-淘宝网
- Arduino UNO Rev3
○ 相关图表链接:
- 图1-1 Arduino IDE的版本
- 图1-2 示例程序中的ISP程序
- 图1-3 使用Arduino Nano为ISP对Arduino下载Bootloader硬件连接
- 图1-4 使用Arduino Nano对另外Nano下载Bootloader实际连接关系
- 图1-5 利用Arduino IDE 烧录引导程序
- 图2-1 测试MEGA328的原理图
- 表2-1 测试电路板上的ISP端口定义
- 表2-2 测试电路板上PIO端口定义
- 图2-2 焊接完成的测试MEGA328
- 图2-3 连接Nano-ISP 到测试MEGA328小板
- 表2-3 Nano ICSP 与MEGA328的ISP端口连接关系
- 图2-4 在面包板上连接Nano-ICSP与MEGA328的ISP
- 图2-5 下载出现错误
- 图2-6 MEGA328的OSC1的波形
- 图2-7 UAB-TTL UART 转接板管脚功能定义
- 表2-4 FT232TL端口功能定义
- 图2-8 面包板上搭建的下载连接线图
- 图2-9下载程序的动态过程
- 图2-10 设计从UART-TTL模块到ISP -PIN5 之间的连接关系
- 表2-5 转接连接线的功能定义
测试MEGA328的工程文件:AD\Test\2021\ZYK\Test328Nano.SchDoc ↩︎
利用Arduino Nano 对于另外的Arduino控制板下载Bootloader相关推荐
- arduino nano 蓝牙_基于Arduino的摩尔斯电码练习及无线收发报训练器
摘要:本文介绍一款基于Arduino NANO开发的,带2.4G无线收发报功能的摩尔斯电码训练器的系统设计思路.发射端通过NANO板的外部中断引脚采集电键输入的脉冲PPM序列同时驱动喇叭播放电键音,然 ...
- arduino nano 蓝牙_用Arduino玩转掌控板(ESP32):ESP32概述与Arduino软件准备
前言 近年来,掌控板(英文名:mPython)在创客教育中应用越来越广泛.掌控板集成了 ESP32 高性能双核芯片,具备 WiFi 和蓝牙连接功能,同时在板子上又配置了丰富的传感器,最重要的是它是专门 ...
- Arduino Nano与SIM800C通讯
用Arduino Nano 与 SIM800C 通讯 简单就是硬道理 SIM800C GSM/GPRS通讯卡 GPRS上网卡简介 信息交互 MCU设备 Arduino Nano 设备连接 Arduin ...
- 凹语言点亮 Arduino Nano 33
凹语言是国内 Gopher 发起的纯社区构建的开源国产编程语言项目(没有公司背景.没有任何赞助).同时凹语言也是国内第一个实现纯浏览器内编译.执行全链路的自研静态类型的编译型通用编程语言.凹语言不仅仅 ...
- Arduino NANO -- 那些需要了解的地方
Arduino系列开发板按开发需要有多种板型可以选择 简单的说下Arduino NANO 1.NANO简介 技术规格 规格封装 引脚功能分布 原理图 2.Arduino UNO 和 Arduino N ...
- 利用Nodemcu+Arduino nano+TB6612+点灯科技APP制作简易麦克纳姆轮Wi-Fi遥控小车
摘要 麦克纳姆轮小车由于车轮本身的特殊结构,可以实现全向行驶,可玩性非常强.麦克纳姆轮原理在这里不做展开,麦克纳姆小车主要是通过控制四个轮胎的转与不转以及转动的方向来实现多方向的运动,其中一种X型车轮 ...
- 利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆
利用arduino nano开发板配合oled.温度传感器.光照传感器.湿度传感器设计一个花盆 完整项目地址: https://github.com/linxinloningg/arduino_chi ...
- 使用 arduino nano DIY小台灯
前段时间忙于项目和比赛,因此没时间捣鼓些小玩意.上星期总算都结束了,然后发现手上有个arduino nano和WS2812,就想着要不做个台灯玩玩,有想法就要动手,走起! 下面先列出我用到的器件 ar ...
- Arduino Nano做NB-IoT透传项目
用Arduino Nano作控制器,实现NB-IoT透传项目 概述 NB-IOT模块 Arduino Nano 程序 总结 概述 当前利用NB-IoT作透传项目非常流行,Arduino Nano应该是 ...
最新文章
- 精简教程版 | 100行代码入手天池CV赛事
- 利用Python实现十大经典排序算法(附代码流程)
- bugku ctf 杂项 啊哒 writeup || foremost的安装
- matlab 画三维花瓶,精美花瓶建模教程
- HanLP Demo(学习笔记)
- 网卡添加VLAN TAG
- 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
- JAVA关于父亲节的代码_关于父亲节的祝福语
- BUUCTF:九连环
- 勒让德多项式(Legendre Polynomials)推导
- SelectObject和DeleteObject 函数
- 计算机网路络课设_学生宿舍网络规划与设计
- IDEA创建maven项目没有srcmainjava目录问题解决
- Mathematica:向量、矩阵之间的区分
- Elliptic curve cryptography
- 笔记本键盘按键错乱怎么办
- 借壳上市案例解析-容易理解
- Java学习之阶段小结
- 注意力经济是什么?NFT 在其中发挥怎样的作用?
- 提网速亟须普及光纤宽带 究竟是谁“偷”走了网速
热门文章
- 运行程序报“应用程序配置不正确”或者缺少运行库造成程序不可移植的问题...
- 详谈jsp和servlet的区别
- javascript高级教程
- Java虚拟机笔记(一):类加载机制
- ip and port check 正则
- 图片上传 fastDFS
- Android init.rc文件格式解析
- mysql 存储引擎 介绍
- Tomcat问题 无法启动
- android内存加载dex,安卓8.1版本dex加载流程笔记--第一篇:oatfile,oatdexfile与dexfile...