手里的 ATmega328P 芯片怎么刷都连不上、或者那个「敬爱的 328 已变砖」,多半是 bootloader 丢了。别急着丢掉,用另一块 Arduino 当 ISP(在系统编程器),是可以把芯片完整救回来的。这篇把原理、接线和烧录步骤写清楚,属于玩单片机的必修课。
bootloader 是什么,为什么丢了芯片就「变砖」
ATmega328P 内部有自己的 flash(存程序)和一段引导区(bootloader)。bootloader 是一小段预置程序,作用是在串口(经 USB 转串口)收到新固件时,把你写好的应用代码烧进 flash。一旦 bootloader 损坏或没烧过,芯片就不懂串口下载协议,表现为电脑怎么都烧不进去。解决办法就是走底层 ISP 接口,用一种特殊的串行协议(SPI 的变形)直接写 flash——这也正是「救砖」的核心。

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

六根线的接线对应
把目标芯片放到面包板,用跳线把两块分开放:编程板(作为 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 里很小一段引导区,不影响正常应用空间,可放心。
本篇为实操改写整理,接线务必以实际芯片和编程板引脚为准,先断电再插拔排线。









请问烧进去多一个 bootloader 会占多少 flash?
用ArduinoISP示例程序那个是最省心的,我就是照它刷好的。
六根 ISP 线接好基本就成功一半了,这篇把引脚位对应得很清楚。
关键是选对板卡型号和引导加载器,我以前一直烧挂在这步。
328p 芯片便宜,烧坏了不心疼,自己折腾一把学会 ISP 很值。