1Mbit EEPROMを便利に使うためのライブラリ
Dependents: EEPROM_Reset_Program EEPROM_Encode_Program SWAN_IZU2019_v1 Hybrid_OB2021_eeprom ... more
Diff: EEPROM_lib.h
- Revision:
- 0:a945081a4a9e
- Child:
- 1:66c2c82f4b34
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EEPROM_lib.h Mon Feb 11 15:41:56 2019 +0000 @@ -0,0 +1,71 @@ +#ifndef EEPROM_LIB_H_ +#define EEPROM_LIB_H_ + +#define EEPROM_ADDR_00_0 0xA0 +#define EEPROM_ADDR_00_1 0xA8 + +#define EEPROM_ADDR_01_0 0xA2 +#define EEPROM_ADDR_01_1 0xAA + +#define EEPROM_ADDR_10_0 0xA4 +#define EEPROM_ADDR_10_1 0xAC + +#define EEPROM_ADDR_11_0 0xA6 +#define EEPROM_ADDR_11_1 0xAE + +#define EEPROM_WAIT_US 2500 + + +class EEPROM_lib{ + public: + + EEPROM_lib(I2C &user_i2c, int num); + + void writeByte(int num, int block, char ADDR_H, char ADDR_L, char DATA); + void writePage(int num, int block, char ADDR_H, char ADDR_L, char *DATA); + + void setWriteAddr(int num, int block, char ADDR_H, char ADDR_L); + + int chargeBuff(char DATA); + int chargeBuff(bool DATA); + int chargeBuff(int DATA); + int chargeBuff(short DATA); + int chargeBuff(long long DATA); + int chargeBuff(float DATA); + int chargeBuff(double DATA); + + void writeBuff(); + + int setNextPage(); + + char readByte(int num, int block, char ADDR_H, char ADDR_L); + void readMultiByte(int num, int block, char ADDR_H, char ADDR_L, char *DATA, int size); + + + private: + I2C *i2c; + char slave; + + union EEPROM_CAST{ + long long ll; + int i; + short s; + float f; + double d; + char c; + bool b; + char cast[8]; + }; + union EEPROM_CAST EEPROM_cast; + + char cmd[130]; //I2C通信用コマンド配列 + //int max_ptr; //最大どこまで書き込めるか + int max_num; + + int buff_ptr; //バッファの何個目まで入っているか + //int eeprom_ptr; //いまどこまで書き込んでいるか + + char ptr[4]; +}; + +#endif \ No newline at end of file