I2C Slave device. Mimics the 24LC256 in a very limited way (no addressing)
Fork of I2CSlave by
main.cpp@4:d1d5a02cc721, 2015-03-25 (annotated)
- Committer:
- bridadan
- Date:
- Wed Mar 25 19:53:10 2015 +0000
- Revision:
- 4:d1d5a02cc721
- Parent:
- 3:1bb80997f316
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bridadan | 4:d1d5a02cc721 | 1 | // 24LC256 I2C EEPROM mock device |
bridadan | 4:d1d5a02cc721 | 2 | // Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/20001203U.pdf |
bridadan | 4:d1d5a02cc721 | 3 | |
Kit1 | 2:42d461c96301 | 4 | #include <mbed.h> |
bridadan | 4:d1d5a02cc721 | 5 | |
bridadan | 4:d1d5a02cc721 | 6 | #define BUFF_SIZE 10 |
bridadan | 4:d1d5a02cc721 | 7 | |
bridadan | 4:d1d5a02cc721 | 8 | I2CSlave slave(p28, p27); |
Kit1 | 2:42d461c96301 | 9 | |
Kit1 | 2:42d461c96301 | 10 | int main() { |
bridadan | 4:d1d5a02cc721 | 11 | char buf[BUFF_SIZE]; // Only up to 10 bytes (8 bytes max sequential write) |
bridadan | 4:d1d5a02cc721 | 12 | slave.frequency(400000); |
bridadan | 4:d1d5a02cc721 | 13 | slave.address(0xA0); |
bridadan | 4:d1d5a02cc721 | 14 | |
bridadan | 4:d1d5a02cc721 | 15 | printf("Starting on address 0xA0\r\n"); |
bridadan | 4:d1d5a02cc721 | 16 | |
bridadan | 4:d1d5a02cc721 | 17 | while (1) { |
bridadan | 4:d1d5a02cc721 | 18 | int i = slave.receive(); |
bridadan | 4:d1d5a02cc721 | 19 | switch (i) { |
bridadan | 4:d1d5a02cc721 | 20 | case I2CSlave::ReadAddressed: |
bridadan | 4:d1d5a02cc721 | 21 | slave.write(buf + 2, 8); // buf[0 - 1] are just the address bytes (ignoring them) |
bridadan | 4:d1d5a02cc721 | 22 | break; |
bridadan | 4:d1d5a02cc721 | 23 | |
bridadan | 4:d1d5a02cc721 | 24 | case I2CSlave::WriteGeneral: |
bridadan | 4:d1d5a02cc721 | 25 | slave.read(buf, BUFF_SIZE); |
bridadan | 4:d1d5a02cc721 | 26 | break; |
bridadan | 4:d1d5a02cc721 | 27 | |
bridadan | 4:d1d5a02cc721 | 28 | case I2CSlave::WriteAddressed: |
bridadan | 4:d1d5a02cc721 | 29 | slave.read(buf, BUFF_SIZE); |
bridadan | 4:d1d5a02cc721 | 30 | break; |
Kit1 | 2:42d461c96301 | 31 | } |
bridadan | 4:d1d5a02cc721 | 32 | } |
Kit1 | 2:42d461c96301 | 33 | } |