[技术问答] 新唐M480读取AT24C32D时出现的EEPROM内容被意外修改的问题

[复制链接]
139|2
手机看帖
扫描二维码
随时随地手机跟帖
李小荷啦啦|  楼主 | 2022-6-16 14:11 | 显示全部楼层 |阅读模式
#申请原创# 问题描述:使用M480驱动AT24C32D存储参数,使用IO口模拟IIC协议,每次上电会读取1000个字节的参数数据,在实验中发现,如果在读取这1000字节过程中突然断电,会有一定概率导致AT24C32D所存储的某些字节发生改变(24C32的WP引脚未使用,一直接地),所改变的字节地址具有随机性。如果在读取过程中不断电,等1000个字节全部读取完毕再掉电则没有任何问题。

分析:怀疑是断电时,24C32的电源不稳定导致的内部存储单元收到影响,用示波器捕捉了3.3供电电压跌落时的SCLK和SDA的波形,如下图(深蓝色是VCC,浅蓝色是SDA信号):
4851662aac67d03d50.png
发现在3.3V电压跌落到1.58V时单片机还在操作24C32,然后查看了M480和AT24C32D的数据手册,M480手册写明当VCC低于1.5V会复位,而AT24C32D最低工作电压1.7V,所以基本可以认为是由于在过低的供电电压情况下读取24C32而导致内部存储数据改变。之后加入了复位芯片,使VCC低于2.9V时复位单片机,重复实验后发现不再出现24C32数据莫名改变的问题。

提问:请问有小伙伴遇到过类似问题吗,以上分析结论是否可靠?

使用特权

评论回复
734774645| | 2022-6-17 10:59 | 显示全部楼层
突然断电是不可控的,单片机提供了欠压中断功能,就是处理这个的。

使用特权

评论回复
李小荷啦啦|  楼主 | 2022-6-18 10:01 | 显示全部楼层
734774645 发表于 2022-6-17 10:59
突然断电是不可控的,单片机提供了欠压中断功能,就是处理这个的。

M480确实也提供了Brown-out Reset功能,并且复位电压可选,设置为2.8V复位后也可以解决这个问题,但是24C32在这种情况下会丢失内部数据还没搞清楚,感觉不太靠谱,手册上没有明确写明低于1.7V时会发生内部数据被意外改写的情况。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则