
文档用途教学实操使用供学习者一步步跟随操作完成资料查阅、硬件认识、引导程序烧录、普通程序烧录全流程。若有问题希望批评指正。适用对象零基础/入门教学学员文档版本V1.0更新日期__________1 官方资源获取本章节用于介绍我所使用的一些官方资源、视频教学、网页教学。可以给大家一些学习上的参考和帮助。还有保障同学使用统一的资源、驱动来避免版本不一致导致报错。1.1 官方资料地址官方主页/产品资料页Arduino - Home官方原理图下载地址A000066-schematics.pdf官方示例程序库地址引导程序Bootloader和实例代码后续会进行说明。安装 Arduino IDE 后在「文件」→「示例」中即可浏览全部官方示例。1.2 所需软件工具本次实操统一使用软件Arduino IDE官方下载地址arduino.cc/en/software推荐安装版本直接使用最新版本即可工具驱动Usbasp等这里我主要使用Usbasp进行固件的烧录。起初使用Usbasp时电脑设备管理器Usbasp会有黄色感叹号标志我的已经安装好所以没有。可以使用一个小工具Zadig。根据上面的选项选好它可以完成你的Usbasp驱动的安装。可以通过Progisp-V1.72来对ATmega16U2烧录固件由于我使用的是ATmega328PB而此软件并无这一款芯片后续会讲另一种烧录的方式后续会展开解释这里主要展示软件。1.3学习资源的链接1.Usbasp下载教学三步在Win11系统下使用USBASP不用重启不用配置_usbasp驱动-CSDN博客2.使用Usbasp给UNO烧写ATmega16U2等固件教程使用UsbAsp给UNO烧写bootloader ATmega16U2、ATMEGA328P固件烧写教程_mega16u2驱动-CSDN博客 使用UsbAsp给UNO烧写bootloader ATmega16U2、ATMEGA328P固件烧写教程_mega16u2驱动-CSDN博客3.ATmega328PB-AU烧录bootloader探索研究ATmega328PB-AU烧录bootloader探索研究_atmega328p烧录引导程序-CSDN博客4.硬件电路图学习第一节 Arduino 简介与学习方法_哔哩哔哩_bilibili2 硬件设计说明本章学习Arduino主控板的ATmega16U2和ATmega328PB硬件结构、核心电路、接口功能为后续烧录和实操打基础。2.1 核心硬件参数主控芯片ATmega328PB工作电压1.8-5.5V时钟频率最大 20 MHz这里主要使用外部晶振16MHzFlash容量32 KBSRAM容量2KB通信芯片ATmega16U22.2电源电路以下电路为系统 USB 供电支路采用 FDN340P P 沟道 MOS 管实现 USB5V 与外部 DC 两路 5V 电源自动防倒灌隔离两路电源分时向 5V 母线供电母线 5V 输入 LP2985-33DBVR 低压差线性稳压器转换输出稳定 3.3V 电源输出端并联 1μF、10μF 电容构成多级滤波网络抑制高低频纹波为板载 3.3V 外设提供干净供电。电路搭载 LMV358 双路运算放大器构成电压比较监测电路系统 5V 母线经 10kΩ10kΩ 电阻分压得到 2.5V 固定基准电压与 3.3V 稳压输出送入运放差分输入端当 3.3V 电源正常时运放输出低电平经 1kΩ 限流电阻点亮 LED 指示灯直观反馈 3.3V 供电状态若 3.3V 电压跌落至 2.5V 以下指示灯熄灭实现电源欠压可视化警告。运放供电增加 0Ω 隔离电阻与 100nF 去耦电容保障比较基准稳定运放剩余一组通道预留 SCK 引脚。以下电路外部直流供电支路以 DC-005 电源座作为外部电压输入接口串联 M7 整流二极管 D1 实现输入防反接保护避免电源极性接反造成后级芯片损毁输入侧配置 47μF 电解电容 C1 完成输入电压滤波抑制适配器输出低频纹波。稳压单元采用 NCP1117ST50T3G 固定 5V 输出低压差线性稳压器芯片 ADJ/GND 引脚直接接地固定输出5V。金属散热 TAB 与 VOUT 引脚短接以提升芯片散热能力输出端并联 47μF 电解电容 C2 与 100nF 陶瓷电容 C3 组成高低频复合滤波网络优化 5V 输出电源纯净度。0Ω 电阻 R2 作为隔离测试点位最终输出稳定 5V 母线为主控 ATmega328PB 及板载 5V 外设提供主供电。2.3串口通信电路以下电路为 ATmega16U2 USB 转串口通信单元实现 USB 信号与主控 ATmega328PB 硬件串口的协议桥接。USB-B 接口作为上位机通信输入端口VBUS 通路串联自恢复保险丝 U8 完成 USB 过流保护D、D - 差分数据线接入 ESD 防护器件 USBLC6-2SC6 抑制静电浪涌搭配 RC 泄放电路 C16、R20 优化信号静电防护性能差分信号经 22Ω 串联电阻 R18、R19 匹配阻抗后接入 ATmega16U2 芯片 D、D - 引脚。芯片时钟电路采用 16MHz 无源晶振 U7两端配置 20pF 负载电容 C13、C14 起振1MΩ 电阻 R12 为晶振提供直流偏置保障时钟稳定输出VCC 引脚由系统 5V 母线经 0Ω 电阻 R10 供电搭配 100nF 去耦电容 C12 滤除电源噪声AVCC 模拟电源独立供电提升 USB 模拟模块稳定性。复位电路由 10kΩ 上拉电阻 R11 与 1N4148 二极管 D3 构成接收主控复位信号同步实现 USB 芯片复位。芯片 TXD、RXD 引脚经 1kΩ 限流电阻 R17、R16 分别驱动 LED2、LED3 收发状态指示灯直观反馈串口数据收发状态板载 2.54 间距 ICSP 烧录插座 J3 引出 SCK、MOSI、MISO 等 SPI 信号支持固件烧录调试UGND 模拟地通过 0Ω 电阻 R13 单点接数字地分割模拟、数字地降低数字噪声对 USB 差分信号的干扰芯片剩余通用 IO 引脚全部引出作为功能扩展预留接口。2.4 主控电路以下电路为主控 ATmega328PB 最小系统单元为单片机提供基础运行条件并完整引出多路外设扩展接口。数字供电由系统 5V 经 0Ω 电阻 R6 接入芯片 VCC 引脚并联 100nF 去耦电容 C9 滤除数字电源高频干扰模拟域 AVCC 独立供电模拟参考引脚 AREF 搭配 100nF 滤波电容 C6削弱开关噪声对 ADC 模拟采样的干扰提升模拟采集精度。系统时钟源采用 16MHz 无源晶振 U5两侧配置 20pF 匹配负载电容 C7、C8并联 1MΩ 直流偏置电阻 R7 保证可靠起振输出标准 16MHz 时序供给主控。复位电路采用复合双复位架构10kΩ 上拉电阻 R8 使 RESET 引脚常态维持高电平TS665CJ 轻触按键 SW1 并联 100nF 消抖电容 C11实现本地手动硬件复位1N4148 二极管 D2 隔离前端 USB 桥接芯片的复位信号用于程序下载自动复位本次优化将复位延时电容C10 调整为 1μF延长复位低电平保持时长提升 USB 烧录时复位稳定性复位信号经 1kΩ 限流电阻 R9 对外引出。外设接口分区独立排布J1 为标准 6Pin ICSP SPI 烧录插座复用 PB 口 SPI 总线实现离线固件烧写J2 为 10Pin 多功能母座引出 PB 组数字 IO、I2C 总线 SDA/SCL 与模拟基准 AREFP3 为 6Pin 模拟扩展座引出 PC 口多路 ADC 通道与 I2C 通信引脚P1 为 8Pin 串口扩展座引出硬件 UART 收发引脚、多路 PWM 输出与外部中断 IOP2 为综合电源调试插座对外输出 5V、3.3V、VIN、复位、GND 等电源信号芯片 PE 端口拓展 IO 全部预留引出可外接多组传感器与执行机构具备充足硬件拓展余量。PCB参考图2.5硬件检查步骤步骤1目视检查板子有无虚焊、短路、元件歪斜。步骤2检查USB口、引脚排针是否完好。步骤3接入USB供电确认电源指示灯正常亮起。步骤4用万用表测量 5V 和 3.3V 测试点确认电压正常。步骤5无异常后进入软件烧录环节。焊接过程可以优先焊接电源部分并且使用万用表进行检查短路和电压是否正常。下图是我所焊接好的主控板供大家参考。3 引导程序Bootloader烧录教程说明引导程序是主控板底层启动程序出厂损坏、刷错固件后需要重新烧录为后续正常程序烧录做底层支撑。3.1 烧录准备所需工具USBasp所需Bootloader文件ATmega16U2文件夹位置 C:\Users\lenovo\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.8\firmwares\atmegaxxu2关于ATmega328PB的固件我们需要先使用Arduino IDE软件中下载MiniCore。原因是ATmega328PB在官方开发板中无法选择可以使用这个方式代替。完成下载后可以在C:\Users\lenovo\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\3.1.2\bootloaders文件下看到这里分为optiboot_flash和urboot这两个文件夹下均有ATmega328PB的固件 C:\Users\lenovo\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\3.1.2\bootloaders\urboot\ATmega328PB\watchdog_1_s\autobaud\uart0_rxd0_txd1\ledb5C:\Users\lenovo\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\3.1.2\bootloaders\optiboot_flash\bootloaders\ATmega328PB\16000000L软件Arduino IDE默认烧写的是urboot。3.2ATmega16U2固件烧录ATmega16U2我们需要使用PROGISP-V1.72-main软件下面给出步骤大家可以一步一步来完成避免出错。第一步选择我们需要选择的芯片型号ATmega16U2。第二步我们点击RD观察是否有反应若出现无法进入编程模式则可能是Usbasp的连接线和板子ISP烧录端口没有连接成功若还有问题可以检查板子是否出现短接的问题。上图需要和你的ATmega16U2的ISP 编程端口一一对应的连接否则会出现问题。若以上问题均未出现则会显示出读出ID成功。第三步我们需要配置他的熔丝位这个要重点注意熔丝位不要填错否则可能会出现芯片被锁住无法烧录程序只能进行擦除才可以正常使用。我们可以点击写入和读出能否正常反应。第四步调入Flash文档开始在工具介绍里面已经提到关于ATmega16U2的固件的位置。所需Bootloader文件ATmega16U2 C:\Users\lenovo\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.8\firmwares\atmegaxxu2调入成功后下方提示框则会出现提示。无误之后我们点击自动将会自动烧录程序通常很短时间便可以烧录完成若点击自动后还是出现无法进入编程模式还是和RD时穿的问题一样需要进行检查硬件是否出现问题。以下为成功烧录的状况。以上便是ATmega16U2的固件成功烧录。这样我们在使用usb连接电脑后便可以检测到端口号。这主要是为了在我们烧录平常代码可以更加快速上传。3.3ATmega328PB引导程序烧录由于PROGISP-V1.72-main软件内没有ATmega328PB所以我使用了Arduino IDE软件进行烧录ATmega328PB的引导程序。若你使用的是Atmega328p你可以尝试直接参考烧录ATmega16U2固件的方式。打开烧录软件/Arduino IDE点击-文件-首选项然后将以下网址复制到我指定的区域https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json然后便是上文所提到的关于Atmage328pb的固件我们需要先使用Arduino IDE软件中下载MiniCore。下载完毕后我们便可以在工具中选择我们的芯片开发板型号。由于我们需要先向ATmega328PB烧录引导程序Bootloader我们需要先使用工具Usbasp来烧录需要注意一个细节我们在给空白的ATmega328PB第一次烧录引导程序的时候编程器需要选择USBasp slow因为新芯片默认使用内部 1MHz RC 振荡器ISP 时钟必须低于 1/4 芯片时钟只选择USBasp可能无法烧录。但是第一次完成后后续便可以直接使用USABasp烧录。配置好环境之后我们便可以点击烧录引导程序等待几秒便可以完成烧录引导程序。4 用户程序烧录实操教程本章为常用程序烧录流程可直接跟随步骤操作。4.1 前期准备1. 电脑已安装Arduino IDE及对应串口驱动。2. 开发板已正常烧录Bootloader。3. 使用优质USB数据线支持数据传输非纯充电线。4.USBasp4.2程序编译与烧录若以上操作步骤没有出现错误我们可以直接使用usb连接线连接好并且选择正确的开发板便可以直接点击Arduino IDE软件上的上传按钮进行直接上传这样在我们以后使用时修改代码也就更加快速和便捷。上传代码需要选择端口号其他的配置照常。其中编程器在我们使用上传按钮时不用配置它不会是使用所以不会有什么影响。等待几秒钟便可以看到上传成功。若以上没有成功我给出另外一个方式进行上传代码使用编程器上传我们需要使用USBasp连接到ATmega328PB的isp端口上一一对应连接好。编程器选择USBasp。配置好后我们点击-项目-编程器上传。便可以成功上传代码。5 常见问题排查本章汇总实操过程中高频出现的故障现象按照硬件检查 → ATmega16U2 烧录 → ATmega328PB 烧录 → 普通程序上传的顺序分类便于对照排除。5.1 硬件与电源类问题1.现象接入 USB 后电源指示灯不亮检查 USB 数据线是否支持数据传输部分纯充电线无供电能力。用万用表测量 5V 母线和 3.3V 测试点确认 LP2985 和 NCP1117 稳压输出正常。检查自恢复保险丝 U8 是否断路USB 过流保护后需断电冷却恢复。目视检查电源部分焊点有无虚焊、冷焊优先复查 USB-B 接口引脚和 DC-005 焊盘。2.现象接入 USB 后电脑完全无反应设备管理器无任何变化先排除数据线问题换一条已知可传数据的 USB 线。检查 ATmega16U2 芯片是否已烧录固件未烧录时 USB 无法枚举电脑不会有任何反应。检查 USBLC6-2SC6 静电防护器件是否焊接正常、方向是否正确。测量 16MHz 晶振 U7 两端是否有波形无时钟则芯片无法工作。5.2ATmega16U2固件烧录类问题1.现象PROGISP 点击 RD 后提示无法进入编程模式首先确认 USBasp 与板子 J3ATmega16U2 的 ICSP 插座的 6 根线一一对应连接 MOSI→MOSI、MISO→MISO、SCK→SCK、RESET→RESET、VCC→VCC、GND→GND任一根接错或接触不良都会报此错误。检查 ATmega16U2 芯片供电是否正常VCC 引脚对地应为 5V。确认 USBasp 的驱动已正确安装设备管理器中无黄色感叹号。若未安装参照 1.3 节链接中的 Zadig 工具流程重新安装驱动。2.现象熔丝位写入后芯片被锁死无法再次烧录这是最常见的严重故障。熔丝位配置错误会导致芯片无法通过 ISP 再次通信。再次强调熔丝位数值务必核对无误后再点击写入。3.现象ATmega16U2 烧录成功后USB 连接电脑仍不识别端口号确认烧录的 .hex 固件文件是否正确路径...\firmwares\atmegaxxu2 下选择与 Arduino UNO 对应的固件通常为 Arduino-COMBINED-dfu-usbserial-ATmega16U2-Uno-Rev3.hex。重新插拔 USB 线或在设备管理器中右键扫描检测硬件改动。检查 D、D- 差分线上串联的 22Ω 电阻 R18、R19 焊接是否正常。5.3ATmega328PB引导程序烧录类问题1.现象Arduino IDE 工具菜单中找不到 ATmega328PB 开发板选项检查是否已正确添加 MiniCore 开发板包。在 Arduino IDE 中点击「文件」→「首选项」确认「附加开发板管理器网址」中已填入 https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json然后进入「工具」→「开发板」→「开发板管理器」搜索MiniCore并安装。安装完成后重启 Arduino IDE。2.现象选择 USBasp 后点击烧录引导程序失败提示 avrdude 通信错误关键排查点如果是给空白的全新的、从未烧录过的ATmega328PB 芯片首次烧录引导程序必须在「工具」→「编程器」中选择 USBasp slow而不是普通的 USBasp。这是因为全新芯片默认使用内部 1 MHz RC 振荡器ISP 时钟必须低于芯片时钟的 1/4普通 USBasp 的 SCK 频率过高会导致通信失败。首次烧录成功后熔丝位已配置为外部 16 MHz 晶振后续可直接使用 USBasp 烧录。确认 USBasp 的 ICSP 线缆与板子 J1 插座ATmega328PB 的 6Pin ISP 口一一对应连接引脚顺序同 5.2 节所述。3.现象烧录引导程序时提示 Device signature 0x000000 或签名不匹配芯片未正确供电测量 ATmega328PB 的 VCC 和 GND 引脚电压是否为 5V。ISP 信号线接触不良逐根检查 MOSI、MISO、SCK、RESET 线路。芯片损坏或方向焊反检查芯片 1 脚圆点标记/半圆缺口方向是否与 PCB 丝印一致。5.4用户程序上传类问题1.现象点击上传按钮后提示找不到端口或端口号灰色不可选ATmega16U2 固件未烧录或烧录错误导致 USB 转串口功能失效——回到 5.2 节排查。USB 驱动未安装在设备管理器中查看端口 COM 下是否出现带感叹号的设备若有则右键更新驱动指向 Arduino IDE 安装目录下的 drivers 文件夹。尝试换一个 USB 口避免使用 USB 集线器直接插到电脑主板 USB 口。2.现象上传编译通过但卡在上传中...长时间无反应检查「工具」→「端口」是否已选中正确的 COM 口。检查「工具」→「开发板」是否选为 ATmega328PB 对应型号。复位电路的 C10 电容文档中已调整为 1μF若未焊接或虚焊可能导致自动复位信号时序不对无法进入引导程序。此时可以尝试手动复位在 IDE 显示上传中...时按下板子上的 SW1 复位按键并松开观察是否开始上传。3.现象上传时提示 avrdude: stk500_getsync() attempt ... not in sync这是最典型的上传失败报错。原因通常是 ATmega328PB 上的引导程序未正常启动或与上位机通信失败。排查路径确认 Bootloader 已正确烧录见 3.3 节→ 确认 COM 口未被其他软件如串口监视器占用 → 确认开发板型号选择无误 → 尝试手动复位。还有一种情况我的电路和官方有差别我在使用100nF的电容时也会出现无响应的问题这里修改为1μF的电容便可以正常烧录。通常我们通过示波器检查复位引脚会有一个5V下降沿出现可以检查电路是否有问题。找到的原因是我这里多加了一个100nF的电容导致分压。4.现象USB 上传始终失败但使用 USBasp 通过 ISP 上传可以成功这说明 ATmega328PB 芯片本身正常问题出在 USB 转串口链路即 ATmega16U2 部分或引导程序。用 USBasp 重新给 ATmega16U2 烧录一次固件再重新给 ATmega328PB 烧录一次引导程序通常可以解决。5.5 排查总原则从源头查起先确认供电看指示灯→ 再确认时钟晶振起振→ 最后确认数据通路ISP 接线 / USB 枚举。先硬件后软件硬件问题不排除软件配置再对也无法烧录成功。优先用万用表检查电源和焊接质量。逐一替换排除USB 线、USB 口、杜邦线、USBasp 烧录器本身都可能单点故障尽量用已知正常的备件交叉测试。环境一致性统一使用文档 1.1 和 1.2 节指定的 Arduino IDE 版本和 MiniCore 版本避免因版本差异引入新问题。