#ifndef __EEPROM_24C02_H #define __EEPROM_24C02_H #include "I2C_Analog.h" #include "var.h" #include "remain_distance.h" #include "crc_cal.h" #include "torque_sensor.h" #include "iwdg.h" #define EEPROM_24C02_ADDR_FLAG (uint8_t)0 //数据有效标志 2bytes + 2bytes #define EEPROM_24C02_ADDR_CHECKCODE (uint8_t)4 //MCU ID计算的校验码 12bytes + 2bytes #define EEPROM_24C02_ADDR_TORQUE_1_CAL_K (uint8_t)18 //力矩传感器1标定系数1bytes + 2bytes #define EEPROM_24C02_ADDR_TORQUE_OFFSET_1 (uint8_t)21 //力矩传感器1零点偏移24bytes + 2bytes #define EEPROM_24C02_ADDR_TORQUE_2_CAL_K (uint8_t)47 //力矩传感器2标定系数1bytes + 2bytes #define EEPROM_24C02_ADDR_TORQUE_OFFSET_2 (uint8_t)50 //力矩传感器2零点偏移24bytes + 2bytes #define EEPROM_24C02_ADDR_TORQUE_3_CAL_K (uint8_t)76 //力矩传感器3标定系数1bytes + 2bytes #define EEPROM_24C02_ADDR_TORQUE_OFFSET_3 (uint8_t)79 //力矩传感器3零点偏移24bytes + 2bytes #define EEPROM_24C02_ADDR_RUN_LOG1 (uint8_t)105 //运行历史信息1 48bytes + 2bytes #define EEPROM_24C02_ADDR_RUN_LOG2 (uint8_t)155 //运行历史信息2 16bytes + 2bytes #define EEPROM_24C02_ADDR_RIDE_LOG (uint8_t)173 //骑行历史信息 20bytes + 2bytes #define EEPROM_24C02_ADDR_SECRET_KEY (uint8_t)195 //设备授权校验密钥8bytes + 2bytes #define EEPROM_24C02_ADDR_AVG_POWER (uint8_t)205 //电机平均功耗16bytes + 2bytes #define EEPROM_24C02_ADDR_TORQUE_STARDATA (uint8_t)223 //启动值 2bytes + 2bytes #define EEPROM_24C02_ADDR_END (uint8_t)255 //结束地址 #define ACK_OK (int8_t)0 #define ACK_FAIL (int8_t)-1 #define AT24C02_ADDR_WR 0xA0 #define AT24C02_ADDR_RD 0xA1 extern int8_t AT24C02_OK; extern I2C_Handle_Struct_t I2C_Handle_EEPROM; void EEPROM_24C02_Init(I2C_Handle_Struct_t* I2C_Handle); int8_t EEPROM_24C02_ReadOneByte(I2C_Handle_Struct_t* I2C_Handle, uint8_t ReadAddr, uint8_t *data); //指定地址读取一个字节 int8_t EEPROM_24C02_WriteOneByte(I2C_Handle_Struct_t* I2C_Handle, uint8_t WriteAddr,uint8_t DataToWrite); //指定地址写入一个字节 int8_t SaveParamToEEprom_24C02(I2C_Handle_Struct_t* I2C_Handle, uint8_t AddrBegin, uint8_t DataLen, uint8_t *Data); //指定地址写入有效数据 int8_t GetParamFromEEprom_24C02(I2C_Handle_Struct_t* I2C_Handle, uint8_t AddrBegin, uint8_t DataLen, uint8_t *Data);//指定地址读取有效数据 int8_t CopyDefaultDataToEEpprom_24C02(I2C_Handle_Struct_t* I2C_Handle); int8_t CopyDataFromEEpprom_24C02(I2C_Handle_Struct_t* I2C_Handle); int8_t EEPROM_24C02_Check(I2C_Handle_Struct_t* I2C_Handle); //自检 void EEPROM_24C02_ClearData(I2C_Handle_Struct_t* I2C_Handle, uint8_t AddrBegin, uint8_t EndAddr, uint8_t Data); //清除指定区间段有效数据 int8_t SavePowerOffBakData(I2C_Handle_Struct_t* I2C_Handle, TrueOrFalse_Flag_Struct_t IsSaveFlag);//掉电数据转移到24C02 void EEPROM_24C02_ParamReset(I2C_Handle_Struct_t* I2C_Handle); void EEPROM_24C02_LogReset(I2C_Handle_Struct_t* I2C_Handle); int8_t RunLogSave_Process(uint8_t* RunLogIndex); #endif