大体24fc1025用
I2CEEPROM.cpp@0:b8909823d506, 2014-12-28 (annotated)
- Committer:
- kb10uy
- Date:
- Sun Dec 28 04:02:46 2014 +0000
- Revision:
- 0:b8909823d506
initial commit;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kb10uy | 0:b8909823d506 | 1 | #include "I2CEEPROM.h" |
kb10uy | 0:b8909823d506 | 2 | |
kb10uy | 0:b8909823d506 | 3 | I2CEEPROM::I2CEEPROM(PinName sda, PinName scl, int address, int freq) : i2c(sda,scl) { |
kb10uy | 0:b8909823d506 | 4 | i2c.frequency(freq); |
kb10uy | 0:b8909823d506 | 5 | memadd = address; |
kb10uy | 0:b8909823d506 | 6 | } |
kb10uy | 0:b8909823d506 | 7 | |
kb10uy | 0:b8909823d506 | 8 | void I2CEEPROM::write(int bank, unsigned short address, const char *data, int count) { |
kb10uy | 0:b8909823d506 | 9 | char *bytes = new char[count+3]; |
kb10uy | 0:b8909823d506 | 10 | bytes[0] = 0xa1 | (bank << 3); |
kb10uy | 0:b8909823d506 | 11 | bytes[1] = address >> 8; |
kb10uy | 0:b8909823d506 | 12 | bytes[2] = address & 0xff; |
kb10uy | 0:b8909823d506 | 13 | for(int i = 0; i < count; i++) bytes[i + 3]=data[i]; |
kb10uy | 0:b8909823d506 | 14 | i2c.start(); |
kb10uy | 0:b8909823d506 | 15 | i2c.write(memadd, bytes, count + 3); |
kb10uy | 0:b8909823d506 | 16 | delete bytes; |
kb10uy | 0:b8909823d506 | 17 | } |
kb10uy | 0:b8909823d506 | 18 | |
kb10uy | 0:b8909823d506 | 19 | void I2CEEPROM::read(int bank, unsigned short address, char *data, int count) { |
kb10uy | 0:b8909823d506 | 20 | char *info = new char[3]; |
kb10uy | 0:b8909823d506 | 21 | info[0] = 0xa1 | (bank << 3); |
kb10uy | 0:b8909823d506 | 22 | info[1] = address >> 8; |
kb10uy | 0:b8909823d506 | 23 | info[2] = address & 0xff; |
kb10uy | 0:b8909823d506 | 24 | i2c.start(); |
kb10uy | 0:b8909823d506 | 25 | i2c.write(memadd, info, count + 3); |
kb10uy | 0:b8909823d506 | 26 | for(int i = 0; i < count; i++) data[i]=i2c.read(i < (count - 1)); |
kb10uy | 0:b8909823d506 | 27 | delete info; |
kb10uy | 0:b8909823d506 | 28 | } |