死机-如何从硬件角度分析解决产品死机问题
经常有客户碰到产品死机问题,下面从硬件角度讲解处理上电死机这类问题的解决思路。
一、BOOT状态
若晶振原因排除,可以查看一下客户boot脚电平状态。若想要正常运行用户代码,需要保证BOOT0为低电平、BOOT1为低电平才行。要严格保证电平状态。(评估板接法BOOT0、BOOT1接10K到地)
二、晶振
如BOOT脚状态正确,可以检查硬件是否外接晶振?
若外接了晶振,接了多大的晶振?原因是因为EVT代码默认通过8M晶振PLL倍频到72M或者96M作为主频,如果外接16M或者24M晶振同样的软件配置,主频已经超出了芯
片能够承受的范围。若外接晶振合理,要检查晶振是否正常起震。
若没有外接晶振,代码中是否启用了外部晶振使能?如果代码使能了外部晶振 ,而硬件没有外接晶振,晶振引脚悬空。可能由于晶振脚悬空干扰,导致程序卡死。
解决方法有两点:
1、代码使用内部晶振(推荐);
2、晶振引脚接地,给固件电平(不推荐,临时硬件解决方案);
三、复位
若以上排除,接下来可以排查硬件复位脚Nrst脚状态是否常高,如果处于常低会一直处于硬件复位状态;
另外可以排查客户下载代码时(ISP下载或者SWD上位机WCH-LinkUtility下载)是否误勾选了硬件看门狗选项。如果勾选了此选项,会硬件开启看门狗,若代码没有喂狗会一直处于看门狗复位状态。如下图:
四、电源
若晶振、复位、BOOT问题都排除,可以查看电源供电电压是否合理。如果自己产品电路不好排查,可以把芯片放置到我司评估板上测试一下。
五、芯片损坏
若以上问题都排除,可以排除下芯片是否损坏,最简单的方法就是更换芯片测试,或者跑一个没有问题的EVT中的简单GPIO代码看看是否运行。