eeprom_24c02.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef __EEPROM_24C02_H
  2. #define __EEPROM_24C02_H
  3. #include "I2C_Analog.h"
  4. #include "var.h"
  5. #include "remain_distance.h"
  6. #include "crc_cal.h"
  7. #include "torque_sensor.h"
  8. #include "iwdg.h"
  9. #define EEPROM_24C02_ADDR_FLAG (uint8_t)0 //数据有效标志 2bytes + 2bytes
  10. #define EEPROM_24C02_ADDR_CHECKCODE (uint8_t)4 //MCU ID计算的校验码 12bytes + 2bytes
  11. #define EEPROM_24C02_ADDR_CONFIG_PARAM1 (uint8_t)18 //配置参数1 32bytes + 2bytes
  12. #define EEPROM_24C02_ADDR_TORQUE_PARAM (uint8_t)52 //力矩传感器校正参数4bytes + 2bytes
  13. #define EEPROM_24C02_ADDR_MOTOR_PARAM (uint8_t)58 //马达参数16bytes + 2bytes
  14. #define EEPROM_24C02_ADDR_RUN_LOG1 (uint8_t)76 //运行历史信息1 48bytes + 2bytes
  15. #define EEPROM_24C02_ADDR_TORQUE_OFFSET (uint8_t)126 //力矩传感器零点值24bytes + 2bytes
  16. #define EEPROM_24C02_ADDR_SECRET_KEY (uint8_t)152 //设备授权校验密钥8bytes + 2bytes
  17. #define EEPROM_24C02_ADDR_AVG_POWER (uint8_t)162 //电机平均功耗16bytes + 2bytes
  18. #define EEPROM_24C02_ADDR_CONFIG_PARAM2 (uint8_t)180 //配置参数2 32bytes + 2bytes
  19. #define EEPROM_24C02_ADDR_RIDE_LOG (uint8_t)214 //骑行历史信息 20bytes + 2bytes
  20. #define EEPROM_24C02_ADDR_RUN_LOG2 (uint8_t)236 //运行历史信息2 16bytes + 2bytes
  21. #define EEPROM_24C02_ADDR_END (uint8_t)255 //结束地址
  22. #define ACK_OK (int8_t)0
  23. #define ACK_FAIL (int8_t)-1
  24. #define AT24C02_ADDR_WR 0xA0
  25. #define AT24C02_ADDR_RD 0xA1
  26. extern int8_t AT24C02_OK;
  27. extern I2C_Handle_Struct_t I2C_Handle_EEPROM;
  28. void EEPROM_24C02_Init(I2C_Handle_Struct_t* I2C_Handle);
  29. int8_t EEPROM_24C02_ReadOneByte(I2C_Handle_Struct_t* I2C_Handle, uint8_t ReadAddr, uint8_t *data); //指定地址读取一个字节
  30. int8_t EEPROM_24C02_WriteOneByte(I2C_Handle_Struct_t* I2C_Handle, uint8_t WriteAddr,uint8_t DataToWrite); //指定地址写入一个字节
  31. int8_t SaveParamToEEprom_24C02(I2C_Handle_Struct_t* I2C_Handle, uint8_t AddrBegin, uint8_t DataLen, uint8_t *Data); //指定地址写入有效数据
  32. int8_t GetParamFromEEprom_24C02(I2C_Handle_Struct_t* I2C_Handle, uint8_t AddrBegin, uint8_t DataLen, uint8_t *Data);//指定地址读取有效数据
  33. int8_t CopyDefaultDataToEEpprom_24C02(I2C_Handle_Struct_t* I2C_Handle);
  34. int8_t CopyDataFromEEpprom_24C02(I2C_Handle_Struct_t* I2C_Handle);
  35. int8_t EEPROM_24C02_Check(I2C_Handle_Struct_t* I2C_Handle); //自检
  36. void EEPROM_24C02_ClearData(I2C_Handle_Struct_t* I2C_Handle, uint8_t AddrBegin, uint8_t EndAddr, uint8_t Data); //清除指定区间段有效数据
  37. int8_t SavePowerOffBakData(I2C_Handle_Struct_t* I2C_Handle, TrueOrFalse_Flag_Struct_t IsSaveFlag);//掉电数据转移到24C02
  38. void EEPROM_24C02_ParamReset(I2C_Handle_Struct_t* I2C_Handle);
  39. void EEPROM_24C02_LogReset(I2C_Handle_Struct_t* I2C_Handle);
  40. int8_t RunLogSave_Process(uint8_t* RunLogIndex);
  41. #endif