IZU2020 / PQEEPROM

Dependents:   IZU2020_AVIONICS IZU2020_POST_PROCESS IZU2020_AVIONICS

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PQEEPROM.cpp Source File

PQEEPROM.cpp

00001 #include "mbed.h"
00002 #include "PQEEPROM.h"
00003 
00004 EEPROM::EEPROM (I2C &i2c)
00005 {
00006     _i2c = &i2c;
00007     _i2c -> frequency(400000);
00008 }
00009 
00010 void EEPROM::write(int addr, char *data, int size)
00011 {
00012     char B0 = (addr >> 16) & 0x01;
00013     char A0 = (addr >> 17) & 0x01;
00014     char A1 = (addr >> 18) & 0x01;
00015     _addr = 0b10100000 | B0 << 3 | A1 << 2 | A0 << 1;
00016 
00017     if(size > 128) {
00018         size = 128;
00019     }
00020     cmd[0] = (addr >> 8) & 0xFF;
00021     cmd[1] = addr & 0xFF;
00022     for(int i = 0; i < size; i++) {
00023         cmd[2 + i] = data[i];
00024     }
00025     _i2c -> write(_addr, cmd, 2 + size);
00026 
00027     wait_ms(3);
00028 }
00029 
00030 void EEPROM::read(int addr, char *data, int size)
00031 {
00032     char B0 = (addr >> 16) & 0x01;
00033     char A0 = (addr >> 17) & 0x01;
00034     char A1 = (addr >> 18) & 0x01;
00035     _addr = 0b10100000 | B0 << 3 | A1 << 2 | A0 << 1;
00036 
00037     cmd[0] = (addr >> 8) & 0xFF;
00038     cmd[1] = addr & 0xFF;
00039 
00040     _i2c -> write(_addr, cmd, 2);
00041     _i2c -> read(_addr, buff, size);
00042 
00043     for(int i = 0; i < size; i++) {
00044         data[i] = buff[i];
00045     }
00046 }