【转】巧用CAT706做掉电检测
相信大家都会遇到这样的情况,当你正在敲一份文档或一段代码时,啪的一下停电啦,我擦……,我的代码……,我的图纸……,我刚写好的文章……。但是在嵌入式系统中也会遇到类似的情况,通常会导致嵌入式系统数据,程序丢失,不能工作,甚至损坏存储系统。而对于核心板的嵌入式系统来说,异常掉电情况下数据不丢失,稳定性是根本。本文基于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直流电压的掉电检测电路。
图3 典型应用电路及时序图
12V上电时输出的5V会对大电容充电,图中串联了一个电阻用来限流,当掉电时电容的电量会通过旁边的肖特吉二极管直接放电给后端负载使用。
由于12V掉电到5V/3.3V掉电完成之间有一段时差,所以可以提前检测12V的掉电情况使单片机进入Interrupt对掉电采取一系列应对措施,并且在5V/3.3V掉电完成前完成操作,如图中的时间T,并且此段时间T与图中红色圈的电容值大小有关,电容值越大时间T就越长(必要时可以考虑使用法拉电容);且检测掉电的信号越靠近总电源的前端就越好。
为了增大掉电后的维持时间T,不仅可以增大储能电容值来达到目的,也可以将掉电检测信号往前端挪动,例如将掉电检测移至最前端的220V市电或前端高压,市电掉电时到12V掉电中间也有一段时间,这样就可以间接增加掉电后的维持时间T。
如图4所示是检测前端电压的掉电检测电路。提前处理掉电信号以此来增加掉电后的电压维持时间。
图4 前端掉电检测电路
以图3所示的法拉电容放置位置可知随着掉电后的电压维持,电容上的电压会逐渐下降可能会影响到后端系统的工作。为此可以将大电容的充放电电路移至前端的高电压部分,也可以将降压电路分为两节或三节降压连接,如此只需将大电容的放置位置相对往前端挪一节即可保证在掉电维持的那段时间内主系统的工作电压维持稳定。如图4所示对大电容的摆放位置改动。
四、实测分析
针对上一节关于CAT706原理的推算和实际效果波形的推算我们做了如下的硬件电路搭建,硬件电路针对图3搭建。如图5所示硬件使用洞洞板搭建,用来测试实际的输入供电电压波形,输出电压波形以及PFO和RST引脚的波形。
图5 实物图
如图6所示波形1是输入的12V电压波形、波形2是输出的5V电压波形、波形3是复位引脚的电压波形、波形4是PFO引脚的电压波形。图中测试时输出以10mA的负载对其恒流放电。
图6 测试波形图
当输入12V上升时,DCDC电源会紧接着开始输出5V,同时随之12V的上升其分压值若大于PFI的输入阈值时PFO会跟着立即输出高电平,复位引脚在检测到5V电压正常一段时间后也会时复位系统,系统启动工作。
当输入12V意外断电下降时其在PFI引脚上的分压值低于阈值时PFO会立即输出低电平,此PFO的低电平会中断系统主控告知系统意外断电应立即对存储数据进行处理,防止数据丢失。图中的测试波形是以10mA的恒流负载模拟测试效果,从图中可以看出从检测到意外断电到系统复位停止工作中间有244ms的处理时间。这个时间和DCDC输出端的电容有很大的关系,电容值越大其数据处理的时间越长,图中是以2200μF的电容值大小、负载10mA恒流情况下测得是时间。实际处理时检测到掉电主控应立即断掉液晶屏等不需要的耗电外设只保持主控部分的供电即可。
【来源】
【转】巧用CAT706做掉电检测的更多相关文章
- STM32 掉电检测程序
当VDD下降到PVD阀值以下或当VDD上升到PVD阀值之上时,根据外部中断第16线的上升/下降边沿触发设置,就会产生PVD中断 void PVD_IRQHandler(void) { led_ctrl ...
- STC单片机掉电断电失电瞬间EEPROM数据保存处理办法(转)
由于客户在请人设计开发一设备,但是设备用户处总停电,造成设备及其周边耗材损耗严重,因此请我司在现有STC为主要芯片的基础上做掉电瞬间EEPROM里的20个参数保存,上电后通过读取EEPROM中的参数回 ...
- Linux掉电处理
在嵌入式设备中,掉电处理一直是一项比较麻烦的工作,在具有Linux系统的设备中,系统的种种数据的处理更是增加掉电处理的难度.现在做以下几点总结,再遇到类似问题可以做个参考. 1,系统启动的处理 在系统 ...
- STM32的FSMC总线驱动ili9341,掉电重启无法正常显示的问题
问题描述 通过STM32的FSMC总线驱动ili9341,程序调试和刚下载的时候,显示完全正常.可是就在我掉电关机,重新启动的时候就完全跑飞了.这令我非常疑惑.以下是我的FSMC总线配置程序, sta ...
- android recovery升级过程中掉电处理
一般在升级过程,都会提示用户,请勿断电,不管是android的STB,TV还是PHONE,或者是其他的终端设备,升级过程,基本上都可以看到“正在升级,请勿断电”,然后有个进度条,显示升级的进度. 但是 ...
- 由异常掉电问题---谈xfs文件系统
由异常掉电问题---谈xfs文件系统 本文皆是作者自己的学习总结或感悟(linux环境),如有不对,欢迎提出一起探讨!! 目录结构 一.相关知识 二.问题提出 三.处理方法 四.最终结果 一.相关知识 ...
- 掉电后osdmap丢失无法启动osd的解决方案
前言 本篇讲述的是一个比较极端的故障的恢复场景,在整个集群全部服务器突然掉电的时候,osd里面的osdmap可能会出现没刷到磁盘上的情况,这个时候osdmap的最新版本为空或者为没有这个文件 还有一种 ...
- USB设备(移动硬盘、鼠标)掉电掉驱动的两种解决方案
症状: 当你发现"移动硬盘图标"经常无故消失,又自己出现时. 你可以把这个现象称之为"掉电" or "掉驱动". 遇到这种情况,相当不爽. ...
- android系统掉电保护
/************************************************************************ * android系统掉电保护 * 说明: * An ...
随机推荐
- 1.4《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——编辑命令
在编辑模式中,命令行包括几个重复之前命令的功能.这些以及其他很多命令功能时常设计键盘上的特殊键,所以给出Table 1作为参考,给出了许多键在典型的Macintosh键盘上的标记符号.若你的键盘不太一 ...
- sql语句之表间字段值复制遇到的一些问题--基于mysql
好久没来园子了,转眼2017已经到3月份了,前段时间一直忙没时间写博客(其实是自己懒),感觉内心好惭愧.昨天临下班前,技术老大突然对我说要改下表结构,问我能不能实现将一个表的字段值复制到另外一个表的某 ...
- ASP.NET Core 3.0 实战:构建多版本 API 接口
第一次在博客写分享,请多多捧场,如有歧义请多多包含! 因为业务需求发展需要,所以API接口的变更升级是必不可少的事情,而原有的接口是不可能马上停止使用的.例如:Login接口为例,1.0版本之返回用户 ...
- CGAL学习:数据类型
CGAL 4.13 - Number Types 1 Introduction(介绍:略) 涉及到的数大致有3种:一是整数,二是有理数,三是浮点数.有理数可以用2个整数表示.精度上可分为任意精度和固定 ...
- controlfile 备份到trace文件例子
主要是为了学习oracle的克隆.参考: http://www.dba-oracle.com/oracle_tips_db_copy.htm 执行: SQL>alter database bac ...
- 变量内存空间的释放---c语言
堆栈内存释放: 栈的内存是由编译器自动分配.释放,出了作用域就释放. 堆的内存由程序员分配.释放,他的作用域是整个程序,如果程序没有释放,程序结束时会自动释放.
- OpenCV实战:人脸关键点检测(FaceMark)
Summary:利用OpenCV中的LBF算法进行人脸关键点检测(Facial Landmark Detection) Author: Amusi Date: 2018-03-20 ...
- SSISDB4:当前正在运行的Package及其Executable
SSISDB 系列随笔汇总: SSISDB1:使用SSISDB管理Package SSISDB2:SSIS工程的操作实例 SSISDB3:Package的执行实例 SSISDB4:当前正在运行的Pac ...
- http-cache浏览器缓存
摘至知乎 首先得明确 http 缓存的好处 减少了冗余的数据传输,减少网费 减少服务器端的压力 Web 缓存能够减少延迟与网络阻塞,进而减少显示某个资源所用的时间 加快客户端加载网页的速度 常见 ht ...
- MIT 6.824 lab1:mapreduce
这是 MIT 6.824 课程 lab1 的学习总结,记录我在学习过程中的收获和踩的坑. 我的实验环境是 windows 10,所以对lab的code 做了一些环境上的修改,如果你仅仅对code 感兴 ...