#ifndef _S6J3360_EE_MANAGE_H_ #define _S6J3360_EE_MANAGE_H_ #pragma pack(1) /* 必须保留 */ typedef unsigned char ee_uint8_t; typedef unsigned short ee_uint16_t; typedef unsigned int ee_uint32_t; #define READ_FAIL 0x0000 #define READING 0x0001 #define READ_COMPLETE 0x0002 #define WRITE_FAIL 0x0000 #define WRITING 0x0001 #define WRITE_COMPLETE 0x0002 typedef enum { distance_1m = 1, distance_10m = 10, distance_100m = 100, distance_1000m = 1000, }StorageDistance_t; typedef enum { AT24C04 = 4, AT24C16 = 16, }DeviceNo_t; typedef struct { ee_uint32_t Odo; ee_uint32_t Trip; ee_uint32_t Trip1; ee_uint8_t IsTripClear; ee_uint8_t IsTrip1Clear; }Mileage_t; extern ee_uint16_t OdoValidAddress; /* 读取库版本号 */ extern ee_uint8_t* eeprom_getVersion(void); /*------------------------------------------------------------------------- * Function Name : eeprom_1ms_timeCount * Description : 中断中调用 必须中断时间 >= 1ms,这个时间影响写的整体速度 * Input : * Output : * Return : * onther : --------------------------------------------------------------------------*/ extern void eeprom_1ms_timeCount(void); /*------------------------------------------------------------------------- * Function Name : eeprom_SetParameter * Description : * Input : device_No:芯片型号 AT24C04 or AT24C16 StorageDistance :相邻两次存储数据间隔,两次存储数据之差必须大于这个间隔 distance_1m = 0, distance_10m = 10, distance_100m = 100, distance_1000m = 1000 * Output : * Return : * onther : --------------------------------------------------------------------------*/ extern void eeprom_SetParameter(DeviceNo_t device_No,StorageDistance_t StorageDistance); /*------------------------------------------------------------------------- * Function Name : eeprom_ClearOdoSection * Description : 清零ODO,但是清零完成不死机 * Input : * Output : * Return : * onther : --------------------------------------------------------------------------*/ extern void eeprom_ClearOdoSection(void); /*------------------------------------------------------------------------- * Function Name : eeprom_WriteRecord * Description : * Input : address ; 0~xxx recordDatas:存储数据指针 record_len : 记录长度 * Output : * Return : #define WRITE_FAIL 0x0000 #define WRITING 0x0001 #define WRITE_COMPLETE 0x0002 * onther : --------------------------------------------------------------------------*/ extern ee_uint16_t eeprom_WriteRecord(ee_uint16_t address,ee_uint8_t* recordDatas,ee_uint16_t record_len); /*------------------------------------------------------------------------- * Function Name : eeprom_ReadRecord * Description : * Input : address ; 0~xxx recordDatas:存储数据指针 record_len : 记录长度 * Output : * Return : #define READ_FAIL 0x0000 #define READING 0x0001 #define READ_COMPLETE 0x0002 * onther : --------------------------------------------------------------------------*/ extern ee_uint16_t eeprom_ReadRecord(ee_uint16_t address,ee_uint8_t* recordDatas,ee_uint16_t record_len); /*------------------------------------------------------------------------- * Function Name : eeprom_WriteODO * Description : * Input : StorageDistance 必须与 eeprom_SetParameter设置的一致 u32_odo 单位必须与 StorageDistance 保持一致 每次唤醒必须执行读 调用eeprom_ReadODO,因为有些信息休眠无法保存 * Output : * Return : #define WRITE_FAIL 0x0000 #define WRITING 0x0001 #define WRITE_COMPLETE 0x0002 * onther : --------------------------------------------------------------------------*/ extern ee_uint16_t eeprom_WriteODO(Mileage_t *MileageInfo,StorageDistance_t StorageDistance,ee_uint8_t ign); /*------------------------------------------------------------------------- * Function Name : eeprom_ReadODO * Description : * Input : * Output : * Return : #define READ_FAIL 0x0000 #define READING 0x0001 #define READ_COMPLETE 0x0002 * onther : --------------------------------------------------------------------------*/ extern ee_uint16_t eeprom_ReadODO(Mileage_t *MileageInfo); /*------------------------------------------------------------------------- get state infomation --------------------------------------------------------------------------*/ extern ee_uint16_t eeprom_getWriteState(void); extern ee_uint16_t eeprom_getReadState(void); extern ee_uint16_t eeprom_getOdoCurWriteAddress(void); extern ee_uint32_t eeprom_getOdoLastWriteValue(void); /***30电只存储一次调用**/ /*extern void SetEEWriteDressToLib(ee_uint16_t EEWriteDressDate); extern ee_uint16_t GetEEWriteDressToRam(void);*/ #pragma pack () /* 必须保留 */ #endif /* _S6J3360_EE_MANAGE_H_ */