
本帖最后由 西施猫 于 2017-10-25 14:39 编辑 最近公司产品遇到个问题,客户使用几个月后产品的RTC时间会变成初始化的时间2000年1月1日0分0秒。主芯片STM32F407VGT6,STM32F429IGT6,STM32F407ZET6都遇到过,寄回来分析了很久都没法重现。RTC时间同步后正常。电池用的是松下原装进口CR2032,排除焊接问题(照过X-RAY没有虚焊)。静电实验、浪涌实验都做过,没有出现变0情况。请问有没有人遇到过类似的问题?根本原因是什么? 图片一是用IAR读BKP寄存器的值,20个寄存器的值都变0了。上电会检查RTC_BKP_DR0的值,如果标志位是写过的,则读取正常时间;如果标志位变0 ,则软件读出来2000年1月1日0分0秒。因此变0的原因是RTC_BKP_DR0寄存器值为0,只有一种情况RTC_BKP_DR0变0,那就是电池曾经掉过电。但回来的电池电压电量测试都正常。电池掉电的根本原因未找到。 图片二是RTC电路原理图。 |
RTCçµè·¯å¾
读BKPå¯åå¨å¼ä¸º0
几个月电池没电了,然后客户或者售后自己换了一个新的电池没告诉你,所以到你手上就是这个情况。会不会是这样呢?
我觉得最好设计中 加一个电池充电芯片,用可充电纽扣电池,这样会不会能解决问题?
A backup domain reset is generated when one of the following events occurs:
1. Software reset triggered by setting the BDRST bit in the RCC Backup domain control
register (RCC_BDCR).
2. VDD or VBAT power on, if both supplies have previously been powered off.
电池没有动过痕迹。
电池没有动过的痕迹,上表面有喷三防漆。
电池电压测量都有3.0V,RTC功耗很低,我们测过不到10微安,按照计算我们的电池可以用10年。
复位软件查过,没有设置相关操作。
第二条电源掉电到是有可能,ST手册里没有注明供电不稳多长时间会导致BKP变0,而且用示波器捕捉过电池电压情况,未发现突然供电不足情况。工业环境到是有可能造成电源不稳,但我们未能重现。
建议你在备份电池上并联一个1uF的电容,以及双向齐纳二极管做保护,手贱有可能是人体静电或者外部强电磁场引起。
如何避免呢?千分之一的不良率都不允许,加密对RTC要求非常高。