#申请原创# 问题描述:使用M480驱动AT24C32D存储参数,使用IO口模拟IIC协议,每次上电会读取1000个字节的参数数据,在实验中发现,如果在读取这1000字节过程中突然断电,会有一定概率导致AT24C32D所存储的某些字节发生改变(24C32的WP引脚未使用,一直接地),所改变的字节地址具有随机性。如果在读取过程中不断电,等1000个字节全部读取完毕再掉电则没有任何问题。
分析:怀疑是断电时,24C32的电源不稳定导致的内部存储单元收到影响,用示波器捕捉了3.3供电电压跌落时的SCLK和SDA的波形,如下图(深蓝色是VCC,浅蓝色是SDA信号):
发现在3.3V电压跌落到1.58V时单片机还在操作24C32,然后查看了M480和AT24C32D的数据手册,M480手册写明当VCC低于1.5V会复位,而AT24C32D最低工作电压1.7V,所以基本可以认为是由于在过低的供电电压情况下读取24C32而导致内部存储数据改变。之后加入了复位芯片,使VCC低于2.9V时复位单片机,重复实验后发现不再出现24C32数据莫名改变的问题。
提问:请问有小伙伴遇到过类似问题吗,以上分析结论是否可靠?
|