介绍一种能够检测到异常掉电,防止数据丢失的方法

相信大家都会遇到这样的情况,当你正在敲一份文档或一段代码时,啪的一下停电啦,我擦……,我的代码……,我的图纸……,我刚写好的文章……。但是在嵌入式系统中也会遇到类似的情况,单片机在正常工作时,因某种原因造成突然掉电,将会丢失数据存储器(RAM)里的数据,程序丢失,不能工作,甚至损坏存储系统。而对于核心板的嵌入式系统来说,异常掉电情况下数据不丢失,稳定性是根本。本文基于CAT706介绍一种能够检测到异常掉电,并利用电容中存储的少量电量保存数据、防止存储器损坏、丢失数据的方法。

 
一、概述
 
首先引用一篇微信文章“老板说:你去跳槽,我去跳楼!一场由SD卡引发的灾难”
 
去年上半年,我们公司承接了某大型广告公司的电梯广告显示屏的项目,该产品使用了飞思卡尔的IMX6系列芯片作为主控CPU,具备媒体人机触摸互动、媒体投放、远程升级、录像监控等功能。其中很重要的一项功能就是监控和保存功能,因客户的报价较低,我们理所当然的选择了SD卡作为录像数据的保存介质。
 
没想到,灾难半年后就降临了,半年前发货的10K机器,每个月都有10%的损坏率,损坏的机器90%都是SD卡损坏了!客户不但要求我们赔偿SD卡的损失,延长质保期,而且威胁一个月内不解决将终止合作,客户是老板的唯一大客户,丢失这个客户我们离解散就不远。老板甚至放下狠话:一个月内不解决,你们跳槽,我跳楼。
 
经过仔细检查确定SD卡损坏的原因是设备上下电导致的。
 
于是我们采用了如下的方案。其中方案的核心是掉电检测电路和超级电容继续供电电路。掉电检测电路是用运放搭出来的一个比较复杂的比较电路,由于复杂这里就不上图了。图1是超级电容的充放电电路,增加该电路可以使掉电后继续维持2秒钟的时间,使CPU完成掉电后的保护处理工作。
介绍一种能够检测到异常掉电,防止数据丢失的方法
                                                                           图1 超级电容充放电电路
 
上述案例结局办法是用运放搭建掉电检测电路比较复杂,容易出现问题,这里推荐大家一个高集成度的掉电检测电路。
 
二、功能简介:
 
如图2所示是CAT706芯片内部框图。CAT706内部集成了多种功能,功能强大,使用简便,此次只重点讲解其内部的掉电检测功能。
介绍一种能够检测到异常掉电,防止数据丢失的方法
                                                                            图2 内部功能框图
 
由于内部框图很简单,可以很容易的分析出有以下四种情况能导致单片机复位或中断:
 
VCC供电不符合要求时可导致RESET复位输出;
 
MR引脚可以手动使RESET复位输出;
 
看门狗WDI没及时喂狗可导致WDO复位输出;
 
电源掉电检测输入PFI可导致PFO中断输出。
 
针对以上四个功能对嵌入式系统作用如下:
 
可保证VCC供电在稳定时单片机工作,不稳定时复位输出保证系统稳定运行;
 
可人为手动控制单片机复位运行;
 
看门狗实时监测系统,防止系统跑崩溃;
 
及时监测供电系统是否掉电从而让系统迅速处理数据。
 
本篇文章主要就是针对其第四点检测意外掉电的保护处理方案。
 
三、典型应用
 
PFI相当于是一个电压比较器的正输入端,如果PFI电压高于1.25V那么PFO就会输出高电平,如果PFI电压低于1.25V哪呢PFO就会输出低电平。如此便可以通过PFI作为输入将前端的高电压分压后接入,从而可以提前检测到前端的掉电情况。
 
如图3所示是CAT706典型应用电路及时序图。原理图相对比较简单容易理解,并且画出了在掉电和上电后各部分的理论波形图。
 
一般情况下系统的供电都是由前端市电隔离降压到相对偏高的直流电压(如12V),再降压到系统所需要工作的电压(如5V/3.3V)。如图3所示是针对于检测前端的12V直流电压的掉电检测电路。
介绍一种能够检测到异常掉电,防止数据丢失的方法