EEPROM Multiplexer test

Dependencies:   mbed EEPROM_lib

Committer:
Sigma884
Date:
Sun May 23 08:00:45 2021 +0000
Revision:
1:de11b189ee57
Parent:
0:659448bed797
Child:
2:bd7fad3dc62e
Improve EEPROM library and Fix Reading EEPROM code; debug by Hayashi

Who changed what in which revision?

UserRevisionLine numberNew contents of line
imadaemi 0:659448bed797 1 #include "mbed.h"
imadaemi 0:659448bed797 2 #include "EEPROM_lib.h"
imadaemi 0:659448bed797 3
imadaemi 0:659448bed797 4 Serial pc(USBTX, USBRX, 230400);
imadaemi 0:659448bed797 5 I2C i2c_bus(p28, p27);
imadaemi 0:659448bed797 6 EEPROM_lib EEPROM(i2c_bus, 1);
imadaemi 0:659448bed797 7 DigitalOut pinA(p21);
imadaemi 0:659448bed797 8 DigitalOut pinB(p22);
imadaemi 0:659448bed797 9 DigitalOut pinC(p23);
imadaemi 0:659448bed797 10
imadaemi 0:659448bed797 11 void setEEPROMGroup(int group_num);
imadaemi 0:659448bed797 12
imadaemi 0:659448bed797 13 int main() {
imadaemi 0:659448bed797 14
Sigma884 1:de11b189ee57 15 pc.printf("Please Input '7' to Start Progeam\r\n");
Sigma884 1:de11b189ee57 16
imadaemi 0:659448bed797 17 while(1) {
imadaemi 0:659448bed797 18 if(pc.readable()){
imadaemi 0:659448bed797 19 int c = pc.getc();
imadaemi 0:659448bed797 20 pc.printf("Input: %c\r\n", c);
imadaemi 0:659448bed797 21 if(c == '7'){
imadaemi 0:659448bed797 22 break;
imadaemi 0:659448bed797 23 }
imadaemi 0:659448bed797 24 }
imadaemi 0:659448bed797 25 }
imadaemi 0:659448bed797 26
imadaemi 0:659448bed797 27 int ptr, n = 0;
Sigma884 1:de11b189ee57 28 int eeprom_ptr = 0;
Sigma884 1:de11b189ee57 29 /*
imadaemi 0:659448bed797 30 for(int ii = 0; ii < 2; ii ++){
imadaemi 0:659448bed797 31 pc.printf("Start to write %d EEPROM\r\n",ii);
imadaemi 0:659448bed797 32 setEEPROMGroup(ii);
imadaemi 0:659448bed797 33 EEPROM.setWriteAddr(1, 0, 0x00, 0x00);
imadaemi 0:659448bed797 34 while(1){
imadaemi 0:659448bed797 35 while(1){
imadaemi 0:659448bed797 36 ptr = EEPROM.chargeBuff((int)n++);
imadaemi 0:659448bed797 37 if(ptr == 128){
imadaemi 0:659448bed797 38 EEPROM.writeBuff();
imadaemi 0:659448bed797 39 ptr = EEPROM.setNextPage();
imadaemi 0:659448bed797 40 break;
imadaemi 0:659448bed797 41 }
imadaemi 0:659448bed797 42 }
imadaemi 0:659448bed797 43 if(ptr == 0x01000000){
imadaemi 0:659448bed797 44 ptr = 0;
imadaemi 0:659448bed797 45 break;
imadaemi 0:659448bed797 46 }
imadaemi 0:659448bed797 47 }
imadaemi 0:659448bed797 48 }
Sigma884 1:de11b189ee57 49 */
Sigma884 1:de11b189ee57 50 for(int i = 0; i < 2; i++){
Sigma884 1:de11b189ee57 51 pc.printf("Start to write %d EEPROM\r\n", i);
Sigma884 1:de11b189ee57 52 setEEPROMGroup(i);
Sigma884 1:de11b189ee57 53 EEPROM.setWriteAddr(1, 0, 0x00, 0x00);
Sigma884 1:de11b189ee57 54
Sigma884 1:de11b189ee57 55 while(1){
Sigma884 1:de11b189ee57 56 ptr = EEPROM.chargeBuff((int)n++);
Sigma884 1:de11b189ee57 57 //ptr = EEPROM.chargeBuff((char)0xff);
Sigma884 1:de11b189ee57 58 if(ptr == 128){
Sigma884 1:de11b189ee57 59 EEPROM.writeBuff();
Sigma884 1:de11b189ee57 60 //ptr = EEPROM.setNextPage();
Sigma884 1:de11b189ee57 61 eeprom_ptr = EEPROM.setNextPage();
Sigma884 1:de11b189ee57 62 //pc.printf("eeprom_ptr: %08x\r\n", eeprom_ptr);
Sigma884 1:de11b189ee57 63 }
Sigma884 1:de11b189ee57 64
Sigma884 1:de11b189ee57 65 if(eeprom_ptr == 0x01000000){
Sigma884 1:de11b189ee57 66 ptr = 0;
Sigma884 1:de11b189ee57 67 eeprom_ptr = 0;
Sigma884 1:de11b189ee57 68 break;
Sigma884 1:de11b189ee57 69 }
Sigma884 1:de11b189ee57 70 }
Sigma884 1:de11b189ee57 71 }
imadaemi 0:659448bed797 72
imadaemi 0:659448bed797 73
imadaemi 0:659448bed797 74 char data[128];
imadaemi 0:659448bed797 75 int num, block;
imadaemi 0:659448bed797 76 char ADDR_H, ADDR_L;
imadaemi 0:659448bed797 77
imadaemi 0:659448bed797 78 num = 1;
Sigma884 1:de11b189ee57 79 //block = 0;
Sigma884 1:de11b189ee57 80 //ADDR_H = ADDR_L = 0x00;
imadaemi 0:659448bed797 81
Sigma884 1:de11b189ee57 82 //setEEPROMGroup(0);
imadaemi 0:659448bed797 83 for(int j = 0; j < 2; j ++){
imadaemi 0:659448bed797 84 pc.printf("Start to read %d EEPROM\r\n",j);
Sigma884 1:de11b189ee57 85
imadaemi 0:659448bed797 86 setEEPROMGroup(j);
Sigma884 1:de11b189ee57 87 block = 0;
Sigma884 1:de11b189ee57 88 ADDR_H = ADDR_L = 0x00;
Sigma884 1:de11b189ee57 89
imadaemi 0:659448bed797 90 for(int i = 0; i < 1024; i ++){
imadaemi 0:659448bed797 91 switch(i){
imadaemi 0:659448bed797 92 case 512:
imadaemi 0:659448bed797 93 num = 1;
imadaemi 0:659448bed797 94 block = 1;
imadaemi 0:659448bed797 95 break;
imadaemi 0:659448bed797 96
imadaemi 0:659448bed797 97 case 1024:
imadaemi 0:659448bed797 98 num = 2;
imadaemi 0:659448bed797 99 block = 0;
imadaemi 0:659448bed797 100 break;
imadaemi 0:659448bed797 101 }
imadaemi 0:659448bed797 102
imadaemi 0:659448bed797 103 EEPROM.readMultiByte(num, block, ADDR_H, ADDR_L, data, 128);
imadaemi 0:659448bed797 104 for(int x = 0; x < 128; x ++){
imadaemi 0:659448bed797 105 pc.printf("%02x ", data[x]);
imadaemi 0:659448bed797 106 }
imadaemi 0:659448bed797 107 pc.printf("\r\n");
imadaemi 0:659448bed797 108
imadaemi 0:659448bed797 109 if(ADDR_L == 0x00){
imadaemi 0:659448bed797 110 ADDR_L = 0x80;
imadaemi 0:659448bed797 111 }
imadaemi 0:659448bed797 112 else{
imadaemi 0:659448bed797 113 ADDR_L = 0x00;
imadaemi 0:659448bed797 114 ADDR_H ++;
imadaemi 0:659448bed797 115 }
imadaemi 0:659448bed797 116 }
imadaemi 0:659448bed797 117 }
imadaemi 0:659448bed797 118 /*
imadaemi 0:659448bed797 119 while(1) {
imadaemi 0:659448bed797 120 if(pc.readable()){
imadaemi 0:659448bed797 121 int c = pc.getc();
imadaemi 0:659448bed797 122 pc.printf("Input: %c\r\n", c);
imadaemi 0:659448bed797 123 setEEPROMGroup(c-48);
imadaemi 0:659448bed797 124 }
imadaemi 0:659448bed797 125 }
imadaemi 0:659448bed797 126 */
imadaemi 0:659448bed797 127 }
imadaemi 0:659448bed797 128
imadaemi 0:659448bed797 129 void setEEPROMGroup(int group_num){
imadaemi 0:659448bed797 130 switch(group_num){
imadaemi 0:659448bed797 131 case 0:
imadaemi 0:659448bed797 132 pinA = 0;
imadaemi 0:659448bed797 133 pinB = 0;
imadaemi 0:659448bed797 134 pinC = 0;
imadaemi 0:659448bed797 135 break;
imadaemi 0:659448bed797 136
imadaemi 0:659448bed797 137 case 1:
imadaemi 0:659448bed797 138 pinA = 1;
imadaemi 0:659448bed797 139 pinB = 0;
imadaemi 0:659448bed797 140 pinC = 0;
imadaemi 0:659448bed797 141 break;
imadaemi 0:659448bed797 142
imadaemi 0:659448bed797 143 case 2:
imadaemi 0:659448bed797 144 pinA = 0;
imadaemi 0:659448bed797 145 pinB = 1;
imadaemi 0:659448bed797 146 pinC = 0;
imadaemi 0:659448bed797 147 break;
imadaemi 0:659448bed797 148
imadaemi 0:659448bed797 149 case 3:
imadaemi 0:659448bed797 150 pinA = 1;
imadaemi 0:659448bed797 151 pinB = 1;
imadaemi 0:659448bed797 152 pinC = 0;
imadaemi 0:659448bed797 153 break;
imadaemi 0:659448bed797 154 }
imadaemi 0:659448bed797 155 }