新手帖 用ARDUINO给MEGA2560刷BOOT
本帖最后由 darkorigin 于 2013-5-12 00:50 编辑
首先对张老师在之前28J60模块调试中给予的帮助以及在此次刷BOOTLOADER中给予的帮助表示感谢!
之前一直怀疑自己的2560因为BOOT版本的原因导致28J60工作不正常
接着由于这个小项目的推进,购买了张老师的mircoduino以及其他模块若干(由于和此文无关暂且带过不表) 接着在论坛里面搜索了2560的刷BOOT过程(中间还无耻的拜了度娘),于是发现不管是各位大神还是各大论坛的ARDUINO教程中刷写ARDUINO主要集中在328P以及其他更廉价的模块,甚至是AVR芯片本身(于是各种构建于面包板的ARDUINO诞生了) 唯独看不见的就是1280以及2560的相关刷法。
经过了请教zcbzjx , 看ARDUINO的图纸,参考2560图纸,等等过程,算是绕了很多圈圈,最终将2560的BOOT成功的刷进去了。。。
备注: 以下称UNO(用来做ARDUINO刷写器的板子)为 UNO ,待刷的板子称作 MEGA;
下面贴出我实现的过程:
材料 : mircoduino (其他所有兼容UNO的模块均可) 作为ARDUINO ISP例程 的载体 ARDUINO 2560mega (1280同2560 刷法一样) 作为待刷 BOOTLODER的ARDUINO 杜邦线(其实就是做实验的面包板线)6根
刷写过程: 1. 首先 使用ARDUINO 最新版本的IDE 打开FILE - Examples - Arduino ISP 并且按照文末的提示修改代码(算是一个小BUG) 2. 按照连接图连接好主从机(就是UNO和MEGA连接的关系),一定要确认之后再进行连接(连接过程之前拔掉2块板子的供电和COM口,仔细确认后UNO连接USB供电 此时MEGA已经不需要外部电源了,直接由UNO供电和重启),有些错误将导致硬件损坏; 3.检查你的COM口设置。COM口选择你UNO的端口() BOAD选择 目标板的型号比如:MEGA (2560或者1280) 4. 打开 TOOLS --- Burn Bootloader 等待(大概5分钟,没计算时间)
刷好之后UNO会直接给MEGA发送重启的信号, 此时MEGA会如同新生一样,开始了第一个代码(13管脚闪灯代码) 看到13脚的LED闪烁 MEGA刷机就完成了。
连接图:(之前就是因为连接方式的原因,纠结了几个小时,于是万用表,各种图纸,度娘 纷纷出马, 最后发现居然就在ARDUINO ISP程序的注释部分已经列出了接法)
pin name: not-mega: mega(1280 and 2560) slave reset: 10: 53 MOSI: 11: 51 MISO: 12: 50 SCK: 13: 52
具体连接方式 UNO MEGA VCC -------------VCC(不用怀疑 不是VIN 是VCC 实测那个6脚ICMP的2口就是VCC) GND -------------GND D10脚------------- Reset(没错 就是VCC前面的脚 用来重新被刷的板子) D11脚------------- 51脚 (含义:MOSI) D12脚------------- 50脚 (含义:MISO) D13脚------------- 52脚 (含义 SCK 时钟)
要点:
首先 使用ARDUINO 最新版本的IDE 打开FILE - Examples - Arduino ISP 好吧 。很多同学看到这里,就会毫不犹豫的把UNO给刷上,然后连上线直接刷MEGA了,最后会有一个小惊喜(我卖个关子 后面细说) 由于1.0以后的BOOTLADER启动时间的缩短,校验固件有效性的时间也需要提前了,所以 ISP的代码要修改: 搜索heartbeat() 函数 函数末尾的 delay(40);修改成delay(20); 否则刷完之后会提示
其实仔细的看结果会发现只是校验出错;
其实反之也一样 2560给 328P刷BOOT接线方式: mega uno D51 接 D11; D50 接 D12; D52 接 D13; D53 接 RESET; VCC 接 VCC; GND 接 GND; 最后附上ICMP脚的连接图(这样就可以忽略被刷的MEGA和UNO管脚的区别了)
|
|
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。