EEPROM Multiplexer test

Dependencies:   mbed EEPROM_lib

Committer:
imadaemi
Date:
Sun May 23 06:46:00 2021 +0000
Revision:
0:659448bed797
Child:
1:de11b189ee57
EEPROM MultiPlexer test

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
imadaemi 0:659448bed797 15 while(1) {
imadaemi 0:659448bed797 16 if(pc.readable()){
imadaemi 0:659448bed797 17 int c = pc.getc();
imadaemi 0:659448bed797 18 pc.printf("Input: %c\r\n", c);
imadaemi 0:659448bed797 19 if(c == '7'){
imadaemi 0:659448bed797 20 break;
imadaemi 0:659448bed797 21 }
imadaemi 0:659448bed797 22 }
imadaemi 0:659448bed797 23 }
imadaemi 0:659448bed797 24
imadaemi 0:659448bed797 25 int ptr, n = 0;
imadaemi 0:659448bed797 26 for(int ii = 0; ii < 2; ii ++){
imadaemi 0:659448bed797 27 pc.printf("Start to write %d EEPROM\r\n",ii);
imadaemi 0:659448bed797 28 setEEPROMGroup(ii);
imadaemi 0:659448bed797 29 EEPROM.setWriteAddr(1, 0, 0x00, 0x00);
imadaemi 0:659448bed797 30 while(1){
imadaemi 0:659448bed797 31 while(1){
imadaemi 0:659448bed797 32 ptr = EEPROM.chargeBuff((int)n++);
imadaemi 0:659448bed797 33 if(ptr == 128){
imadaemi 0:659448bed797 34 EEPROM.writeBuff();
imadaemi 0:659448bed797 35 ptr = EEPROM.setNextPage();
imadaemi 0:659448bed797 36 break;
imadaemi 0:659448bed797 37 }
imadaemi 0:659448bed797 38 }
imadaemi 0:659448bed797 39 if(ptr == 0x01000000){
imadaemi 0:659448bed797 40 ptr = 0;
imadaemi 0:659448bed797 41 break;
imadaemi 0:659448bed797 42 }
imadaemi 0:659448bed797 43 }
imadaemi 0:659448bed797 44 }
imadaemi 0:659448bed797 45
imadaemi 0:659448bed797 46
imadaemi 0:659448bed797 47 char data[128];
imadaemi 0:659448bed797 48 int num, block;
imadaemi 0:659448bed797 49 char ADDR_H, ADDR_L;
imadaemi 0:659448bed797 50
imadaemi 0:659448bed797 51 num = 1;
imadaemi 0:659448bed797 52 block = 0;
imadaemi 0:659448bed797 53 ADDR_H = ADDR_L = 0x00;
imadaemi 0:659448bed797 54
imadaemi 0:659448bed797 55 setEEPROMGroup(0);
imadaemi 0:659448bed797 56
imadaemi 0:659448bed797 57 for(int j = 0; j < 2; j ++){
imadaemi 0:659448bed797 58 pc.printf("Start to read %d EEPROM\r\n",j);
imadaemi 0:659448bed797 59 setEEPROMGroup(j);
imadaemi 0:659448bed797 60 for(int i = 0; i < 1024; i ++){
imadaemi 0:659448bed797 61 switch(i){
imadaemi 0:659448bed797 62 case 512:
imadaemi 0:659448bed797 63 num = 1;
imadaemi 0:659448bed797 64 block = 1;
imadaemi 0:659448bed797 65 break;
imadaemi 0:659448bed797 66
imadaemi 0:659448bed797 67 case 1024:
imadaemi 0:659448bed797 68 num = 2;
imadaemi 0:659448bed797 69 block = 0;
imadaemi 0:659448bed797 70 break;
imadaemi 0:659448bed797 71 }
imadaemi 0:659448bed797 72
imadaemi 0:659448bed797 73 EEPROM.readMultiByte(num, block, ADDR_H, ADDR_L, data, 128);
imadaemi 0:659448bed797 74 for(int x = 0; x < 128; x ++){
imadaemi 0:659448bed797 75 pc.printf("%02x ", data[x]);
imadaemi 0:659448bed797 76 }
imadaemi 0:659448bed797 77 pc.printf("\r\n");
imadaemi 0:659448bed797 78
imadaemi 0:659448bed797 79 if(ADDR_L == 0x00){
imadaemi 0:659448bed797 80 ADDR_L = 0x80;
imadaemi 0:659448bed797 81 }
imadaemi 0:659448bed797 82 else{
imadaemi 0:659448bed797 83 ADDR_L = 0x00;
imadaemi 0:659448bed797 84 ADDR_H ++;
imadaemi 0:659448bed797 85 }
imadaemi 0:659448bed797 86 }
imadaemi 0:659448bed797 87 }
imadaemi 0:659448bed797 88 /*
imadaemi 0:659448bed797 89 while(1) {
imadaemi 0:659448bed797 90 if(pc.readable()){
imadaemi 0:659448bed797 91 int c = pc.getc();
imadaemi 0:659448bed797 92 pc.printf("Input: %c\r\n", c);
imadaemi 0:659448bed797 93 setEEPROMGroup(c-48);
imadaemi 0:659448bed797 94 }
imadaemi 0:659448bed797 95 }
imadaemi 0:659448bed797 96 */
imadaemi 0:659448bed797 97 }
imadaemi 0:659448bed797 98
imadaemi 0:659448bed797 99 void setEEPROMGroup(int group_num){
imadaemi 0:659448bed797 100 switch(group_num){
imadaemi 0:659448bed797 101 case 0:
imadaemi 0:659448bed797 102 pinA = 0;
imadaemi 0:659448bed797 103 pinB = 0;
imadaemi 0:659448bed797 104 pinC = 0;
imadaemi 0:659448bed797 105 break;
imadaemi 0:659448bed797 106
imadaemi 0:659448bed797 107 case 1:
imadaemi 0:659448bed797 108 pinA = 1;
imadaemi 0:659448bed797 109 pinB = 0;
imadaemi 0:659448bed797 110 pinC = 0;
imadaemi 0:659448bed797 111 break;
imadaemi 0:659448bed797 112
imadaemi 0:659448bed797 113 case 2:
imadaemi 0:659448bed797 114 pinA = 0;
imadaemi 0:659448bed797 115 pinB = 1;
imadaemi 0:659448bed797 116 pinC = 0;
imadaemi 0:659448bed797 117 break;
imadaemi 0:659448bed797 118
imadaemi 0:659448bed797 119 case 3:
imadaemi 0:659448bed797 120 pinA = 1;
imadaemi 0:659448bed797 121 pinB = 1;
imadaemi 0:659448bed797 122 pinC = 0;
imadaemi 0:659448bed797 123 break;
imadaemi 0:659448bed797 124 }
imadaemi 0:659448bed797 125 }