历史记录紊乱与设置信息断电乱码问题的排查

项目遇到历史记录只能保存一条且信息错误的问题,以及电源断电后设置信息丢失。排查了电源稳定性、代码调用、flash存储地址冲突和环境干扰等因素,最终发现是3.3V电源电压低于AT24C512EEPROM的最低4.5V需求导致。更换符合电压要求的EEPROM后,问题解决。
摘要由CSDN通过智能技术生成

问题现象:

1、项目上有一个历史记录只能记录第一条信息,且该记录信息有误。有时会恢复255条历史记录信息(实际5条)。

2、设置信息在断电后,发生丢失或信息错误等现象。

确定思路:

上网查资料显示:数据一般存在STM32F103VET6的 flash中,所以就有以下排查思路:

        1、代码调用的问题。

        2、电源问题。如果在程序在向flash中写入数据时,电源有电压不稳定,生成尖峰脉冲,会导致数据丢失,或者数据错误。

        3、flash中地址挤兑问题。如果设置信息保存的数据地址和历史记录的数据地址发生重合,那么会在双方调取自己数据时发生数据错误的问题。

        4、环境干扰问题。

因为这个问题出现在家里,电磁干扰并不严重,所以这个选项可能性实在太低。

排查过程:

        1、电源问题。

因为大佬都是周末才能过来开代码,所以先干自己能干的。给项目更换了更好的电源模块。增加了电源模块到主板的距离,避免电源模块对主板的电磁干扰。测试,问题现象依然存在。

        2、代码调用的问题。

大佬来了,排查一个下午。查实一下问题:

        ⑴ 增加每次读命令后的等待时间,问题依然存在。

        ⑵ 将flash中的信息直接显示在LCD屏上,证实:flash可以写入一行代数据,移动起始地址,还是可以写入一行数据(但仅限一行)。flash并没有物理损坏。

        ⑶ flash中地址挤兑问题        通过代码中的实现可以看清楚是将设置信息和历史记录放在同一个扇区。但是两者数据地址并不冲突。为了确保一定不出问题,将两者分别放入两个扇区,结果依然问题依旧。

        之后还做了很多代码上的试验,但是问题都没有得到解决。

        放下所有,重新审视这个问题。静待花开。

        重新观察电路板。发现AT24C512这个EEPROM好像乖乖的。查资料得知:ATMEL228 24C512 PU27  A这个芯片的最低电源电压时4.5V,而我们给的电源电压时3.3V。答案呼之欲出。

        周一来了,换上新的24C512 ,上电测试,问题解决。

        真的是山重水复疑无路,柳暗花明又一村。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值