数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 28803|回复: 43

[AVR] atmega328P 写入 Boot Loader的那点事

    [复制链接]
发表于 2019-6-11 19:55:32 | 显示全部楼层 |阅读模式
Arduino是开源的,这很好。想当年在学校时,每当考试时,同学们在考场上都不开源给我,所以学了BASIC、汇编、FOXBASIC、VB都跟没有学似的,看到满屏的字母只能笑。


这几天忽然对atmega328P的了兴趣,有位坛友也发了不少Arduino实验的贴子,但新买来的atmega328P大部分是没有引导程序BOOT LOADER的,必须进行烧写。
下面说说如何烧写。

一、初识atmega328P集成IC

新买来的328P不做特别说明的一般都是没有引导程序BootLoader的,这就要先对328P进行Boot Loader的烧写。下面就如何烧写进行说明。

(一)328P两种封装的脚位对应情况
atmega328P-AU封装脚位

atmega328P—PU封装脚位

ARDUINO 与两种封装脚位对应关系

要注意Arduino PIN和集成块的PIN是不同的。

(二)制作一个最小系统
以AU为例参考图

atmega328P-PU的最小系统情况

atmega328P-AU封装的使用转接板接出引脚




这时开始的棚搭

后来用面包板了
328AU的最小系统情况参考:




二、使用USB编程器

关键是设置熔丝位(FUSE)和找对相应的HEX文件。
这里使用的是51单片机的下载器

安装好驱动

与ARDUINO的接线关系

熔丝位和HEX文件的设置在IDE的安装目录中的boards.txt文件中可以找到。
1.找到相应的熔丝位

在IDE安装目录中..\arduino-nightly\hardware\arduino\avr找到boards.txt文件

这个文件用写字板打开,在“##”后可以找要烧写的“开发板”型号,下面就可以看到低位熔丝、高位熔丝、扩展位、加密位及bootloader.file(HEX文件)。

这是Nano Old Bootloader 的情况:
nano.menu.cpu.atmega328old=ATmega328P (Old Bootloader)
nano.menu.cpu.atmega328old.upload.maximum_size=30720
nano.menu.cpu.atmega328old.upload.maximum_data_size=2048
nano.menu.cpu.atmega328old.upload.speed=57600
nano.menu.cpu.atmega328old.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328old.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328old.bootloader.extended_fuses=0xFD
nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
nano.menu.cpu.atmega328old.build.mcu=atmega328p


2.连接好ISP线,插好USB下载器,打开progisp,

每项操作,下面的白色窗口都有反馈的,最后的操作在最上现一行显示。

选好片

3.Fuse设置好要点“写入”,然后点“读出”,确保与写入的一样才算写入了

4.调入Flash文件。根据
nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
对应的bootloader文件在IDE的安装目录中可以找到:

..\arduino-nightly\hardware\arduino\avr\bootloaders\atmega


5.检查无误后,点“自动”,窗口最下面的“状态”有提示的


当下载好后,如果在D13上接有LED,LED会闪的。(只有Nano ATmega328P (old bootloader)会闪,UNO和Nano ATmega328P是不会闪的)
三、使用arduino as ISP方式
如果手上没有下载器,可以使用正常的Arduino UNO开发板作为烧写器给单片机芯片烧写BootLoader。
在这里采用一块Arduino UNO板作为烧写器,讲一下对328P进行Arduino BootLoader 的烧写。
(一)将Arduino UNO板(上位机)变成个ISP设备。
1.将作为烧写器的ArduinoUNO板通过USB线连接到电脑,打开ArduinoIDE 。
2.选择并设置好开发板型号、处理器及COM口。(注意要选择的型号为作为上位机的Arduino 型号)

3.在工具栏选择 —〉文件->示例—〉11.Arduino ISP —〉ArduinoISP,打开ArduinoISP程序,编译(验证)、下载到UNO开发板中。

4.在工具栏选择—〉工具—〉编程器—〉Arduino as ISP

到此,上位机就成了一个ISP下载器了。
(二)连接线路
连接好上位机与下位机的线,下位机的电源和地要与上位机连接。
在ArduinoISP 程序的73、85、86、87行给出了UNO板作为ISP的接线:
D10—〉RESET
D11—〉MOSI
D12—〉MISO
D13—〉SCK
对应接线情况:

如果上位机是Nano则在reset与地接一个10UF的电容(我试过4.7100uF都可以)。网上说UNO接这个电容,其实UNO不用接的。
(三)进行烧写
在工具栏选择—〉工具—〉烧录引导程序

6.等待完成

如果是Nano ATmega328P (oldbootloader)D13上接有LED,LED会闪的。
四、验证
(一)使用CH340等,通过TXRX下载程序进行验证
1.电路连接:
目标板上的RESET通过1K电阻上拉到VCC(5V)。RESET串10UF电容,接到CH340的DTR或RTS,可以自动下载。我接的是220UF的,稳定下载
如果没有串电容,等IDE提示“上传”时,RESET对地短路一下也可。就是按一下复位键。隔壁的图


2.选择并设置好开发板型号、处理器及COM口。(注意要选择的型号为刚烧写的Arduino 型号)为了区别示例的Blink,下载了一个“SOS”

(二)使用Arduino作为ISP上传
保持上面Arduino作为ISP设备的姿势(接线不要动)。
打开验证程序
在工具栏选择—〉项目—〉使用编程器上传

也可以按着shift键,用鼠标点上传图标(右箭头)


下载成功后观察。

当然可能用下图这个验证

下面这个是双灯。一个是SOS,一个是呼吸灯,同时闪

费心作了两个板子进行实验

下面这个上位机是NANO,所以在RESET与GND之间接了一个电容,

楼下对熔丝配置的说明,网上收集的
next

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 19家元 +356 收起 理由
玛德陛下 + 20 謝謝分享
锰子 + 20 謝謝分享
佳维 + 20 謝謝分享
myhaly + 16
eros8269 + 16

查看全部打赏

 楼主| 发表于 2019-6-11 19:56:52 | 显示全部楼层
游客请登录后查看回复内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 14家元 +271 收起 理由
锰子 + 20 謝謝分享
佳维 + 20 謝謝分享
myhaly + 18
wjhwpp + 18
人艰不拆了 + 20

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-11 20:20:45 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-11 20:34:26 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-11 21:29:10 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-11 21:50:49 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 歡迎探討 好像不行吧,这样的话不小心FUSE.

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-12 11:47:03 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享 我也小白一个 哈哈

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-12 12:13:04 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享 只是一种叫法,就是能使位而已.

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-12 13:21:26 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-12 14:08:31 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-12 17:49:03 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 2家元 +12 收起 理由
jf201006 + 2 精彩回帖 所以我开源
oscillator + 10

查看全部打赏

回复 支持 2 反对 0

使用道具 举报

发表于 2019-6-12 18:16:43 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-12 21:36:44 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享 是的,但很多国外开源的都被墙了.

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-13 09:06:58 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-13 19:49:20 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +10 收起 理由
人艰不拆了 + 10 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-13 20:19:18 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

发表于 2019-6-13 21:45:22 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-14 09:05:09 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +10 收起 理由
人艰不拆了 + 10 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-14 09:29:06 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享 进了门就好了,祝你成功!.

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-6-14 11:50:00 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 精彩回帖

查看全部打赏

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|数码之家-技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2026-6-18 08:22 , Processed in 0.234000 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz!

© MyDigit.Net Since 2006

快速回复 返回顶部 返回列表