diff --git a/Firmware/Source/Component/Mileage/Services_Mileage_User.c b/Firmware/Source/Component/Mileage/Services_Mileage_User.c
index d000ccbfc9e4ab683c2c66d7ec6d2298ce1be616..b268ba7c5dce7d619e022e256e26c50369d4d5d4 100644
--- a/Firmware/Source/Component/Mileage/Services_Mileage_User.c
+++ b/Firmware/Source/Component/Mileage/Services_Mileage_User.c
@@ -7,6 +7,8 @@ uint8_t DataTripBuf[Data_MEM_Block_Trip * EM_TRIP_MAX];
 Mileage_t g_WriteMileage;
 Mileage_t g_ReadMileage;
 uint8_t odo_writeState;
+uint8_t odoclr_writeState;
+uint8_t trip_writeState;
 uint8_t odo_readState;
 uint32_t Milleage_InitFlag = 0U;
 /******************************************************************************
@@ -203,11 +205,19 @@ uint32_t Data_User_EEPROM_Read(uint16_t u16BlockID, uint32_t u32Data[], uint16_t
         break;
 
     case EM_ODO_BLOCK:
-        eeprom_WriteRecord(EEPROM_BLOCK_01, (uint8_t *)u32Data, u16Len * 4);
+        odoclr_writeState = eeprom_WriteRecord(EEPROM_BLOCK_01, (uint8_t *)u32Data, u16Len * 4);
+        while(odoclr_writeState == WRITING)
+        {
+            odoclr_writeState = eeprom_WriteRecord(EEPROM_BLOCK_01, (uint8_t *)u32Data, u16Len * 4);
+        }
         break;
 
     case EM_TRIP_BLOCK:
-        eeprom_WriteRecord(EEPROM_BLOCK_03, (uint8_t *)u32Data, u16Len * 4);
+        trip_writeState = eeprom_WriteRecord(EEPROM_BLOCK_03, (uint8_t *)u32Data, u16Len * 4);
+        while(trip_writeState == WRITING)
+        {
+            trip_writeState = eeprom_WriteRecord(EEPROM_BLOCK_03, (uint8_t *)u32Data, u16Len * 4);
+        } 
         break;
 
     // case EM_Maintenance_BLOCK: