stm8s eeprom数据丢失的问题
最近在调试stm8s eeprom的时候发现个奇怪的现象,我存到eeprom的内容在断电上电之后就没了。
之后我做了实验,可以确定在断电之前数据肯定是存进去了。那么数据丢了就肯定和下次上电有关了。但是并不是每一次都会丢,我就把电源快速插拔,这样几次操作之后可以保证eeprom是丢失了。
看我的代码在刚上电初始化部分就涉及到有写eeprom的操作。那么我再快速开关电的时候就有可能在写eeprom但没写完我电就断开了。
同时还发现了一个规律,就是比如我写的是0x4004地址的数据,那么丢失的时候是0x4004-0x4007共四个byte的数据都丢了。所以又可以得出一个结论,就是eeprom我们软件是可以按照byte写的,但是在内部应该是按照WORD(4bytes)来操作的。这样操作4个其中的一个byte,假如断电了没写完成,就有可能同时丢失这四个byte的数据。所以如果我们eeprom空间够用,尽量把你的数据都按照字对齐存放进去。避免受到影响。
根据这个思路解决我的问题也算是消除了。