PLANET-Q EEPROM Library
Dependents: IZU2020_AVIONICS IZU2020_POST_PROCESS IZU2020_AVIONICS
PQEEPROM.cpp@1:fccbd0a70492, 2019-12-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |