如题,其中MCU是STC单片机。EEPROM用的是意法半导体ST的 m24c02,和at24c02有点不同,代码改了一点可以读写,用的模拟IIC。
内容安排区间,比如:
0-1是标志字节,2-3是配置参数,N-M是存最新内容的区间
逻辑是:
1、开机读出参数,标志位的两个字节如果不是指定值就认为是出厂第一次运行,就把flash的初始值写进去。。。指定位字节就变成了指定内容
2、电压低的时候保存最新N-M区间的内容,用的是超级电容,通过串口测试,每次断电保存都保存好了,然后还可以串口发很多数据(故意死循环的),可以持续大概300-500ms甚至更长
3、开机读出如果是指定标志,就直接读取2-3的内容作为设置值
现在是,偶尔会出现参数丢失,恢复了默认值(被认为是出厂了,重新写了覆盖了),其实就应该是开机检验的时候,指定位置的字节对不上,重新写入了默认值
但是大概率是不会丢失的,不知道怎么办避免这个问题呢?或者问题出现在哪里?
不确定是不是某些原因让整个片子擦除了?目前硬件是带写保护引脚控制的,程序也用到了写保护控制IO