arduino烧录引导程序(BootLoader)方法及出错点

该文章详细介绍了如何使用ArduinoISP对328P芯片进行烧录,包括硬件电路准备、烧写程序的步骤、不同烧录方法以及如何制作自己的烧写器。过程中提到了最小系统连接、ISP端口介绍、管脚对应表和烧录常见问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


文章原出处: https://haigear.blog.csdn.net/article/details/129203322
烧录arduino引导程序是我们抛开UNO板做项目必经的过程。这里我们提供两种方法来实现烧录。第一种,利用实例程序中的ArduinoISP完成,第二种,利用开源项目,但他们的电路都是一模一样的。所以我们从电路开始。

一、硬件电路准备

1、328P的管脚图

这里提供一张328P与UNO板的管脚的对应图,有了它我们就可以准确无误的连接UNO板了,如下:

2、电路连接图

(1)最小系统连接图

这里的电路是最小化的电路图,如果你还想加点别的,比如复位电路,或者ISP管脚连接也可以,不过烧录的时候最好简单一些,避免出错后检查起来麻烦。
在这里插入图片描述
当然,如果你从uno板上引入电源的正极和负极,你完全可以把这个电容直接接在uno板的两个引入电极脚上(GND和5V脚),有人就这么干的,其实原理一样,就这么简单。

(2) ISP连接及端口介绍

首先我们看看板子上的ISP的pin口,其实如果是有两块板子,直接对等连接即可。
在这里插入图片描述
在这里插入图片描述

对等连接如下:
在这里插入图片描述

(3)管脚连接对应表

一般情况下,我们都不是给一块现成的板子烧录,而是一个裸芯片328P或者168P,给他们烧写你除了接好最小系统外,还需要将16,17,18,19和uno板的对应10,11,12,13脚接好。关键管角连接对应的端口,我列表如下:

328管脚l连接目标
9PINcrystal
10PINcrystal
20PIN+5V
22PINGND
17PINuno-11pin
18PINuno-12pin
19PINuno-13pin
1PINuno-10pin

(4)328P与uno板链接图

在这里插入图片描述

上面这个图其实就是在最小系统上面多增加了四根线,16,17,18,19和uno板的对应10,11,12,13脚对接。

二、烧写程序

1、准备ArduinoISP

我们打开实例文件的ArduinoISP,直接用上传的方式上传给uno板即可。
在这里插入图片描述

2、使用Arduino as ISP烧录设置Arduino板为烧写器

在保持开发板为arduino uno 的同时,选择编程器为Arduino as ISP即可。
在这里插入图片描述

3、烧录及错误

如果你的元器件和线都么有接错的话,应是很顺利就可以烧录完毕,但也许你会遇到下面的错误。
在这里插入图片描述
svrdude: Tiken! Inyalid device signature.
如果你的上传时总是上面的错误,那很可能是你使用的晶振的电容数值不对,换掉它就可以啦,我们这里的电容用15-25pf都可以,数量级对了一般都是可以正常起震的,也就是可以正常下载,当然我这里还是强烈推荐能够找到20pf的就用20pf,或者22pf,这两种比较容易找到。
在这里插入图片描述
如果你看到了这个提示,说明你真的已经烧录成功了,不信,你可以把你的芯片放到原来的uno板上测试一番。当然,这要求你烧录的是直插式的Atmega328,你的uno板子也是直插式的(相比贴片式,网上买这样的板子稍微贵一些)。

4、为新烧录328p下载测试程序

上面的方法直接验证我们新烧写的328P是否成功,无非就是利用原有板子的电路,直接下载一个测试程序,比如blink程序,看看13号脚的灯闪不闪。其实,我们还有一种方法验证,那就是通过我们前面制作成为arduinoISP的uno板(将它视作编程器)直接通过“使用编程器上传”来给我们的新328P上传验证测试程序blink。
上传成功后,给新烧好的芯片下载程序,那就用它了–使用编程器上传,其他的步骤和普通的UNO板子没有差别。
在这里插入图片描述

5、效果

效果这里不便展示,除非拍个视频,无非如果验证成功的效果是blink闪烁的13号灯。这里就不展示了。
前面的方法是最典型的烧录方法,其实我们还有两种方法,后面我们介绍两种新方法。

三、另一种烧录方法

1、准备好编程器文件及上传

电路和前面的一样,关键是烧写器的准备有不同,我们必须到GitHub上下载一个项目,利用这个项目来使我们的UNO板编程烧写器。arduino_sketches项目下载
把整个项目下下来,解压或直接打开Atmega_board_Programmer.ino,也可以成功的将我们的uno板变成一个编程器。
在这里插入图片描述
将上述的Atmega_board_Programmer的代码编译后上传到uno板,即可。程序烧写完成后,设置好选项
在这里插入图片描述

我们打开串口监视器,如下图:
在这里插入图片描述
如果,你遇到上图所示的错误,说明你的接线错了,说明reset和uno的pin10没有连接好。连接好线后,我们继续:
在这里插入图片描述
如果你看到了上述画面那就说明你成功了,只要你的设置是对的,一般都会成功,当然,偶尔错了按一下uno板上的reset键,再执行一次就成功了。

2、上传测试程序

这时,我们拆除reset连接到uno板10脚的线,采用下面的设置,就可以下载程序了。
在这里插入图片描述
注意,这里也需要短接reset和短接一下,类似DRT的作用。

四、直接用USB转TTL上传程序

这里说的上传程序,特指我们已经烧好BootLoader的328P。我们不可能每次都用一个老的UNO板来上传程序,看起来不太优雅而且不方便,毕竟要连接这么多的线和器件。这里我们还是可以直接使用USB转TTL来上传的。
错误来了:
avrdude: stk500_recv(): programmer is not responding
在这里插入图片描述
如果你的USB转TTL上有DTR,那可以恭喜你,你这个东东很高级,烧录时就不需要短接Reset和GND了。不过需要注意,我们最好在DTR和Reset脚之间接一个104的电容。
市面上出售的CH340等模块均未引出DTR或RTS引脚(当然,有几个型号的ch340是没有DTR引脚的,比如ch340N,ch340E),所以均需要手动复位,然后arduino给328P的复位时间极短。
在这里插入图片描述
那如果TTL模块没有DTR引脚要怎么烧录呢?那就和我的一样了。我的就没有DTR引脚,这样的话就需要你在IDE开始上传的一瞬间(差不多就行)短接Reset和GND即可上传成功。(有人说有时也不需要短接,或许那得看你人设吧)

五、制作自己的烧写器

关于下载器,其实自己做一个是非常必要的。用一个ATTiny85外加一个ch340制作一个也是一个不错的选择。这个我们放在下一篇博文介绍。
在这里插入图片描述
码字不易,转载请注明出处:https://haigear.blog.csdn.net/article/details/129203322

<think>嗯,用户之前已经询问过烧录器的基本概念和常见类型,现在又具体问到了Arduino as ISP,也就是如何将Arduino开发板改造成简易烧录器。这说明用户可能正在尝试自己动手做一些嵌入式开发或者DIY项目,想要了解如何利用手头的Arduino板子来烧录其他芯片,比如AVR单片机。 首先,我需要确定用户的需求层次。用户可能已经知道烧录器是什么,但需要具体的步骤和方法来使用Arduino作为ISP。他们可能希望有一个成本低、易于操作的解决方案,可能是在个人项目或教育环境中使用,比如在学校里或者自己的创客项目里。 接下来,我需要整理关于Arduino as ISP的相关信息。这包括它的定义、适用场景、所需材料、配置步骤、具体操作流程以及注意事项。用户可能需要详细的步骤说明,包括代码上传、硬件连接、烧录软件的使用等。同时,用户可能不太熟悉技术细节,所以需要用简单明了的语言,避免专业术语过多,或者在必要时解释术语。 还要考虑到用户可能遇到的问题,比如驱动程序安装、接线错误、电压不匹配等,所以在注意事项部分需要特别强调这些,帮助用户避免常见错误。此外,用户可能想知道Arduino as ISP的优缺,比如低成本但速度较慢,适合小规模使用,不适合量产,这些也需要提及。 需要确保回答结构清晰,分步骤说明,让用户能够一步步跟随操作。同时,可能需要推荐一些常用的烧录软件,比如AVRDUDE,并说明如何配置参数。用户可能对命令行工具不太熟悉,所以需要给出具体的命令示例,并解释每个参数的作用。 最后,用户可能有后续问题,比如如何处理特定型号的芯片,或者遇到错误时如何调试,因此应该在结尾邀请用户提供更多细节以便进一步帮助,这能增加互动性和用户满意度。</think>以下是关于 **Arduino as ISP** 的详细介绍: --- ### 什么是 Arduino as ISP? **Arduino as ISP** 是一种通过软件配置,将普通 Arduino 开发板(如 Uno、Nano)改造成 **AVR 芯片烧录器** 的低成本方案。它利用 Arduino 自带的 SPI 通信接口,配合特定固件,实现对其他 AVR 单片机(如 ATmega328P、ATtiny85)的编程和擦除。 --- ### 适用场景 - **低成本开发**:无需购买专用烧录器(如 USBasp)。 - **教育/实验**:学习 AVR 芯片烧录原理及 SPI 通信机制。 - **维修与调试**:修复 Arduino 引导程序Bootloader)损坏的芯片。 - **DIY 项目**:为独立 ATmega 芯片烧录自定义程序。 --- ### 所需材料 1. **主控 Arduino**:作为烧录器的 Arduino 板(如 Uno、Nano)。 2. **目标芯片**:待烧录的 AVR 单片机(如 ATmega328P)。 3. **连接线**:杜邦线(至少 6 根)。 4. **外围电路**:根据目标芯片需求,可能需外接晶振、电容等。 --- ### 配置步骤(以 Arduino Uno 为例) #### 1. **上传 ArduinoISP 固件** - 打开 Arduino IDE,选择 **文件 > 示例 > 11.ArduinoISP > ArduinoISP**。 - 选择开发板型号(如 Arduino Uno)及端口,击 **“上传”**。 - 上传成功后,Arduino 变为 ISP 烧录器。 #### 2. **硬件连接** 将主控 Arduino 与目标芯片按以下方式连接: | 主控 Arduino | 目标芯片引脚 | |--------------|--------------| | 13 (SCK) | SCK | | 12 (MISO) | MISO | | 11 (MOSI) | MOSI | | 10 (SS) | RESET | | 5V | VCC | | GND | GND | ⚠️ **注意**: - 若目标芯片需外部晶振,需额外连接晶振电路(如 16MHz 晶振 + 22pF 电容)。 - 部分低电压芯片(如 ATtiny85)需将 VCC 改为 3.3V。 --- ### 烧录操作(以烧录 ATmega328P 为例) #### 1. **配置 Arduino IDE** - 安装目标芯片支持包(如通过 **工具 > 开发板 > 开发板管理器** 添加 ATmega328P)。 - 选择目标芯片型号:**工具 > 开发板 > ATmega328P**。 - 选择编程器:**工具 > 编程器 > Arduino as ISP**。 #### 2. **烧录引导程序Bootloader)** - 击 **工具 > 烧录引导程序**,IDE 将通过主控 ArduinoBootloader 写入目标芯片。 - 成功提示后,目标芯片即可通过串口接收程序。 #### 3. **直接烧录程序(可选)** - 编写程序并编译(生成 `.hex` 文件)。 - 使用命令行工具(如 `avrdude`)执行烧录: ```bash avrdude -p atmega328p -c arduino -P COM3 -b 19200 -U flash:w:program.hex ``` --- ### 优缺对比 | **优** | **缺** | |------------------------------|---------------------------| | 成本极低(仅需 Arduino 板) | 烧录速度较慢 | | 支持常见 AVR 芯片 | 仅支持 SPI 接口芯片 | | 适合小批量实验 | 稳定性不如专业烧录器 | --- ### 注意事项 1. **电压匹配**:确认目标芯片工作电压(5V/3.3V),必要时加装电平转换模块。 2. **接线检查**:SPI 引脚连接错误会导致烧录失败。 3. **驱动安装**:若使用旧版 IDE,需手动安装 `libusb` 驱动(Windows 系统)。 4. **芯片保护**:操作前断开电源,避免短路或反接。 --- 如果需要具体芯片的接线图或故障排查,请补充以下信息: - **目标芯片型号**(如 ATtiny13、ATmega2560)。 - **遇到的问题**(如无法识别设备、校验错误等)。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河西石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值