ソースを参照

EEPROM 최초 데이터 FF 일 때 전부 0으로 초기화 기능 구현

PYJ 5 年 前
コミット
3f6a9e279b
共有1 個のファイルを変更した25 個の追加2 個の削除を含む
  1. 25 2
      Bluecell_Src/eeprom.c

+ 25 - 2
Bluecell_Src/eeprom.c

@@ -37,6 +37,21 @@ typedef enum{
37 37
     Test_UL3 = 0,
38 38
     Test_UL4 = 0,    
39 39
 };*/
40
+/**/
41
+void EEPROM_DataCheck(){
42
+    static uint8_t datacheck_array[sizeof(BLUESTATUS_st)];
43
+    
44
+    Bluecell_StructCpy(&datacheck_array[0],&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st));
45
+    for(int i = 0; i < sizeof(BLUESTATUS_st); i++){
46
+        if(datacheck_array[i] == 0xFF){
47
+
48
+        }
49
+        else{
50
+            return;
51
+        }
52
+    }
53
+    EEPROM_M24C08_Zerowrite(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE));
54
+}
40 55
 void EEPROM_M24C08_Init(void){
41 56
 /*    uint8_t* data = 0;
42 57
     int16_t DL_Main_Atten[4] = {0,};
@@ -70,6 +85,7 @@ void EEPROM_M24C08_Init(void){
70 85
 //    ALC_TEMP[2] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H << 8 | bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_L;
71 86
 //    ALC_TEMP[3] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H << 8 | bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L;
72 87
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_WINDOW_STATUS_ADDRESDS,&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st) );
88
+//    EEPROM_DataCheck();
73 89
 
74 90
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_BASE              ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
75 91
 
@@ -461,12 +477,19 @@ HAL_StatusTypeDef EEPROM_M24C08_Zerowrite(uint8_t devid,uint16_t Address){
461 477
    // uint8_t sizeremain = 0;
462 478
     uint16_t addrees_inc = 0;
463 479
     addrees_inc = 0;
464
-    uint8_t data[4096] = {0,};
480
+    static uint8_t data[1024] = {0,};
465 481
 //    printf("EEPROM ALL ERASE \r\n");
466 482
 
467 483
     for(int i = 0 ; i < 128; i++ ){
468 484
          addrees_inc = i * MAXEEPROM_LENG;
469
-         ret = HAL_I2C_Mem_Write(&hi2c2, devid  ,((Address + addrees_inc) & 0xFFFF) ,  I2C_MEMADD_SIZE_16BIT, &data[0], MAXEEPROM_LENG, 0xFFFF);
485
+         ret = HAL_I2C_Mem_Write(&hi2c2,
486
+                                 devid  ,
487
+                                 ((Address + addrees_inc) & 0xFFFF) ,
488
+                                 I2C_MEMADD_SIZE_16BIT,
489
+                                 &data[0],
490
+                                 MAXEEPROM_LENG,
491
+                                 0xFFFF);
492
+    
470 493
 //         if(ret == HAL_ERROR)
471 494
 //             printf("Write ERR\r\n");
472 495
 //         else