From f4b31b88508892ca781ebb14716dc322e868b6db Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 8 Aug 2018 15:45:32 +0200 Subject: Add 24LC64 EEPROM driver --- src/driver/eeprom24lc64.cc | 26 ++++++++++++++++++++++++++ src/driver/soft_i2c.cc | 2 ++ 2 files changed, 28 insertions(+) create mode 100644 src/driver/eeprom24lc64.cc (limited to 'src/driver') diff --git a/src/driver/eeprom24lc64.cc b/src/driver/eeprom24lc64.cc new file mode 100644 index 0000000..745514b --- /dev/null +++ b/src/driver/eeprom24lc64.cc @@ -0,0 +1,26 @@ +#include +#include "driver/eeprom24lc64.h" +#if defined(MULTIPASS_ARCH_HAS_I2C) && !defined(DRIVER_SOFTI2C) +#include "driver/i2c.h" +#else +#include "driver/soft_i2c.h" +#endif + +void EEPROM24LC64::readPage(unsigned short addr, char *data) +{ + txbuf[0] = addr >> 8; + txbuf[1] = addr & 0x00ff; + i2c.xmit(address, 2, txbuf, 32, (unsigned char *)data); +} + +void EEPROM24LC64::writePage(unsigned short addr, char *data) +{ + txbuf[0] = addr >> 8; + txbuf[1] = addr & 0x00ff; + for (unsigned char i = 0; i < 32; i++) { + txbuf[i+2] = data[i]; + } + i2c.xmit(address, 34, txbuf, 0, NULL); +} + +EEPROM24LC64 eeprom24lc64(0x50); diff --git a/src/driver/soft_i2c.cc b/src/driver/soft_i2c.cc index cebd8be..33f77ab 100644 --- a/src/driver/soft_i2c.cc +++ b/src/driver/soft_i2c.cc @@ -140,6 +140,8 @@ signed char SoftI2C::xmit(unsigned char address, SoftI2C i2c(GPIO::d7, GPIO::d8); #elif MULTIPASS_ARCH_arduino_nano SoftI2C i2c(GPIO::pc4, GPIO::pc5); +#elif MULTIPASS_ARCH_blinkenrocket +SoftI2C i2c(GPIO::pc4, GPIO::pc5); #elif MULTIPASS_ARCH_msp430fr5969lp SoftI2C i2c(GPIO::p1_6, GPIO::p1_7); #endif -- cgit v1.2.3