PLANET-Q EEPROM Library

Dependents:   IZU2020_AVIONICS IZU2020_POST_PROCESS IZU2020_AVIONICS

Committer:
tanahashi
Date:
Tue Dec 17 13:39:59 2019 +0000
Revision:
1:fccbd0a70492
Parent:
0:559c23c5884c
added comment

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tanahashi 0:559c23c5884c 1 #include "mbed.h"
tanahashi 0:559c23c5884c 2 #include "PQEEPROM.h"
tanahashi 0:559c23c5884c 3
tanahashi 0:559c23c5884c 4 EEPROM::EEPROM(I2C &i2c)
tanahashi 0:559c23c5884c 5 {
tanahashi 0:559c23c5884c 6 _i2c = &i2c;
tanahashi 0:559c23c5884c 7 _i2c -> frequency(400000);
tanahashi 0:559c23c5884c 8 }
tanahashi 0:559c23c5884c 9
tanahashi 0:559c23c5884c 10 void EEPROM::write(int addr, char *data, int size)
tanahashi 0:559c23c5884c 11 {
tanahashi 0:559c23c5884c 12 char B0 = (addr >> 16) & 0x01;
tanahashi 0:559c23c5884c 13 char A0 = (addr >> 17) & 0x01;
tanahashi 0:559c23c5884c 14 char A1 = (addr >> 18) & 0x01;
tanahashi 0:559c23c5884c 15 _addr = 0b10100000 | B0 << 3 | A1 << 2 | A0 << 1;
tanahashi 1:fccbd0a70492 16
tanahashi 1:fccbd0a70492 17 if(size > 128) {
tanahashi 0:559c23c5884c 18 size = 128;
tanahashi 0:559c23c5884c 19 }
tanahashi 0:559c23c5884c 20 cmd[0] = (addr >> 8) & 0xFF;
tanahashi 0:559c23c5884c 21 cmd[1] = addr & 0xFF;
tanahashi 1:fccbd0a70492 22 for(int i = 0; i < size; i++) {
tanahashi 0:559c23c5884c 23 cmd[2 + i] = data[i];
tanahashi 0:559c23c5884c 24 }
tanahashi 0:559c23c5884c 25 _i2c -> write(_addr, cmd, 2 + size);
tanahashi 1:fccbd0a70492 26
tanahashi 0:559c23c5884c 27 wait_ms(3);
tanahashi 0:559c23c5884c 28 }
tanahashi 0:559c23c5884c 29
tanahashi 0:559c23c5884c 30 void EEPROM::read(int addr, char *data, int size)
tanahashi 1:fccbd0a70492 31 {
tanahashi 0:559c23c5884c 32 char B0 = (addr >> 16) & 0x01;
tanahashi 0:559c23c5884c 33 char A0 = (addr >> 17) & 0x01;
tanahashi 0:559c23c5884c 34 char A1 = (addr >> 18) & 0x01;
tanahashi 0:559c23c5884c 35 _addr = 0b10100000 | B0 << 3 | A1 << 2 | A0 << 1;
tanahashi 1:fccbd0a70492 36
tanahashi 0:559c23c5884c 37 cmd[0] = (addr >> 8) & 0xFF;
tanahashi 0:559c23c5884c 38 cmd[1] = addr & 0xFF;
tanahashi 1:fccbd0a70492 39
tanahashi 0:559c23c5884c 40 _i2c -> write(_addr, cmd, 2);
tanahashi 0:559c23c5884c 41 _i2c -> read(_addr, buff, size);
tanahashi 1:fccbd0a70492 42
tanahashi 1:fccbd0a70492 43 for(int i = 0; i < size; i++) {
tanahashi 0:559c23c5884c 44 data[i] = buff[i];
tanahashi 0:559c23c5884c 45 }
tanahashi 0:559c23c5884c 46 }