在主板调试过程中,发现一个严重问题:关机后快速启机,主板正常开启,但风扇不转。如果使用过程中快速开关机,但使用者没有注意到风扇其实没有运行,很容易导致CPU持续处于高温状态,损坏CPU及其周边元器件。
- (1) 故障复现
拿到故障板后,上电正常的情况下下电,然后迅速上电,发现风扇没有响应,故障得以成功复现,重复三次动作,故障复现两次,看来故障复现率还算比较高。
- (2) 问题初步分析
最开始怀疑的是风扇启动时刻电流需求过大导致触发过流保护,因此进行了如下测试。
- (3) 静态电压测试
在复现故障情况下进行相关电压的测量。首先,测量风扇的12V供电,发现电压已经接近0V;然后,往前一级排查:风扇的12V由efuse通过12VBUS母线提供,起到热插拔保护和电流限制等作用。测量efuse的输入12VBUS,电压正常,继续测量efuse的EN使能引脚,电压也正常。如果风扇触发过流保护,那efuse的FLTB引脚也会被拉低,表示有过流故障被发生,但此时测量的FLTB引脚是高电平,没有错误报警,因此,排除了过流保护被触发。
图1.efuse参考线路
- (4) 动态波形测试
目前遇到的问题是efuse在上电重启过程中没有输出,但其静态的EN和输入都是有的(其他引脚电压也正常)。因此,需要进一步进行波形的抓取,观察故障产生时刻输入输出发生了什么动作。
图2.故障状态12V VIN和EN波形
上图2是故障复现状态下12V VIN和EN的上电波形。开始并没有发现什么异常,但进一步测试,逐步增加上下电的时间间隔,就会找到一个临界时间,间隔大于这个时间情况下风扇就可以正常运转,这个间隔大概1.5s(如下图3)。
图3.临界正常状态12V VIN和EN波形
- (5) 问题分析
那么问题来了,为什么时间间隔拉长后就可以正常启电了?按理说efuse的启动只要EN和12V VIN正常,就会有输出,但我们前面测到故障状态下两者电压明明都是正常的。所以推断应该是下电过程中有信号不满足efuse工作要求,导致efuse锁死了,这时就算再把输入信号恢复正常也没法解开锁死状态。
那到底是VIN还是EN,或是其他信号呢?首先分析VIN,查阅手册,它的UVLO电压门限为4.15V,而实际我们测到,故障复现时刻的VIN有6.88V,远大于UVLO门限电压,因此可以推断VIN的跌落不会导致efuse锁死。然后,看下EN:这款5022c有两个EN信号,一个是ENABLE一个是LOADEN,它们门限分别是1.3V和2.3V。而这里实际电路中使用了365K和100K对12V分压再到EN和LOADEN,当VIN为12V时,EN和LOADEN均为2.58V,这个值十分接近LOADEN的门限电压,因此,EN或者LOAD EN电压的跌落会首先导致的efuse关断,但这又有什么问题呢?它们电压跌落使得efuse关断之后电压还会随着主板开机二再次上升呀?再仔细阅读芯片手册,发现如下描述:
这里的LOADEN只能起到关断efuse的作用,而无法起到开启efuse的作用。到这里,似乎感觉有些方向了,这个LOADEN一旦失效,是无法通过它再次开启efuse的!所以我们尝试将LOADEN这个信号的分压加大,让它晚一点跌落到门限以下,极限情况是去掉其下分压电阻。结果效果很不错,故障不再复现了!同时注意到芯片本身也有不使用LOADEN这一功能的处理方法:将TMEN引脚直接接地,经验证,该方式有效解决此问题。
- (6) 问题解决
但问题就这样解决了么?好像还缺点什么。毕竟更改LOADEN分压电阻阻值或者禁能LOADEN只能是让该信号电压跌落变慢,那如果使用者开关机速度非常快,抵消了分压阻值带来的时间改善怎么办?所以还得找一个根本的解决办法。这时候就想到了12V VIN,其实造成这一问题的根本原因还是12V下电过于缓慢,导致使用者两次开关机操作间隔远小于它的掉电速度,efuse再关机后1s乃至更久一段时间都没有关闭、复位,造成了上述问题,加入12V在关机后10ms内迅速跌落到0V,所有器件均复位,这时候就不会存在所谓的“快”、“慢”上下电了。所以最终的问题解决落在了如何让12V在关机后迅速掉电!
在研究过增加放电电路和延长主板自身12V负载下电延迟时间等方法之后,最终选择了后者,一来这样可以避免增加额外电路,节约成本,二来是可以通过修改CPLD程序直接达到目的,简单快捷,且易于调试。
- (7) 结果对比
下面是修改CPLD程序前后12VD的掉电波形。可以看到,在修改CPLD之前,12V下电之后掉电缓慢,需要1.5s以上时间才能跌落到3V以下,而修改CPLD之后只需要50ms便可以跌落到3V以下。
图4.修改CPLD前12V VIN和EN波形
图5.修改CPLD后12V VIN和EN波形
通过上述修改,就从根本上解决了主板快速开关机(上下电)情况下风扇概率性停转的问题。总结今后需要注意的点:
- (1) efuse的LOADEN信号可能将芯片锁死,因为它只有“禁能”功能,而没有“使能功能”。
- (2) 主板12V下电缓慢会带来一系列问题,比如芯片锁死
- (3) 通过延缓负载停止工作的时间可以有效解决12V下电缓慢问题