OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5485|回复: 5

关于芯片莫名其妙烧写不进去的解决方法!

[复制链接]

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2016-5-30
在线时间
14 小时
发表于 2016-11-14 17:17:10 | 显示全部楼层 |阅读模式
本帖最后由 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:\Users\dell\AppData\Roaming\Tencent\Users\609165715\QQ\WinTemp\RichOle\2DG8(_]WTGGUR($TDO`LE{X.png体的技术支持,没有电话未果。网上没有明确的答案,于是楼主开始了回忆,想到以前无意中的那几次尝试……如下图:
4SJ{91Y636~C2HE7N8TI7WR.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2016-5-30
在线时间
14 小时
 楼主| 发表于 2016-11-14 17:38:56 | 显示全部楼层

RE: 关于芯片莫名其妙烧写不进去的解决方法!

本帖最后由 kakaxi945 于 2016-11-14 17:48 编辑

楼主想到曾经的板子对新的MCU做过全片擦出,于是抱着试试看的心态在第若干次烫引脚后来了次全片擦除。如下图所示,10几秒钟的等待换来一个期待已久的结果:换回上楼图中第二个Erase Sectors烧写模式,芯片可以正常擦除了!为了验证准确性,楼主进行了几十次的反复烧写,片子一切正常,并不出现原来烧写几次就不行的情况。7.最终结论:烧写不了的原因:单片机flash写保护了。解决方案:烙铁烫46,47脚,在单片机能够烧写的有限几次中进行全片Flash擦除,如上图所示。提醒大家全新的单片机最好要在开始的几次烧写中选择全片擦除!!另外在使用STM32F4的时候一定要注意Vcap和STM32F1Vss的重大区别!!Vcap接电容后接地,而Vss直接接地!楼主吃过亏!!
NVFR~J5)WD{P2EYH70NKC$D.png
_G_Y]V@XDP[K2)`A[@5`Y52.png
回复 支持 反对

使用道具 举报

20

主题

297

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1830
金钱
1830
注册时间
2013-7-29
在线时间
276 小时
发表于 2016-11-23 11:11:19 | 显示全部楼层
直接用串口下载,擦了全部flash。
回复 支持 反对

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
发表于 2016-11-23 11:11:21 | 显示全部楼层
请问楼主为什么是烫46,47引脚呢,我看了数据手册,没发现这两个引脚有什么特殊的
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2016-5-30
在线时间
14 小时
 楼主| 发表于 2016-11-24 18:17:40 | 显示全部楼层
DZKJXHxcz 发表于 2016-11-23 11:11
请问楼主为什么是烫46,47引脚呢,我看了数据手册,没发现这两个引脚有什么特殊的

我用的是STM32F405RGT6,Pin46:SWDIO,Pin47:Vcap_2。Vcap_2是单片机内核供电电源的去耦电容接口,这个端口一上电就是高电平,SWDIO就跟SWD烧写有关了。我的板子有问题时46和47脚之间只有60欧左右的阻值,这样47脚的高电平就影响到了46,使下载不能正常完成
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2016-5-30
在线时间
14 小时
 楼主| 发表于 2016-11-24 18:19:28 | 显示全部楼层
xuyan021 发表于 2016-11-23 11:11
直接用串口下载,擦了全部flash。

嗯,您说的是个好办法。但是我画的最小系统因为对PCB的大小有比较严格的限制,就没有加串口烧写的接口
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-3-1 16:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表