#ifndef __EEPROM_FLASH_H #define __EEPROM_FLASH_H #include "stm32f1xx_hal.h" #include "var.h" #include "crc_cal.h" #include "torque_sensor.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_CONFIG_PARAM1 EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)144 //配置参数1 32bytes + 4bytes #define EEPROM_FLASH_ADDR_CONFIG_PARAM2 EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)180 //配置参数2 32bytes + 4bytes #define EEPROM_FLASH_ADDR_MOTOR_PARAM EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)216 //马达参数 16bytes + 4bytes #define EEPROM_FLASH_ADDR_TORQUE_LINE_CP EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)236 //力矩传感器线性校正参数 60bytes + 4bytes #define EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS 0x0801F400 #define EEPROM_FLASH_ADDR_TEMP_END_ADDRESS 0x0801F7FF #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 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