tyron's page 不断探索是一件好事,学无止境!

一个电容导致的看门狗不断复位

2019-12-04
David

最近,做了一批板子,不像以前的板子一样,工作不正常。

花了将近5个工作日,终于把问题原因找到了:就是这个RC电路造成的。

如下图所示的电容滤波电路,在应用中很常见。

RC circuit

如果电容值选择不合适,会导致问题比较麻烦,特别是系统中还使用了看门狗电路。

问题描述

下图是使用的系统构成框图。

RC circuit

有三部分:MCU电路,看门狗,模块。

MCU的复位由硬件看门狗提供。

看门狗的喂狗由MCU来完成。

模块的电源由MCU的一个IO口控制,缺省不上电。电路中电阻R0用于给电容提供放电回路。另外,模块的供电电源电路是厂家推荐电路。

基本工作流程: MCU工作后,初始化IO口,然后根据需要设置IO口,打开MOS管,给模块供电。同时,喂狗。

使用中,发现部分板子能够正常工作,大部分板子不能正常工作,用示波器检查看门狗的输出,发现:周期性的输出复位信号,但是该周期又不是看门狗芯片手册中的周期信号,其周期比不喂狗的周期短很多。

原因分析

上电后,MCU工作。当打开MOS管给模块供电时,瞬时先对电容充电,充满到模块的正常工作的阈值后,模块可以工作。

但是,这个瞬时充电会导致3V3的供电电压有个波动。

由于看门狗的检测电压阈值是2.93V,当这个波动使得3V3跌落至2.93V以下时,看门狗就会输出复位信号,复位MCU。

然后,MCU有重复上面的过程,打开MOS管供电。。。

。。。

看门狗周期输出复位信号。

模块被周期上电。

。。。

解决办法

减小电容的值(4.7uF -> 0.1uF),从而减少波动,即减小电源电压跌落的幅度。

使得电源跌落幅度维持在看门狗检测的阈值(2.93V)以上,这样,看门狗就不会输出复位,从而保证MCU正常工作了。

深层原因

以前用同样大小的电容(4.7uF)从来没有发现问题,为什么这批板子就出问题呢?

回头再仔细考虑这个问题,发现并不简单,还有更深层的原因:采购。

这批板子采用的是新购买的电容,从淘宝上购买的,当时也没有要求精度。

测量后发现其值大概是5.9uF左右,与设计的4.7uF(原来是用的大厂的料)差距还是不小的。而原来采用的电容值还是比较靠谱的。

同时,也说明了一个问题:原来设计的4.7uF使系统工作在一个临界状态。

经验教训

以下两点需要注意:

  1. 采购物料时,一定要从大厂采购,同时标明精度,如%1。

  2. 设计系统时,一定要留有余量,不要让系统工作在一个临界状态。虽然这种临界状态不好获知。就像电影《疯狂的石头》中,那个来自国外的“高手”在中国购买的登山绳长度就没有考虑余量,所以被坑了。


Comments

Content