EEPROM with 64kByte Memory

Committer:
x1dmoesc
Date:
Tue Mar 05 09:44:30 2019 +0000
Revision:
4:660801ce718c
Parent:
3:8a0bfc787463
debug function write() and read()

Who changed what in which revision?

UserRevisionLine numberNew contents of line
x1dmoesc 0:1fd82709703d 1 #ifndef AT24C64D_H
x1dmoesc 0:1fd82709703d 2 #define AT24C64D_H
x1dmoesc 0:1fd82709703d 3
x1dmoesc 0:1fd82709703d 4 #include "mbed.h"
x1dmoesc 0:1fd82709703d 5 #include "AT24C.h"
x1dmoesc 0:1fd82709703d 6
x1dmoesc 0:1fd82709703d 7 class AT24C64D : public AT24C
x1dmoesc 0:1fd82709703d 8 {
x1dmoesc 0:1fd82709703d 9
x1dmoesc 0:1fd82709703d 10 public:
x1dmoesc 0:1fd82709703d 11 static const uint16_t ADDR_MASK = 0x1FFF;
x1dmoesc 0:1fd82709703d 12
x1dmoesc 0:1fd82709703d 13 //variable
x1dmoesc 0:1fd82709703d 14 bool bAck;
x1dmoesc 3:8a0bfc787463 15 static const uint16_t READY_TIME_US = 5000; // Write time in us
x1dmoesc 3:8a0bfc787463 16 static const uint16_t READY_TIME_MS = 5;
x1dmoesc 0:1fd82709703d 17
x1dmoesc 0:1fd82709703d 18
x1dmoesc 0:1fd82709703d 19 // function
x1dmoesc 0:1fd82709703d 20 AT24C64D(I2C *_i2c, uint8_t uiAddr);
x1dmoesc 4:660801ce718c 21 virtual uint8_t getAddrBus();
x1dmoesc 4:660801ce718c 22 virtual uint8_t getAddrUser();
x1dmoesc 1:3ccf1b297b4f 23
x1dmoesc 3:8a0bfc787463 24 virtual bool write(char * cData);
x1dmoesc 3:8a0bfc787463 25 virtual bool write(uint16_t uiAddr, char *cData);
x1dmoesc 3:8a0bfc787463 26 virtual bool write(uint16_t uiAddr, char * cData, uint16_t uiLength);
x1dmoesc 3:8a0bfc787463 27
x1dmoesc 3:8a0bfc787463 28
x1dmoesc 3:8a0bfc787463 29 virtual bool read(char * cData);
x1dmoesc 3:8a0bfc787463 30 virtual bool read(uint16_t uiAddr, char *cData);
x1dmoesc 1:3ccf1b297b4f 31 virtual bool read(uint16_t uiAddr, char * cData, uint16_t uiLength);
x1dmoesc 0:1fd82709703d 32
x1dmoesc 0:1fd82709703d 33 virtual void reset();
x1dmoesc 3:8a0bfc787463 34 virtual bool erase();
x1dmoesc 0:1fd82709703d 35 virtual bool isReady();
x1dmoesc 0:1fd82709703d 36
x1dmoesc 3:8a0bfc787463 37
x1dmoesc 3:8a0bfc787463 38
x1dmoesc 0:1fd82709703d 39 virtual void setAddrWrite(uint16_t Addr);
x1dmoesc 0:1fd82709703d 40 virtual uint16_t getAddrWrite();
x1dmoesc 0:1fd82709703d 41 virtual void incAddrWrite();
x1dmoesc 0:1fd82709703d 42 virtual void decAddrWrite();
x1dmoesc 0:1fd82709703d 43
x1dmoesc 0:1fd82709703d 44
x1dmoesc 0:1fd82709703d 45 virtual void setAddrRead(uint16_t Addr);
x1dmoesc 0:1fd82709703d 46 virtual uint16_t getAddrRead();
x1dmoesc 0:1fd82709703d 47 virtual void incAddrRead();
x1dmoesc 0:1fd82709703d 48 virtual void decAddrRead();
x1dmoesc 0:1fd82709703d 49
x1dmoesc 0:1fd82709703d 50
x1dmoesc 0:1fd82709703d 51 private:
x1dmoesc 0:1fd82709703d 52
x1dmoesc 0:1fd82709703d 53 // constants
x1dmoesc 0:1fd82709703d 54
x1dmoesc 0:1fd82709703d 55 const uint8_t AT24C64D_W;
x1dmoesc 0:1fd82709703d 56 const uint8_t AT24C64D_R;
x1dmoesc 0:1fd82709703d 57 static const int HARD_ADDR = 0xA0;
x1dmoesc 0:1fd82709703d 58 static const int USER_ADDR_MASK = 0x07;
x1dmoesc 0:1fd82709703d 59
x1dmoesc 0:1fd82709703d 60
x1dmoesc 3:8a0bfc787463 61
x1dmoesc 0:1fd82709703d 62 static const uint8_t SIZE_PAGE = 32; // 32-Byte Page Write Mode (Partial Page Writes Allowed)
x1dmoesc 0:1fd82709703d 63 static const uint16_t MEM_ADDR_MAX = 8192; // 0...4095
x1dmoesc 1:3ccf1b297b4f 64 static const uint16_t TIMEOUT_VAL = 1000;
x1dmoesc 0:1fd82709703d 65
x1dmoesc 0:1fd82709703d 66 // variable
x1dmoesc 0:1fd82709703d 67 bool bReady;
x1dmoesc 2:7efbd43bfe7c 68 bool bTimerRun;
x1dmoesc 1:3ccf1b297b4f 69 uint16_t uiTimeOut;
x1dmoesc 0:1fd82709703d 70
x1dmoesc 0:1fd82709703d 71 uint16_t uiAddrWrite;
x1dmoesc 0:1fd82709703d 72 uint16_t uiAddrRead;
x1dmoesc 0:1fd82709703d 73 uint16_t uiAddrTemp;
x1dmoesc 0:1fd82709703d 74
x1dmoesc 0:1fd82709703d 75 uint8_t uiAddrQuotient; //
x1dmoesc 0:1fd82709703d 76 uint8_t uiAddrRemainder; //
x1dmoesc 0:1fd82709703d 77
x1dmoesc 4:660801ce718c 78 char cBuffer[2 + SIZE_PAGE]; // 2 Address Bytes + 32 Byte Data
x1dmoesc 0:1fd82709703d 79
x1dmoesc 0:1fd82709703d 80 // Class
x1dmoesc 0:1fd82709703d 81 I2C *i2c;
x1dmoesc 2:7efbd43bfe7c 82 Timer *timer;
x1dmoesc 0:1fd82709703d 83
x1dmoesc 0:1fd82709703d 84
x1dmoesc 0:1fd82709703d 85 // functions
x1dmoesc 2:7efbd43bfe7c 86 //virtual void setReady();
x1dmoesc 2:7efbd43bfe7c 87 void startTimer();
x1dmoesc 2:7efbd43bfe7c 88 bool ACKpolling(uint8_t uiAdr);
x1dmoesc 2:7efbd43bfe7c 89 //virtual void abortTransmition();
x1dmoesc 0:1fd82709703d 90
x1dmoesc 0:1fd82709703d 91 };
x1dmoesc 0:1fd82709703d 92
x1dmoesc 0:1fd82709703d 93 #endif