用STM32F101RC的PVD(阀值2.9V)掉电检测功能来保存一些数据进24C16中!
现象是这样的:
当我不停的给电路上下电,大部分时间存入数据是没有问题的,但是偶尔会出现存入数据全为0的现象,一开始我分析是电源电压跌落太快,导致EEPROM擦写时间不够引起的错误,我用示波器观察电压跌落情况,发现电压从(2.9--2.0V)大概有25MS的时间,时间足够擦写EEPROM了!排除时间问题!然后自然而然就想到数据本身的问题,我又做了如下实验
本来我的数据都是变量形式的例如:
cunchu[0]=LeiJiZhongLiang[DangQianPeiFang];//àÛ¼ÆÖØá¿
Write_24c16(0xA4,0x0C,0,cunchu);
delay(10000);、//3MS
后来我改成定值方式存储:
cunchu[0]=0x01;//àÛ¼ÆÖØá¿
Write_24c16(0xA4,0x0C,0,cunchu);
delay(10000);//3ms
发现用定值存储数据不会发生错误!所以我怀疑是在进入PVD中断里面的时候,由于电压跌落导致SRAM中的数据都清成0,除了加大电容还有什么办法没?SRAM保持电压不能低于多少?
你这个最好是用备份寄存器,低压操作flash很不可靠,
备份寄存器就是专门干这个的.
问题的关键不是SRAM,而是在于MCU中相关逻辑控制电路。随着供电电压的降低,在SRAM内容归零前就会出现数据的不可靠,所以需要其它电路的介入,其结果就是早在SRAM内容归零前,MCU就早已无法正常工作了,所以知道归零电压也无意义。一切以器件手册为准,手册所载额定工作电压的上下门限均决不可越过。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang