用Arduino ISP给ATmega328P烧bootloader恢复变砖芯片:接线与操作步骤

2026-10-20 17:00:39 58阅读

手里的 ATmega328P 芯片怎么刷都连不上、或者那个「敬爱的 328 已变砖」,多半是 bootloader 丢了。别急着丢掉,用另一块 Arduino 当 ISP(在系统编程器),是可以把芯片完整救回来的。这篇把原理、接线和烧录步骤写清楚,属于玩单片机的必修课。

bootloader 是什么,为什么丢了芯片就「变砖」

ATmega328P 内部有自己的 flash(存程序)和一段引导区(bootloader)。bootloader 是一小段预置程序,作用是在串口(经 USB 转串口)收到新固件时,把你写好的应用代码烧进 flash。一旦 bootloader 损坏或没烧过,芯片就不懂串口下载协议,表现为电脑怎么都烧不进去。解决办法就是走底层 ISP 接口,用一种特殊的串行协议(SPI 的变形)直接写 flash——这也正是「救砖」的核心。

ATmega328P 芯片的 ICSP 引脚定义

把一块 Arduino 变成 ISP

最简单的方法是用 IDE 自带的 ArduinoISP 示例。方法:文件→示例→ArduinoISP,先烧给一块正常的 Arduino Uno,这块板就变身成「编程器」。用 Tools→Field→Programmer 里「Arduino as ISP」来定义它。之后再选 Tools→Burn Bootloader,就会把这个 Arduino 当作编程器去给目标芯片烧引导程序。

用 Arduino Uno 作为 ISP 给目标 ATmega328P 芯片编程的连接示意

六根线的接线对应

把目标芯片放到面包板,用跳线把两块分开放:编程板(作为 ISP 的 Uno)上的 D11(MOSI)接目标芯片的 MOSI 或 D11,D12(MISO)接 D12,D13(SCK)接 D13,D10 接目标芯片的 RESET 引脚,另外把 5V 和 GND 也并过去。给目标芯片留一个空的原点,配一个 10μF 电容跨在编程板的 RESET 和 GND 之间可以防止它被复位干扰。接线时仔细对照引脚图,六根线错一根都烧不进。

开始烧录并验证

接线无误后,在 IDE 的 Tools 菜单里把 Board 选成目标芯片对应的 Arduino Uno,Programmer 选「Arduino as ISP」,然后点 Tools→Burn Bootloader。看到 Serial Monitor 或状态栏提示成功,就说明 bootloader 已经重新写好,变砖的 328P 复活了,之后就能正常用 USB 串口烧应用代码。如果失败,先检查六根线、供电和共地,再检查 Programmer 是否选对。

进阶提醒

除了救砖,学会 ISP 你还能给裸芯片不经过开发板直接烧固件的方案打基础,也能给自己的自定义电路板(比如自制的 328 最小系统)烧 bootloader,让板子独立用 USB 编程。烧完 bootloader 会占用 flash 里很小一段引导区,不影响正常应用空间,可放心。

本篇为实操改写整理,接线务必以实际芯片和编程板引脚为准,先断电再插拔排线。


作者:固件烧录仔
链接:https://www.aiddithome.com/p/79a7c54a23f36.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
5条评论
深圳打工人Alan
1楼 · 2026-10-20 17:00:44

请问烧进去多一个 bootloader 会占多少 flash?

电烙铁爱好者
2楼 · 2026-10-20 17:00:43

用ArduinoISP示例程序那个是最省心的,我就是照它刷好的。

周五下班搞一搞
3楼 · 2026-10-20 17:00:42

六根 ISP 线接好基本就成功一半了,这篇把引脚位对应得很清楚。

入门没多久的新手
4楼 · 2026-10-20 17:00:41

关键是选对板卡型号和引导加载器,我以前一直烧挂在这步。

第三次终于亮了
5楼 · 2026-10-20 17:00:40

328p 芯片便宜,烧坏了不心疼,自己折腾一把学会 ISP 很值。