EEPROM 24LC01 libraly
Diff: EEPROM24LC01.cpp
- Revision:
- 0:9937013783de
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EEPROM24LC01.cpp Sat Jul 29 13:09:33 2017 +0000 @@ -0,0 +1,58 @@ +/* + *************************************************************************** + * File Name : EEPROM24LC01.cpp + * + * Revision : 1.0 + * Notes : + * Target Board : mbed LPC + * + * Revision History: + *************************************************************************** + */ +#include "EEPROM24LC01.h" +#include "mbed.h" + +EEPROM24LC01::EEPROM24LC01(I2C *i2c, const int address): + _i2c_address(address<<1), _i2c(i2c) +{ +} + +int EEPROM24LC01::byte8_write(char *data) +{ + int res; + char buf[9]; + int i = 0; + + buf[0] = 0; // Address + + for(i=0;i<8;++i){ + buf[i+1] = data[i]; + } +/* buf[1] = data[0]; + buf[2] = data[1]; + buf[3] = data[2]; + buf[4] = data[3]; + buf[5] = data[4]; + buf[6] = data[5]; + buf[7] = data[6]; + buf[8] = data[7]; +*/ + res = _i2c->write(_i2c_address, buf, sizeof(buf), false); + + wait_ms(5); // 5mS + + return res; +} + + +int EEPROM24LC01::readAll( char *data, int size ) +{ + int res; + char buf[1]; + + buf[0] = 0; // Read Address High byte set + res = _i2c->write(_i2c_address, buf, sizeof(buf), true); + res = _i2c->read(_i2c_address, (char *)data, size, false); + + return res; +}