eeprom_flash.h 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #ifndef __EEPROM_FLASH_H
  2. #define __EEPROM_FLASH_H
  3. #include "stm32f1xx_hal.h"
  4. #include "var.h"
  5. #include "enviolo_can.h"
  6. #include "crc_cal.h"
  7. #define EEPROM_FLASH_BEGIN_ADDRESS 0x0801FC00
  8. #define EEPROM_FLASH_END_ADDRESS 0x0801FFFF
  9. #define EEPROM_FLASH_ADDR_FLAG EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)0 //Flash数据写入标志 4bytes + 4bytes
  10. #define EEPROM_FLASH_ADDR_MODE EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)8 //电机型号 16bytes + 4bytes
  11. #define EEPROM_FLASH_ADDR_SN EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)28 //电机序列号 16bytes + 4bytes
  12. #define EEPROM_FLASH_ADDR_MAC_INFO EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)48 //电机生产信息 32bytes + 4bytes
  13. #define EEPROM_FLASH_ADDR_USER_INFO1 EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)84 //自定义字符串1 16bytes + 4bytes
  14. #define EEPROM_FLASH_ADDR_USER_INFO2 EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)104 //自定义字符串2 16bytes + 4bytes
  15. #define EEPROM_FLASH_ADDR_USER_INFO3 EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)124 //自定义字符串3 16bytes + 4bytes
  16. #define EEPROM_FLASH_ADDR_CONFIG_PARAM1 EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)144 //配置参数1 32bytes + 4bytes
  17. #define EEPROM_FLASH_ADDR_CONFIG_PARAM2 EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)180 //配置参数2 32bytes + 4bytes
  18. #define EEPROM_FLASH_ADDR_MOTOR_PARAM EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)216 //马达参数 16bytes + 4bytes
  19. #define EEPROM_FLASH_ADDR_GEARBOX_PARAMS EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)236 //自动变速器控制参数 8bytes + 4bytes
  20. #define EEPROM_FLASH_ADDR_BATTERY_PARMAS EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)248 //电池放电曲线参数 204bytes + 4bytes
  21. #define EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS 0x0801E800
  22. #define EEPROM_FLASH_ADDR_TEMP_END_ADDRESS 0x0801EFFF
  23. #define EEPROM_FLASH_ADDR_POWEROFF_BKP_FLAG EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS //掉电保存的关键数据标志 4bytes + 4bytes
  24. #define EEPROM_FLASH_ADDR_POWEROFF_BKP EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS + (uint32_t)8 //掉电保存的关键数据 40bytes + 4bytes
  25. extern TrueOrFalse_Flag_Struct_t IsPowerOffDataBkp_SaveFlag;
  26. extern TrueOrFalse_Flag_Struct_t IsFlashSaveDataUpdate;
  27. extern void CopyDataToEEPROM_Flash(void);
  28. extern void CopyDataFromEEPROM_Flash(void);
  29. extern void FLASH_Write(uint32_t FlashAddress, uint32_t* Data, uint16_t DataLength);
  30. extern void EEPROM_Flash_Erase(uint32_t BeginAddress, uint32_t EndAddress);
  31. extern int8_t ReadDataFromEEPROM_Flash(uint32_t FlashAddress, uint8_t* Data, uint8_t Length); // Length必须为4的倍数
  32. extern void SaveDataToEEPROM_Flash(uint32_t FlashAddress, uint8_t* Data, uint8_t Length); // Length必须为4的倍数
  33. extern void EEPROM_Flash_Check(void);
  34. extern void EEPROM_Flash_DataUpdate(TrueOrFalse_Flag_Struct_t* IsUpdateFlag);
  35. extern TrueOrFalse_Flag_Struct_t EEPROM_Flash_TempCheck(void);
  36. #endif