stm32单片机烧不进去程序,急需解决办法!

[复制链接]
查看11 | 回复10 | 2021-1-27 05:11:36 | 显示全部楼层 |阅读模式
一、故障现象:
(1)烧写采用的是SWD5pin引脚的方式,烧写程序时jlink上的灯红绿交替闪烁,MDK报错(如图)。

(2)复位脚电压很低,只有0.9V左右,发现去掉复位脚可以正常烧录进去,程序也可以运行。
(3)去掉复位脚烧录进程序后,用jflash读整个芯片,发现数据是都写入flash了的。
(4)车间批量烧写的时候,有10%左右的概率
二、我自己的思考:
为防止异常,程序中加了这个复位重启的处理,我估计是程序异常了不断进入复位重启导致烧写不进去
voidHardFault_Handler(void)
{
NVIC_SystemReset();
}
三、现在着急寻求帮助怎么找到Bug,不像是程序能正常运行起来debug那就好找问题。

分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:11:36 | 显示全部楼层
烧写器供电,还是电路板供电?复位脚电压低,应该是被烧写器的拉低的,先排除是否烧写器故障,程序异常还能拉低复位脚?
回复

使用道具 举报

千问 | 2021-1-27 05:11:36 | 显示全部楼层
你这报错是提示STM32被开启写保护了,刷程序前提前清一下STM32的程序可能会好。
我在做批量烧写时一般会有离线下载器,SWD使用4pin就可以,如果你也是用离线下载器烧写时,注意检查一下烧写供电电压选择的是3.3V还是5V。
有的Jlink在给芯片烧写时,Jlink自带的VDD可能供电不行,Jlink里面有跳线帽,改一下就可以。也可以试试用其他电源来供电,Jlink不给板子供电。(注意共地)
回复

使用道具 举报

千问 | 2021-1-27 05:11:36 | 显示全部楼层
谢谢楼上的两位老哥帮助,SWD使用4pin确实是可以正常烧写的。但是90%正常的板子用5Pin方式的也是可以正常烧录的,我是要找到10%烧写报错的问题所在。
回复

使用道具 举报

千问 | 2021-1-27 05:11:36 | 显示全部楼层
程序跑不起来不好找问题呀,懂的高手帮忙指点下!
回复

使用道具 举报

千问 | 2021-1-27 05:11:36 | 显示全部楼层
既然程序没跑起来,那和程序有什么关系呢,或者你认为NVIC_SystemReset();有问题,那就把他去掉,如果只在工厂环境下出问题,而且是几率性的,个人认为是硬件方面的电源干扰或ESD干扰。
回复

使用道具 举报

千问 | 2021-1-27 05:11:36 | 显示全部楼层
@南山问道,单片机如果有问题会否导致这种情况?
回复

使用道具 举报

千问 | 2021-1-27 05:11:36 | 显示全部楼层
你说的单片机是指电路板吗,这不一定是电路板的问题,而是外部干扰,个人经验,用杜邦线连接不同模块的时候,需要共电源,如果不需要某个模块了,只把电源线拔了,地线或信号线还连着,就容易导致jlink问题。而且复位信号本身就比较敏感,用线把它引出来,更易受干扰,尤其线长的时候。
回复

使用道具 举报

千问 | 2021-1-27 05:11:36 | 显示全部楼层
这里说的单片机是指stm32
回复

使用道具 举报

千问 | 2021-1-27 05:11:36 | 显示全部楼层
引用5楼poetryTang的回复:既然程序没跑起来,那和程序有什么关系呢,或者你认为NVIC_SystemReset();有问题,那就把他去掉,如果只在工厂环境下出问题,而且是几率性的,个人认为是硬件方面的电源干扰或ESD干扰。
10%发生概率有以下几点可能:
1、这批次单片本身存在一定问题,我之前做触摸屏的时候也出现了类似问题,不过当时是USB接口烧写出现的情况,也是有9%左右的概率烧不进去,后面原厂分析本身是单片机存在USB的性能差异,换一片就好了,你可以试一下,对于烧入有问题的换一个单片机,以此排除其他问题;
2、如果更换单片机依然有问题就需要从你的电路板或者烧写器来分析了,看看时钟信号上是否有电容或者走线电容
3、烧写器也需要分析一下,当然这个概率和芯片发生问题的概率都相对较小
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行