1Mbit EEPROMを便利に使うためのライブラリ

Dependents:   EEPROM_Reset_Program EEPROM_Encode_Program SWAN_IZU2019_v1 Hybrid_OB2021_eeprom ... more

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