EEPROM with 64kByte Memory
AT24C64D.h@4:660801ce718c, 2019-03-05 (annotated)
- 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?
| User | Revision | Line number | New 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 |