本帖最后由 kakaxi945 于 2016-11-14 17:17 编辑
最近做了一个项目用到STM32F405RGT6,板子开始能够正常烧写,后来出现问题,总是提示:internal command error或者cannot reset target 等等错误。1.一次尝试:开始怀疑是复位电路的问题,把复位电路电容104改成了10μf,然而并没有啥用。
2.二次尝试:上网查了相关问题的解决方法,说“是因为目标板的芯片处于休眠的状态,在尝试连接目标板时候也会出现报错Internal command error Flash download failed target dll has been can的现象,解决办法是使目标板退出休眠,即按住reset键再下载程序,看到USB通讯灯闪后一小会儿(自己把握)后放开reset就能看到程序下载进去了,不行就多试几次,成功一次后面就正常了”,然而楼主画的最小系统并没有设置复位键/(ㄒoㄒ)/~~,另外看有些人采用这种方法也没有解决问题。但是芯片处于休眠状态这点是正确的,下面再详细谈。
3.三次尝试:因为是烧写不了程序,但原来的程序还能正常运行,因此楼主相信单片机还没挂(不信也得信啊)。于是从SWD接口找原因。这一下还真找到了点问题!楼主发现用万用表量Pin46:SWDIO跟Pin47:Vcap_2竟然会响,于是乎觉得是两个脚短接了。因为是自己焊的电路,觉得出现虚焊也算正常,于是用烙铁烫了一把这两个脚,重新测量万用表不响了。楼主以为万事大吉了。接下来程序能正常烧写了,楼主很兴奋,开始了愉快的仿真,突然,梦魇一般的cannot reset target再次跳出。楼主很慌,插拔仿真器和断电重新启动板子都不能解决问题,于是重新开始debug.
4.四次尝试:经过一系列仔细检查,发现还是Pin46:SWDIO跟Pin47:Vcap_2的问题,万用表测二者,仍然会响!我再次烫了一下这两个脚,又开始重复3中的问题,一遍又一遍的cannot reset target夹杂internal command error骤雨般袭来,敲打着楼主内心的脆弱。一个本该愉快的周日在凄风苦雨中熬到了第二天的凌晨。带着郁闷和不甘,楼主回到了宿舍。
5.五次尝试:今天早上,楼主有了新的发现。正常的46、47脚间阻值为MΩ级,但烧写不进去时万用表虽然响,但还是有60Ω阻值的!每次烫完46,47脚又恢复了正常。楼主非常郁闷,显然所有的引脚跟电路都接触良好,以前的片子能正常烧写……楼主不由地怀疑是芯片自身坏了!但是规律闪动的LED提醒着我不要轻易下结论。又是一个早上……
6.六次尝试:期间想了各种方法,想联系意法半导file:///C:UsersdellAppDataRoamingTencentUsers609165715QQWinTempRichOle2DG8(_]WTGGUR($TDO`LE{X.png体的技术支持,没有电话未果。网上没有明确的答案,于是楼主开始了回忆,想到以前无意中的那几次尝试……如下图:
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我用的是STM32F405RGT6,Pin46:SWDIO,Pin47:Vcap_2。Vcap_2是单片机内核供电电源的去耦电容接口,这个端口一上电就是高电平,SWDIO就跟SWD烧写有关了。我的板子有问题时46和47脚之间只有60欧左右的阻值,这样47脚的高电平就影响到了46,使下载不能正常完成
嗯,您说的是个好办法。但是我画的最小系统因为对PCB的大小有比较严格的限制,就没有加串口烧写的接口
一周热门 更多>