本程序仅供参考、交流、学习使用!!!
1、功能说明
FLASH模拟EEPROM。存储的数据长度为16位,如果数据类型超过16位请自行分段存储。
一个数据在FLASH内部格式为高16位为虚拟地址,低16位为用户数据。
读取时只需要寻找虚拟地址,虚拟地址后面的数据即用户数据。
________________________________________________________________
| 31 | 30 | 29 | ... | 17 | 16 | 15 | 14 | ... | 02 | 01 | 00 |
________________________________________________________________
| 虚拟地址 | 用户数据 |
本例程只是演示简单读写操作,可根据自己需求更改,增加判读数据不一致时再写flash,减少写次数延长flash寿命。
本例程使用的为N32G457REL7最大flash为512KB,采用最后的8K空间进行演示。根据自己数据量适当增减(至少2个page)。
8K空间分为两个数据块,交替使用。数据块0先存,存满之后再存数据块1,存数据块1之前先把数据块0最新的数据转存到存储块1,
再把数据块0整个擦除。等数据块1存满之后,同样的方法转移大数据块0。
2、使用方法:
变量 NB_OF_VAR 为规划的变量总数,根据项目需求进行合理更改
数组VirtAddVarTab里面存放的数据为虚拟地址。虚拟地址在初始化EEPROM的时候进行初始化。
初始化和每次进行写操作时需要先对FLASH进行解锁,操作完成之后再上锁。
初始化、读、写调用n32_eeprom.h内部的3个函数即可。
|