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

Dependents:   EEPROM_Reset_Program EEPROM_Encode_Program SWAN_IZU2019_v1 Hybrid_OB2021_eeprom ... more

EEPROM_lib.h

Committer:
Sigma884
Date:
2019-02-11
Revision:
0:a945081a4a9e
Child:
1:66c2c82f4b34

File content as of revision 0:a945081a4a9e:

#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