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.7-100uF都可以)。网上说UNO接这个电容,其实UNO不用接的。 (三)进行烧写 在工具栏选择—〉工具—〉烧录引导程序。
6.等待完成
如果是Nano ATmega328P (oldbootloader)D13上接有LED,LED会闪的。 四、验证 (一)使用CH340等,通过TX、RX下载程序进行验证 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
|