EEPROMの中身を全てリセットするためのプログラム.I2C接続ピンの変更以外はそのまま実行でOK.全て0xFFで書き換える(上書き). ※注意※それまでに書き込んだ内容の復元はできません!!データのバックアップの確認をしてください.

Dependencies:   mbed EEPROM_lib

main.cpp

Committer:
Sigma884
Date:
2019-02-12
Revision:
0:7f857a8838eb

File content as of revision 0:7f857a8838eb:

#include "mbed.h"
#include "EEPROM_lib.h"

Serial pc(USBTX, USBRX, 115200);
I2C i2c_bus(p28, p27);

EEPROM_lib EEPROM(i2c_bus, 4);

int main() {
    wait(1.0f);
    
    pc.printf("\r\n");
    pc.printf("EEPROM Reset Program\r\n");
    pc.printf("Please Input 'E' (large E) to Start : ");
    while(1){
        if(pc.getc() == 'E'){
            pc.printf("START\r\n\n");
            break;
        }
    }
    
    pc.printf("EEPROM Reset...");
    EEPROM.setWriteAddr(1, 0, 0x00, 0x00);
    int ptr;
    while(1){
        while(1){
            ptr = EEPROM.chargeBuff((char)0xFF);
            if(ptr == 128){
                EEPROM.writeBuff();
                ptr = EEPROM.setNextPage();
                //pc.printf("Page : %08x\r\n", ptr);
                pc.printf(".");
                break;
            }
        }
        if(ptr >= 0x04000000){ 
            break;
        }
    }
    pc.printf("Complete!!\r\n");
    
    
    pc.printf("Checking...");
    wait(0.5f);
    
    char ADDR_H, ADDR_L;
    int num, block;
    char data[128];
    int error_count = 0;
    
    ADDR_H = ADDR_L = 0x00;
    num = 1;
    block = 0;
    
    for(int i = 0; i < 4096; i ++){
        switch(i){
            case 512:
            num = 1;
            block = 1;
            break;
            
            case 1024:
            num = 2;
            block = 0;
            break;
            
            case 1536:
            num = 2;
            block = 1;
            break;
            
            case 2048:
            num = 3;
            block = 0;
            break;
            
            case 2560:
            num = 3;
            block = 1;
            break;
            
            case 3072:
            num = 4;
            block = 0;
            break;
            
            case 3584:
            num = 4;
            block = 1;
            break;
        }
        
        EEPROM.readMultiByte(num, block, ADDR_H, ADDR_L, data, 128);
        //pc.printf("%d %01d %02x %02x\r\n", num, block, ADDR_H, ADDR_L);
        pc.printf(".");
        for(int x = 0; x < 128; x ++){
            if(data[x] != 0xFF){
                pc.printf("Error at %1d %01d %02x %02x\r\n", num, block, ADDR_H, ADDR_L+x);
                error_count ++;
            }
        }
        
        if(ADDR_L == 0x00){
            ADDR_L = 0x80;
        }
        else{
            ADDR_L = 0x00;
            ADDR_H ++;
        }
    }
    
    if(error_count != 0){
        pc.printf("System find Error.\r\nPlease Check Connection and Settings.\r\n");
    }
    else{
        pc.printf("Complete!!\r\nConnected EEPROM Are All Reseted.\r\n");
    }
    
    while(1) {
    }
}