尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

自制的改进版Arduino uno或更换ATmega328p芯片后的开发板如何烧录bootloader?

自制的改进版Arduino uno或更换ATmega328p芯片后的开发板如何烧录bootloader?
📅 发布时间:2026/7/5 1:30:07

温馨提示:本篇文章用于入门教程,略显废话,敬请谅解。

Arduino作为一个开源的电子平台,因拥有灵活、易用的硬件和软件因素,深受大家的喜欢,尤其是有硬件基础的朋友们,想必一定自己动手制作过Arduino uno最小系统板,或因操作不当烧坏芯片时更换过ARM芯片,但是从淘宝或其它渠道购买的芯片不同于我们购买的成品开发板,芯片缺少bootloader,无法直接烧录程序进行使用,需要我们自己先烧录bootloader才能使用,Arduino uno烧录bootloader的教程,网上很多,但是发现一个通病,就是他们写教程的时候往往使用的都是购买的成品开发板(或者无实物编写),使用烧录工具时,一次就成功,往往忽略了新的芯片不兼容板子时带来的问题,导致很多新手在烧录bootloader时一直失败,又找不到问题,怀疑自己做的板子有问题,或者芯片不行,今天这篇文章来给大家说一下关于自制的改进版Arduino uno或更换ATmega328p芯片后的开发板如何烧录bootloader。

下面这张图(左)就是我自制的uno开发板,在网上成品开发板(右)的基础上加入更多的5V、3V3、GND接口,省去使用面包板,接线更方便。

首先我们先看一下自制或更换芯片后的板子直接烧录程序时,会出现的错误(如下图),这个错误就是通信失败,出现这个其实分为2种情况:第一种情况是购买的成品板或有bootloader的板子,做功能调试的时候出现这种报错,那是因为在上传程序的时候,我们开发的IO0、IO1接口接了蓝牙或其它通信设备,IO0、IO1接口Arduino uno的硬件串口,在上传程序时会使用,如果被占用,就会出现这个报错,处理方法就是上传程序的时候把IO0、IO1的外设先拔掉,程序上传完成后,再把外设接上;第二种就是我们这种自制或更换芯片,没有bootloader,会通信失败。

其次,我们来了解一下烧录bootloader的方法,我验证了2种可行方案:第一种使用AVR USB烧录器进行烧录,第二种使用其它成品开发板作为烧录器进行烧录(这个今天不做教程分析了,其实两种方案操作都一样,对比着进行即可)。

我们今天只说第一种:使用AVR USB烧录器通过开发板的ISCP接口进行烧录,ICSP接口为在线程序烧录接口,一个2*3的排针端子,分别对应RESET、SCK、MISO、GND、MOSI、5V,具体顺序如下图所示。

如果说你自制板子时没有预留这个接口,那也没关系,因为这6根排针与单片机相连接,分别对应RESET、IO13、IO12、GND、IO11、5V接口,使用杜邦线连接即可,再如果说你画板子的时候,只把用的IO口画出来了,其他的没预留,那也没关系,2种终极方案:1看芯片引脚,找出这6个芯片引脚,飞线烧录,2把芯片焊接到成品板上,烧录后再焊接回来。

接下来我们说烧录器,在淘宝购买即可,10~20元不等,我买的13元,但是需要必坑,我先买了一款(左),但是我的电脑识别不到这个设备,换了三四个电脑都不行,一直报未知USB设备(设备描述符请求失败),所以又买了另外一款(右),可以正常使用。

接下来说烧录软件,可以直接使用Arduino ide进行烧录,方便快捷,也可以使用商家提供的软件(基本都是PROGISP,但比较繁琐),我们先来说使用PROGISP软件烧录:使用AVR USB烧录器连接开发板ICSP接口(开发板不需要USB再供电,ICSP接口有供电),插入电脑,打开软件,按照下图进行设置:

先确认软件能够识别到我们的烧录器(识别成功为1),然后在2中选择芯片类型ATmega 328P,接下来点击3,选择flash文件,这个商家没有提供,我们电脑中有,路径如下(但咱们电脑名称不同,替换14090):C:\Users\14090\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\bootloaders\optiboot,打开之后按照步骤4,选择328.hex文件,然后选择5中的选项,点击6编程熔丝,按7中进行熔丝设置,然后关闭弹窗,执行8进行烧录即可(我看网上教程都是到这一步,说等成功即可),但是,对于烧录结果,无疑是失败的(指的是全新的芯片,而不是买的成品板进行二次烧录),会出现下边这种无法识别的情况。

这个时候,先不用怀疑你的板子或者烧录器有问题,之所以出现购买的成品板可以烧录成功,自制或更换芯片后不成功的现象,是因为成品板上的芯片出厂前已经提前烧录过16MHz外部晶振熔丝和引导程序,适用于板子上的16MHz晶振,所以二次烧录会成功,但是新买的空白芯片是默认熔丝(内部为8MHz RC时钟),通信速率低于USBasp烧录器,所以烧录时会失败,原因知道了,那办法就是降低USBasp烧录器的通信速率,与空白芯片一致即可,怎么降低速度,我们后边再说,先说使用Arduino ide进行烧录。

使用Arduino ide烧录就比较简单了,步骤如下:使用AVR USB烧录器连接开发板ICSP接口(开发板不需要USB再供电,ICSP接口有供电),插入电脑,打开ide软件,设置如下:

点击工具,开发板选择Arduino uno,编程器选择USBasp,然后点击烧录引导程序,当然结果也是失败的(指的是全新的芯片,而不是买的成品板进行二次烧录),报错结果如下图,原因也是上述通信速率的问题。

这里多说一句,ide中的端口为灰色,这个不用管,因为USBasp不是串口通信,所以不显示,只要我们能在电脑中看到识别USBasp即可。

到此为止,两种烧录方式讲解完毕,接下来我们来讲如何降低USBasp通信速率,保证我们能够正常烧录bootloader,步骤如下:

1.按住WIN+R,输入cmd命令,然后再输入cd+我们Arduino引导程序的位置(路径即上边说的328.hex文件存储的位置,复制路径,在这个界面右键一下,自动粘贴,防止手动输入错误,cd和路径之间有一个空格),回车之后便进入到该目录,输入dir看到328.hex文件,说明目录正确。

2.然后输入下边这条命令,修改速率(14090为安装位置,需修改):C:\Users\14090\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\bin\avrdude.exe -C C:\Users\14090\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\etc\avrdude.conf -c usbasp -p m328p -B 10 -U lfuse:w:0xFF:m -U hfuse:w:0xDE:m -U efuse:w:0x05:m -U flash:w:optiboot_atmega328.hex:i

执行命令后,可以看到修改参数、烧录进程,等待结束即可,看到下图提示,代表bootloader烧写成功,此时,我们的烧录就结束了,开发板可以正常使用了,按一下开发板复位键,可以看到IO13接口的指示灯快闪三次,如果没有这个指示灯,也没有关系,回到Arduino ide中再次进行引导程序烧录,就可以成功二次烧录了。

然后烧录一个我们写的测试程序,接入OLED显示屏,确认功能没问题。

下边我们来对这条修改速率、能够匹配通信的指令进行解析:

C:\Users\14090\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\bin\avrdude.exe指AVR单片机官方烧录工具,默认放在我们这个路径下,用来读写ATmega系列芯片闪存、熔丝位;

-C C:\Users\14090\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\etc\avrdude.conf指定配置文件 avrdude.conf;

-c指编程器类型usbasp;

-p指目标单片机型号m328p;

-B指设置ISP通信时钟周期,默认USBasp速度快,全新芯片出厂内部8MHz时钟,高速容易通信失败,-B 10降低通信速率,提升空白芯片烧录成功率,数值越大,速度越慢、稳定性越强;

-U lfuse:w:0xFF:m中U指读写指令格式,lfuse低位熔丝位,w写入,0xFF为UNO标准低位熔丝,启用外部16MHz晶振,m 从内存写入熔丝;

-U hfuse:w:0xDE:m中U指读写指令格式,hfuse高位熔丝位,w写入,0xDE为UNO标准高位熔丝,启用外部16MHz晶振,m 从内存写入熔丝;

-U efuse:w:0x05:m中U指读写指令格式,efuse扩展熔丝位(配置BOD掉电检测电压等辅助功能),w写入,0x05适配UNO电路参数,m从内存写入熔丝;

-U flash:w:optiboot_atmega328.hex:i中U指读写指令格式,flash是程序闪存区,w写入optiboot_atmega328.hex(UNO引导程序Bootloader),i 代表输入文件为Intel Hex格式固件。

今天的教程就到此结束了,如果有疑问或不同见解,可在评论区留言讨论,感谢大家。

相关新闻

  • 5分钟搞定米游社自动签到:手把手教你配置MihoyoBBSTools
  • Web开发项目:从零构建博客系统
  • 能一次直接生成AI短剧的生成工具来了?Seedance 2.5把AI短剧带进生产流

最新新闻

  • 5分钟快速找回QQ空间全部历史说说的终极指南:GetQzonehistory完整教程
  • Codex接入DeepSeek模型:从原理到工程化部署的完整指南
  • Windows系统下Aider完整安装、配置与实战使用教程
  • 模型工厂、三层容错装饰器与JWT认证:从基础设施到可用服务
  • 【Qwt 7.0 系列】总体架构解析 —— 从单体到三库模块化的演进
  • LangChain:139K Star 的 Agent 工程平台

日新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号