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

Dependencies:   mbed EEPROM_lib

Committer:
Sigma884
Date:
Tue Feb 12 13:21:11 2019 +0000
Revision:
0:7f857a8838eb
EEPROM Reset Program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sigma884 0:7f857a8838eb 1 #include "mbed.h"
Sigma884 0:7f857a8838eb 2 #include "EEPROM_lib.h"
Sigma884 0:7f857a8838eb 3
Sigma884 0:7f857a8838eb 4 Serial pc(USBTX, USBRX, 115200);
Sigma884 0:7f857a8838eb 5 I2C i2c_bus(p28, p27);
Sigma884 0:7f857a8838eb 6
Sigma884 0:7f857a8838eb 7 EEPROM_lib EEPROM(i2c_bus, 4);
Sigma884 0:7f857a8838eb 8
Sigma884 0:7f857a8838eb 9 int main() {
Sigma884 0:7f857a8838eb 10 wait(1.0f);
Sigma884 0:7f857a8838eb 11
Sigma884 0:7f857a8838eb 12 pc.printf("\r\n");
Sigma884 0:7f857a8838eb 13 pc.printf("EEPROM Reset Program\r\n");
Sigma884 0:7f857a8838eb 14 pc.printf("Please Input 'E' (large E) to Start : ");
Sigma884 0:7f857a8838eb 15 while(1){
Sigma884 0:7f857a8838eb 16 if(pc.getc() == 'E'){
Sigma884 0:7f857a8838eb 17 pc.printf("START\r\n\n");
Sigma884 0:7f857a8838eb 18 break;
Sigma884 0:7f857a8838eb 19 }
Sigma884 0:7f857a8838eb 20 }
Sigma884 0:7f857a8838eb 21
Sigma884 0:7f857a8838eb 22 pc.printf("EEPROM Reset...");
Sigma884 0:7f857a8838eb 23 EEPROM.setWriteAddr(1, 0, 0x00, 0x00);
Sigma884 0:7f857a8838eb 24 int ptr;
Sigma884 0:7f857a8838eb 25 while(1){
Sigma884 0:7f857a8838eb 26 while(1){
Sigma884 0:7f857a8838eb 27 ptr = EEPROM.chargeBuff((char)0xFF);
Sigma884 0:7f857a8838eb 28 if(ptr == 128){
Sigma884 0:7f857a8838eb 29 EEPROM.writeBuff();
Sigma884 0:7f857a8838eb 30 ptr = EEPROM.setNextPage();
Sigma884 0:7f857a8838eb 31 //pc.printf("Page : %08x\r\n", ptr);
Sigma884 0:7f857a8838eb 32 pc.printf(".");
Sigma884 0:7f857a8838eb 33 break;
Sigma884 0:7f857a8838eb 34 }
Sigma884 0:7f857a8838eb 35 }
Sigma884 0:7f857a8838eb 36 if(ptr >= 0x04000000){
Sigma884 0:7f857a8838eb 37 break;
Sigma884 0:7f857a8838eb 38 }
Sigma884 0:7f857a8838eb 39 }
Sigma884 0:7f857a8838eb 40 pc.printf("Complete!!\r\n");
Sigma884 0:7f857a8838eb 41
Sigma884 0:7f857a8838eb 42
Sigma884 0:7f857a8838eb 43 pc.printf("Checking...");
Sigma884 0:7f857a8838eb 44 wait(0.5f);
Sigma884 0:7f857a8838eb 45
Sigma884 0:7f857a8838eb 46 char ADDR_H, ADDR_L;
Sigma884 0:7f857a8838eb 47 int num, block;
Sigma884 0:7f857a8838eb 48 char data[128];
Sigma884 0:7f857a8838eb 49 int error_count = 0;
Sigma884 0:7f857a8838eb 50
Sigma884 0:7f857a8838eb 51 ADDR_H = ADDR_L = 0x00;
Sigma884 0:7f857a8838eb 52 num = 1;
Sigma884 0:7f857a8838eb 53 block = 0;
Sigma884 0:7f857a8838eb 54
Sigma884 0:7f857a8838eb 55 for(int i = 0; i < 4096; i ++){
Sigma884 0:7f857a8838eb 56 switch(i){
Sigma884 0:7f857a8838eb 57 case 512:
Sigma884 0:7f857a8838eb 58 num = 1;
Sigma884 0:7f857a8838eb 59 block = 1;
Sigma884 0:7f857a8838eb 60 break;
Sigma884 0:7f857a8838eb 61
Sigma884 0:7f857a8838eb 62 case 1024:
Sigma884 0:7f857a8838eb 63 num = 2;
Sigma884 0:7f857a8838eb 64 block = 0;
Sigma884 0:7f857a8838eb 65 break;
Sigma884 0:7f857a8838eb 66
Sigma884 0:7f857a8838eb 67 case 1536:
Sigma884 0:7f857a8838eb 68 num = 2;
Sigma884 0:7f857a8838eb 69 block = 1;
Sigma884 0:7f857a8838eb 70 break;
Sigma884 0:7f857a8838eb 71
Sigma884 0:7f857a8838eb 72 case 2048:
Sigma884 0:7f857a8838eb 73 num = 3;
Sigma884 0:7f857a8838eb 74 block = 0;
Sigma884 0:7f857a8838eb 75 break;
Sigma884 0:7f857a8838eb 76
Sigma884 0:7f857a8838eb 77 case 2560:
Sigma884 0:7f857a8838eb 78 num = 3;
Sigma884 0:7f857a8838eb 79 block = 1;
Sigma884 0:7f857a8838eb 80 break;
Sigma884 0:7f857a8838eb 81
Sigma884 0:7f857a8838eb 82 case 3072:
Sigma884 0:7f857a8838eb 83 num = 4;
Sigma884 0:7f857a8838eb 84 block = 0;
Sigma884 0:7f857a8838eb 85 break;
Sigma884 0:7f857a8838eb 86
Sigma884 0:7f857a8838eb 87 case 3584:
Sigma884 0:7f857a8838eb 88 num = 4;
Sigma884 0:7f857a8838eb 89 block = 1;
Sigma884 0:7f857a8838eb 90 break;
Sigma884 0:7f857a8838eb 91 }
Sigma884 0:7f857a8838eb 92
Sigma884 0:7f857a8838eb 93 EEPROM.readMultiByte(num, block, ADDR_H, ADDR_L, data, 128);
Sigma884 0:7f857a8838eb 94 //pc.printf("%d %01d %02x %02x\r\n", num, block, ADDR_H, ADDR_L);
Sigma884 0:7f857a8838eb 95 pc.printf(".");
Sigma884 0:7f857a8838eb 96 for(int x = 0; x < 128; x ++){
Sigma884 0:7f857a8838eb 97 if(data[x] != 0xFF){
Sigma884 0:7f857a8838eb 98 pc.printf("Error at %1d %01d %02x %02x\r\n", num, block, ADDR_H, ADDR_L+x);
Sigma884 0:7f857a8838eb 99 error_count ++;
Sigma884 0:7f857a8838eb 100 }
Sigma884 0:7f857a8838eb 101 }
Sigma884 0:7f857a8838eb 102
Sigma884 0:7f857a8838eb 103 if(ADDR_L == 0x00){
Sigma884 0:7f857a8838eb 104 ADDR_L = 0x80;
Sigma884 0:7f857a8838eb 105 }
Sigma884 0:7f857a8838eb 106 else{
Sigma884 0:7f857a8838eb 107 ADDR_L = 0x00;
Sigma884 0:7f857a8838eb 108 ADDR_H ++;
Sigma884 0:7f857a8838eb 109 }
Sigma884 0:7f857a8838eb 110 }
Sigma884 0:7f857a8838eb 111
Sigma884 0:7f857a8838eb 112 if(error_count != 0){
Sigma884 0:7f857a8838eb 113 pc.printf("System find Error.\r\nPlease Check Connection and Settings.\r\n");
Sigma884 0:7f857a8838eb 114 }
Sigma884 0:7f857a8838eb 115 else{
Sigma884 0:7f857a8838eb 116 pc.printf("Complete!!\r\nConnected EEPROM Are All Reseted.\r\n");
Sigma884 0:7f857a8838eb 117 }
Sigma884 0:7f857a8838eb 118
Sigma884 0:7f857a8838eb 119 while(1) {
Sigma884 0:7f857a8838eb 120 }
Sigma884 0:7f857a8838eb 121 }