分享

【新提醒】atmega328P 写入 Boot Loader的那点事

 jzpjzl 2019-06-13
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的最小系统情况参考:

010 AU最小系统.jpg (99.45 KB, 下载次数: 0)

下载附件

前天 19:21 上传





二、使用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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多