Arduino Atmega328P烧写bootloader及熔丝

本文档记录了如何为新的Atmega328P芯片烧录bootloader和熔丝的详细步骤,包括硬件配置、使用AVRDUDESS软件、解决驱动问题、通过Arduino导出编译文件以及烧录过程。同时,文章还提到了可能出现的错误及解决方法,确保芯片能正常工作。

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

0.前言

​ 买到的新的Atmega328P芯片,需要对其烧录bootloader和熔丝才能正常使用,此处记录我烧录的过程。

参考资料1

1.硬件配置

  1. AVR下载器,如图:

    image-20210415211533345

  2. Atmega328P最小系统,且留出ISP接口,即5V,MISO,MOSI,SCK,GND,RESET

    image-20210415211822993

  3. 连接AVR和Atmega328P的相应引脚

    其中,AVR下载器的实际引脚如图:

    image-20210415212107013

    image-20210415212038241

2.烧录步骤

2.1.安装AVRDUDESS软件

下载地址

2.2.检测MCU

AVR和Atmega328P连接好之后,把AVR下载器插入电脑。然后打开AVRDUDESS软件,选择如下操作:

image-20210415212617034

正常的话电机Detect后就可以识别出来MCU的型号。但是有可能会遇到如下错误:

could not find USB device with vid 0x16c0 pid 0x5dc

这个时候是因为驱动的问题,此时需要替换或者安装驱动。操作如下(参考视频教程):

  • 下载Zadig,下载地址

  • 打开 Zadig 软件,点击菜单栏中的 Options,点击 List All Devices。

    image-20210415213404676

  • 选择需要替换的通讯端口为 USBasp,选择使用 libusbsbk(vx.x.x.x) 作为替换的驱动,然后点击 Replace Driver 进行替换。

    image-20210415213705013

这个时候再返回AVRDUDESS软件进行Detect操作,就能检测出MCU了。

2.3.烧录bootloader

打开Arduino,新建一个空项目,选择设备类型如下:

image-20210415214009672

导出项目的编译文件:

image-20210415214048802

然后可以得到烧写使用的文件:

image-20210415214127246

返回AVRDUDESS软件,按照如下操作:

image-20210415214305847

得到如下结果,即烧写bootloader成功

image-20210415214416354

2.3.烧录熔丝

先读取熔丝值,如下:

image-20210415214603164

更改L为0xFF,H为0xDA,E为0x05或者0xFD,然后点击Write

image-20210415214749999

注意事项

  • 这里Write一次不成功,就多write几次。

  • 如果E是0x05,总是会报错如下:

    avrdude.exe: verifying ...
    avrdude.exe: verification error, first mismatch at byte 0x0000
                 0xfd != 0x05
    avrdude.exe: verification error; content mismatch
    

    image-20210415214905021

​ 实际上此时如果L和H读出来已经是烧写的值,并且E读出来是0xFD说明已经成功了。因为E只用了低三位,0xFD和0x05的效果是一样的。 参考解释

至此,全部完成。

### 如何使用 ProgISP 烧录 ATmega328P 程序 #### 准备工作 确保拥有 USBASP 下载器并将其连接到 Arduino Uno 开发板或 Atmega328P 单片机最小系统的 ICSP 引脚[^1]。 #### 打开 ProgISP 软件 启动 ProgISP 下载软件,该软件用于配置和烧录程序至目标芯片。确认电脑能够识别 USBASP 设备,并且在 ProgISP 中正确选择了设备型号为 ATmega328P。 #### 设置熔丝位 在烧录前需谨慎设置熔丝位参数。错误的熔丝位可能导致单片机无法正常工作甚至无法再次编程。建议保持默认值除非有特殊需求。对于初学者来说,默认熔丝位通常是安全的选择[^5]。 #### 加载 HEX 文件 准备要入的目标代码文件(HEX)。如果是首次初始化,则可能需要先加载 bootloader 文件如 `optiboot_atmega328.hex` 或者其他特定版本的引导加载程序[^3]。 #### 进行烧录操作 点击相应的按钮执行读取/擦除/入命令来完成整个过程。通常情况下,“全擦”后再进行“Flash”,最后验证数据一致性以确保烧录无误。 #### 完成后的测试 烧录完成后重启电路板并通过简单的 Blink 测试或其他基础功能检验新刷入的固件是否能按预期运行[^4]。 ```cpp // 示例:Blink 测试代码片段 void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } ```
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值