EEPROM Multiplexer test

Dependencies:   mbed EEPROM_lib

Revision:
0:659448bed797
Child:
1:de11b189ee57
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun May 23 06:46:00 2021 +0000
@@ -0,0 +1,125 @@
+#include "mbed.h"
+#include "EEPROM_lib.h"
+
+Serial pc(USBTX, USBRX, 230400);
+I2C i2c_bus(p28, p27);
+EEPROM_lib EEPROM(i2c_bus, 1);
+DigitalOut pinA(p21);
+DigitalOut pinB(p22);
+DigitalOut pinC(p23);
+
+void setEEPROMGroup(int group_num);
+
+int main() {
+    
+    while(1) {
+        if(pc.readable()){
+            int c = pc.getc();
+            pc.printf("Input: %c\r\n", c);
+            if(c == '7'){
+                break;
+            }
+        }
+    }
+    
+    int ptr, n = 0;
+    for(int ii = 0; ii < 2; ii ++){
+        pc.printf("Start to write %d EEPROM\r\n",ii);
+        setEEPROMGroup(ii);
+        EEPROM.setWriteAddr(1, 0, 0x00, 0x00);
+        while(1){
+            while(1){
+                ptr = EEPROM.chargeBuff((int)n++);
+                if(ptr == 128){
+                    EEPROM.writeBuff();
+                    ptr = EEPROM.setNextPage();
+                    break;
+                }
+            }
+            if(ptr == 0x01000000){
+                ptr = 0;
+                break;
+            }
+        }
+    }
+    
+    
+    char data[128];
+    int num, block;
+    char ADDR_H, ADDR_L;
+    
+    num = 1;
+    block = 0;
+    ADDR_H = ADDR_L = 0x00;
+    
+    setEEPROMGroup(0);
+    
+    for(int j = 0; j < 2; j ++){
+        pc.printf("Start to read %d EEPROM\r\n",j);
+        setEEPROMGroup(j);
+        for(int i = 0; i < 1024; i ++){
+            switch(i){
+                case 512:
+                num = 1;
+                block = 1;
+                break;
+                
+                case 1024:
+                num = 2;
+                block = 0;
+                break;
+            }
+            
+            EEPROM.readMultiByte(num, block, ADDR_H, ADDR_L, data, 128);
+            for(int x = 0; x < 128; x ++){
+                pc.printf("%02x ", data[x]);
+            }
+            pc.printf("\r\n");
+            
+            if(ADDR_L == 0x00){
+                ADDR_L = 0x80;
+            }
+            else{
+                ADDR_L = 0x00;
+                ADDR_H ++;
+            }
+        }
+    }
+    /*
+    while(1) {
+        if(pc.readable()){
+            int c = pc.getc();
+            pc.printf("Input: %c\r\n", c);
+            setEEPROMGroup(c-48);
+        }
+    }
+    */
+}
+
+void setEEPROMGroup(int group_num){
+    switch(group_num){
+        case 0:
+        pinA = 0;
+        pinB = 0;
+        pinC = 0;
+        break;
+        
+        case 1:
+        pinA = 1;
+        pinB = 0;
+        pinC = 0;
+        break;
+        
+        case 2:
+        pinA = 0;
+        pinB = 1;
+        pinC = 0;
+        break;
+        
+        case 3:
+        pinA = 1;
+        pinB = 1;
+        pinC = 0;
+        break;
+    }
+}