0. 前言
因某种原因需要更新我的Arduino DUE上面的USB转串口的芯片ATMEGA16U2里的固件,
找了很多资料,下面是操作步骤,记录一下,方便后续查找:
1. 用Arduino UNO制作一个烧录器
准备一块Arduino UNO的正常主板,用ArduinoIDE烧录一个示例程序:ArduinoISP
这块Arduino UNO主板就变成了一个AVR烧录器(ArduinoISP)了。
2. 准备命令行烧录工具
在ArduinoIDE的安装目录下找到avrdude程序,如:
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe
命令行使用这个程序就能用(第1步制作好的)ArduinoISP烧录器来烧录avr芯片了。
3. 将烧录器和目标CPU的ISP线连好
| ArduinoISP(UNO主板) | 目标板(ATMEGA16U2) |
| 10 | RESET |
| 11 | MOSI |
| 12 | MISO |
| 13 | SCK |
| 5V | 5V |
| GND | GND |
4. 执行命令行烧录
avrdude.exe -C ..\etc\avrdude.conf -v -patmega16u2 -cstk500v1 -PCOM15 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xF4:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m
avrdude.exe -C ..\etc\avrdude.conf -v -patmega16u2 -cstk500v1 -PCOM15 -b19200 -Uflash:w:C:\Users\xxx\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\firmwares\atmega16u2\Arduino-DUE-usbserial-prod-firmware-2013-02-05.hex:i -Ulock:w:0x3F:m
稍微解释一下命令行参数:
-C后面是配置文件,arduino环境安装后自带一个,直接用就行。
-v 打开详细日志显示
-p 目标芯片型号
-c 烧录器型号,使用ArduinoUNO制作的ArduinoISP的型号就是stk500v1
-P 烧录器的串口号
-b 烧录器串口波特率
-e 整片全部擦除
-U 存储器操作指令
efuse:Extended Fuse Byte
hfuse:Fuse High Byte
lfuse:Fuse Low Byte
lock:Lock Bit Byte
flash:内部flash
5. 参考
https://blog.youkuaiyun.com/menglongfc/article/details/78853961
https://blog.youkuaiyun.com/weixin_36815313/article/details/90686150

该博客详细记录了如何利用ArduinoUNO作为烧录器,通过命令行工具avrdude更新ArduinoDUE上ATMEGA16U2的固件。步骤包括制作ArduinoISP、准备avrdude命令、连接ISP线及执行烧录命令。此过程涉及串口通信、AVR芯片烧录和Arduino开发。
3602

被折叠的 条评论
为什么被折叠?



