eeprom_flash.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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_GEARBOX_PARAMS EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)144 //自动变速器控制参数 8bytes + 4bytes
  17. #define EEPROM_FLASH_ADDR_BATTERY_PARMAS EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)156 //电池放电曲线参数 204bytes + 4bytes
  18. #define EEPROM_FLASH_ADDR_TAG_INFO EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)364 //产品标签信息 32bytes + 4bytes
  19. #define EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS 0x0801F400
  20. #define EEPROM_FLASH_ADDR_TEMP_END_ADDRESS 0x0801F7FF
  21. #define EEPROM_FLASH_ADDR_POWEROFF_BKP_FLAG EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS //掉电保存的关键数据标志 4bytes + 4bytes
  22. #define EEPROM_FLASH_ADDR_POWEROFF_BKP EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS + (uint32_t)8 //掉电保存的关键数据 40bytes + 4bytes
  23. extern TrueOrFalse_Flag_Struct_t IsPowerOffDataBkp_SaveFlag;
  24. extern TrueOrFalse_Flag_Struct_t IsFlashSaveDataUpdate;
  25. extern void CopyDataToEEPROM_Flash(void);
  26. extern void CopyDataFromEEPROM_Flash(void);
  27. extern void FLASH_Write(uint32_t FlashAddress, uint32_t* Data, uint16_t DataLength);
  28. extern void EEPROM_Flash_Erase(uint32_t BeginAddress, uint32_t EndAddress);
  29. extern int8_t ReadDataFromEEPROM_Flash(uint32_t FlashAddress, uint8_t* Data, uint8_t Length); // Length必须为4的倍数
  30. extern void SaveDataToEEPROM_Flash(uint32_t FlashAddress, uint8_t* Data, uint8_t Length); // Length必须为4的倍数
  31. extern void EEPROM_Flash_Check(void);
  32. extern void EEPROM_Flash_DataUpdate(TrueOrFalse_Flag_Struct_t* IsUpdateFlag);
  33. extern TrueOrFalse_Flag_Struct_t EEPROM_Flash_TempCheck(void);
  34. #endif