|
本帖最后由 wwwusr 于 2015-5-10 22:49 编辑
一、前言
以前也弄过几回,中间不成功过,最后成了,但也是迷迷糊糊过的,烧写问题不大,按教程一步步进行就O了。
问题出自给DIY的Arduino mega328P通过Arduino IDE正常下载程序:总是时不时的下载不成,提示STK500@&$*&^@&#^!*^!^*$*!$之类的神马。。。 不稳定就是问题!自我赶脚这回算是找到原因,知道为什么好用了。
但也是知其然,不知其所以然啊,所以写出来,大家一起来分析一下,期待某大神帮我解释一下我的做法为什么会成功?
二、电路及常规烧写bootloader过程
这个不多说,图片、教程,在论坛,网上其它的地方,有很多很多:弘毅的教程在此
三、问题在这儿呢
现在,DIY的Arduino UNO(或者叫pro mini也成,反正芯片都是一样一样的mega328P,嘿嘿)烧好了,现在是可以正常下载程序的节奏,但是,问题来啦。
这时见过最多的就是:Arduino编译完成,uploading....,TTL串口下载器的TX灯闪三下,然后,然后,然后就没然后了。。
几秒过后,IDE就会提示下载失败了。
四、问题的过程
在给出我的方法前,先看一下之前的电路图,完全依照Arduino-UNO-Schematic来的,(当然,只有mega328P的部分)
这是局部电路:
还有下载神器:引出了DTR信号的PL2303(为什么要引出DTR? DIY Arduino的人会懂的)
下面,咱们谈点儿有用的(个人理解)。(也就是前面基本都没嘛信息量):
1.理想下载过程:Arduino编译好文件后,发送时,会让平时为高的DTR脚置低一下,马上恢复高,也就是让目标板的reset脚置低一下,再恢复高,握手成功,之后开始下载。这个过程也可以不用DTR,手动完成:IDE出现uploading... 时,手动把目标板复位一下。但这个火候不太好掌控。
2.实际我的下载过程:DTR引脚为低,目标板RESET脚却没有变低,反而是有个上升!再回VCC。这是用数字万用表量出来的,可能不是实际值,但怎么着RESET脚也是没有变低,再回高,完不成握手动作,IDE就一直让DTR为低,执着的等待着。。。。 直到一定时间后,没招了,就让DTR回高,提示下载未成功。
四、问题的解决
说说解决方法吧。先上对比图,请自动聚焦脑电波到schematic中DTR与RESET连接的部分。
两者唯一的区别:在100nF的电容两端并了一个100K的电阻,问题迎刃而解!曾经怀疑过复位时间问题,试过102、22PF的电容,单独用电容,怎么都不好使,只要并上100K的电阻,都好使!
给自已的解释是:10K与100K电阻形成分压电路,可以更好的确定中间的RESET脚电位?
我自己都不信!哈哈。所以欢迎大家,尤其是对此有更深入研究,或者也在纠结于此的人来参与喽。
下面是我DIY成功的Arduino UNO,用引出DTR的PL2303,或者CH340来下载,可以保证100%成功。
。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|