#ifndef __EEPROM_FLASH_H #define __EEPROM_FLASH_H #include "stm32f1xx_hal.h" #include "var.h" #include "enviolo_can.h" #include "crc_cal.h" #define EEPROM_FLASH_BEGIN_ADDRESS 0x0801FC00 #define EEPROM_FLASH_END_ADDRESS 0x0801FFFF #define EEPROM_FLASH_ADDR_FLAG EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)0 //Flash数据写入标志 4bytes + 4bytes #define EEPROM_FLASH_ADDR_MODE EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)8 //电机型号 16bytes + 4bytes #define EEPROM_FLASH_ADDR_SN EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)28 //电机序列号 16bytes + 4bytes #define EEPROM_FLASH_ADDR_MAC_INFO EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)48 //电机生产信息 32bytes + 4bytes #define EEPROM_FLASH_ADDR_USER_INFO1 EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)84 //自定义字符串1 16bytes + 4bytes #define EEPROM_FLASH_ADDR_USER_INFO2 EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)104 //自定义字符串2 16bytes + 4bytes #define EEPROM_FLASH_ADDR_USER_INFO3 EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)124 //自定义字符串3 16bytes + 4bytes #define EEPROM_FLASH_ADDR_GEARBOX_PARAMS EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)144 //自动变速器控制参数 8bytes + 4bytes #define EEPROM_FLASH_ADDR_BATTERY_PARMAS EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)156 //电池放电曲线参数 204bytes + 4bytes #define EEPROM_FLASH_ADDR_TAG_INFO EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)364 //产品标签信息 32bytes + 4bytes #define EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS 0x0801E800 #define EEPROM_FLASH_ADDR_TEMP_END_ADDRESS 0x0801EFFF #define EEPROM_FLASH_ADDR_POWEROFF_BKP_FLAG EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS //掉电保存的关键数据标志 4bytes + 4bytes #define EEPROM_FLASH_ADDR_POWEROFF_BKP EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS + (uint32_t)8 //掉电保存的关键数据 40bytes + 4bytes extern TrueOrFalse_Flag_Struct_t IsPowerOffDataBkp_SaveFlag; extern TrueOrFalse_Flag_Struct_t IsFlashSaveDataUpdate; extern void CopyDataToEEPROM_Flash(void); extern void CopyDataFromEEPROM_Flash(void); extern void FLASH_Write(uint32_t FlashAddress, uint32_t* Data, uint16_t DataLength); extern void EEPROM_Flash_Erase(uint32_t BeginAddress, uint32_t EndAddress); extern int8_t ReadDataFromEEPROM_Flash(uint32_t FlashAddress, uint8_t* Data, uint8_t Length); // Length必须为4的倍数 extern void SaveDataToEEPROM_Flash(uint32_t FlashAddress, uint8_t* Data, uint8_t Length); // Length必须为4的倍数 extern void EEPROM_Flash_Check(void); extern void EEPROM_Flash_DataUpdate(TrueOrFalse_Flag_Struct_t* IsUpdateFlag); extern TrueOrFalse_Flag_Struct_t EEPROM_Flash_TempCheck(void); #endif