中级会员
 
- 积分
- 466
- 金钱
- 466
- 注册时间
- 2018-6-8
- 在线时间
- 114 小时
|
最近做项目需要采集一些数据并且做到掉电保存,但是读写频率太高放弃了使用EEPROM和FLASH,改用RTC历程内的BKP寄存器存数据。
参考原子哥的程序已经实现了EEPROM的读写,并且在查找资料后实现了EEPROM全地址轮流写入的功能,最后项目中没有用到。
参考资料:https://blog.csdn.net/jxgxlm2008/article/details/51880799
手头只有一块普中的板子,所以没有使用战舰版进行测试,芯片是ZET6理论上和战舰版通用,只有LED和按键引脚不一样需要修改。
程序很简单,只有两个函数,读和写。
具体实现思路:1.将EEPROM内256个字节地址拆分成16个长度为16字节的区域,由于原子哥的程序里面检查EEPROM是否损坏的程序使用了255地址,所以我只使用了这16个区域的前15个,最后一个区域只进行255地址的读写。
2.每个区域的首地址写入固定的值(如0xAA),作为标志位。首地址之后的14个地址存数据,最后一个地址做校验用。
3.每次对0x10的整数倍地址先进行读取,当读取到0xAA时,表示该地址对应的区域内数据有效,读出所有数据。
4.当遍历所有地址都没有读取到0xAA,则判定EEPROM内数据为空,在0x00地址写入0xAA,并在0x01 - 0x10写入数组内数据。
|
|