eeprom_in_flash
1.0.0
本代碼實現了簡易的flash模擬eeprom功能,只需實現底層的flash操作接口,就可以在頂層調用eeprom接口使用。適合存儲eeprom數據量較少的項目使用
將提供給eeprom使用的flash空間分為兩個分區,每個分區可包含多個擦除頁,擦除時統一擦除。當前使用哪一個分區由開始的USED_MARK決定,實際數據和eeprom虛擬地址共同組成一個編程單元,寫入時新數據依次往後寫入,讀取時以最後一個值為有效值。當一個分區寫滿時會復制數據到另一個分區。
//参数:eeprom初始化值,NULL则无初始值
int EEPROM_Init ( void * default_data );
int EEPROM_Format ( void * default_data );
//参数Address:eeprom的地址,一个地址保存16bit数据,范围0 - (EEPROM_NUM_MAX-1)
//参数length:读写buf的长度,为16bit数据的个数
uint16_t EEPROM_Read ( uint16_t Address );
int EEPROM_Write ( uint16_t Address , uint16_t Data );
int EEPROM_Read_Buf ( uint16_t Address , uint16_t * buf , uint16_t length );
int EEPROM_Write_Buf ( uint16_t Address , uint16_t * buf , uint16_t length );
//参数addr:eeprom存储空间的地址,单位byte,与上面eeprom的参数呈2倍关系,地址空间不可重复,必须2字节对齐,范围0 - (EEPROM_NUM_MAX-1)*2
//参数length:读写buf的长度,单位字节长度,必须2字节对齐
int Config_Read_Buf ( uint16_t addr , void * buf , uint16_t length );
int Config_Write_Buf ( uint16_t addr , void * buf , uint16_t length );