TI BQ27220 I2C based, battery State of Charge and Coulomb Counter
Fork of bq27210 by
bq27210.h
- Committer:
- loopsva
- Date:
- 2017-06-13
- Revision:
- 0:96d5698a376f
- Child:
- 1:ab433d7c3e30
File content as of revision 0:96d5698a376f:
#ifndef MBED_BQ27210 #define MBED_BQ27210 #define BQ_SHUNT_RESISTOR 20 // 0.020 ohms * 1000 // Set data into "addr" #define BQ27210_ADDR 0xAA // read/write registers RAM #define BQ_CRTL 0x00 #define BQ_MODE 0x01 #define BQ_AR 0x02 #define BQ_AR_LO 0x02 #define BQ_AR_HI 0x03 // read only registers RAM #define BQ_ARTTE 0x04 #define BQ_ARTTE_LO 0x04 #define BQ_ARTTE_HI 0x05 #define BQ_TEMP 0x06 #define BQ_TEMP_LO 0x06 #define BQ_TEMP_HI 0x07 #define BQ_VOLT 0x08 #define BQ_VOLT_LO 0x08 #define BQ_VOLT_HI 0x09 #define BQ_FLAGS 0x0A #define BQ_RSOC 0x0B #define BQ_NAC 0x0C #define BQ_NAC_LO 0x0C #define BQ_NAC_HI 0x0D #define BQ_LMD 0x0E #define BQ_LMD_LO 0x0E #define BQ_LMD_HI 0x0F #define BQ_CAC 0x10 #define BQ_CAC_LO 0x10 #define BQ_CAC_HI 0x11 #define BQ_FCAC 0x12 #define BQ_FCAC_LO 0x12 #define BQ_FCAC_HI 0x13 #define BQ_AI 0x14 #define BQ_AI_LO 0x14 #define BQ_AI_HI 0x15 #define BQ_TTE 0x16 #define BQ_TTE_LO 0x16 #define BQ_TTE_HI 0x17 #define BQ_TTF 0x18 #define BQ_TTF_LO 0x18 #define BQ_TTF_HI 0x19 #define BQ_SI 0x1A #define BQ_SI_LO 0x1A #define BQ_SI_HI 0x1B #define BQ_STTE 0x1C #define BQ_STTE_LO 0x1C #define BQ_STTE_HI 0x1D #define BQ_CEDV 0x20 #define BQ_CEDV_LO 0x20 #define BQ_CEDV_HI 0x21 #define BQ_TTECP 0x26 #define BQ_TTECP_LO 0x26 #define BQ_TTECP_HI 0x27 #define BQ_CYCL 0x28 #define BQ_CYCL_LO 0x28 #define BQ_CYCL_HI 0x29 #define BQ_CYCT 0x2A #define BQ_CYCT_LO 0x2A #define BQ_CYCT_HI 0x2B #define BQ_CSOC 0x2C // read/write registers EEPROM #define BQ_EE_EN 0x6E #define BQ_ILMD 0x76 #define BQ_SEDVF 0x77 #define BQ_SEDV1 0x78 #define BQ_ISLC_EDVT 0x79 #define BQ_DMFSD 0x7A #define BQ_TAPER 0x7B #define BQ_PKCFG 0x7C #define BQ_GAF_DEDV 0x7D #define BQ_DCOMP 0x7E #define BQ_TCOMP 0x7F // CNTL and MODE bit equates #define BQ_COMMAND_0xA9 0xA9 #define BQ_COMMAND_0x56 0x56 #define BQ_COMMAND_0xC5 0xC5 #define BQ_BIT_GPIEN 0x80 #define BQ_BIT_GPSTAT 0x40 #define BQ_BIT_INIT 0x04 #define BQ_BIT_WRTNAC 0x20 #define BQ_BIT_CEO 0x20 #define BQ_BIT_UPDC 0x20 #define BQ_BIT_DONE 0x10 #define BQ_BIT_CIO 0x10 #define BQ_BIT_UPEDVI 0x10 #define BQ_BIT_PRST 0x08 #define BQ_BIT_WNACCI 0x08 #define BQ_BIT_UPDMF 0x08 #define BQ_BIT_FRST 0x02 #define BQ_BIT_WRTCYC 0x02 #define BQ_BIT_UPCFG 0x02 #define BQ_BIT_SHIP 0x01 #define BQ_BIT_WRTLMD 0x01 #define BQ_BIT_UPCOMP 0x01 // FLAGS register bit equates #define BQ_BIT_CHGS 0x80 #define BQ_BIT_NOACT 0x40 #define BQ_BIT_IMIN 0x20 #define BQ_BIT_CI 0x10 #define BQ_BIT_CALIP 0x08 #define BQ_BIT_VDQ 0x04 #define BQ_BIT_EDVI 0x02 #define BQ_BIT_EDVF 0x01 class BQ27210 { public: /** * Data structure for BQ27210 data values. * **/ typedef struct { uint8_t cntlReg; /*!< CNTL register */ uint8_t modeReg; /*!< MODE register */ uint16_t arReg; /*!< AR register */ uint16_t artteReg; /*!< ARTTE register */ uint16_t tempReg; /*!< TEMP register */ uint16_t voltReg; /*!< VOLT register */ uint8_t flagsReg; /*!< FLAGS register */ uint8_t rsocReg; /*!< RSOC register */ uint16_t nacReg; /*!< NAC register */ uint16_t lmdReg; /*!< LMD register */ uint16_t cacReg; /*!< CAC register */ uint16_t fcacReg; /*!< FCAC register */ uint16_t aiReg; /*!< AI register */ uint16_t tteReg; /*!< TTE register */ uint16_t ttfReg; /*!< TTF register */ uint16_t siReg; /*!< SI register */ uint16_t stteReg; /*!< STTE register */ uint16_t junk1; /*!< reserved */ uint16_t cedvReg; /*!< CEDV register */ uint16_t junk2; /*!< reserved */ uint16_t junk3; /*!< reserved */ uint16_t ttecpReg; /*!< TTECP register */ uint16_t cyclReg; /*!< CYCL register */ uint16_t cyctReg; /*!< CYCT register */ uint8_t csocReg; /*!< CSOC register */ /*!< big gap */ uint8_t eeEnReg; /*!< EE_EN register */ /*!< big gap */ uint8_t ilmdReg; /*!< ILMD register */ uint8_t sedvfReg; /*!< SEDVF register */ uint8_t sedv1Reg; /*!< SEDV1 register */ uint8_t islcEdvtReg; /*!< ISLC/EDVT register */ uint8_t dmfsdReg; /*!< DMFSD register */ uint8_t taperReg; /*!< TAPER register */ uint8_t pkcfgReg; /*!< PKCFG register */ uint8_t gafDedvReg; /*!< GAF/DEDV register */ uint8_t dcompReg; /*!< DCOMP register */ uint8_t tcompReg; /*!< TCOMP register */ int16_t shunt_res; /*!< Shunt Resistor value * 1000, 20 = 0.020 ohm */ char i2c_Bufx[48]; /*!< i2c buffer */ } BQ27210_TypeDef; /** Configure data pin * @param data SDA and SCL pins **/ BQ27210(PinName p_sda, PinName p_scl); /** Read all bq registers and put them into the data structure * @param none * @return i2c error, 0 = no error */ int read_registers(BQ27210_TypeDef& dataSTR); /** Read all bq EEPROM registers and put them into the data structure * @param none * @return i2c error, 0 = no error */ int read_eep_registers(BQ27210_TypeDef& dataSTR); private: //char i2c_Buf[48]; /* i2c buffer */ protected: I2C _i2c; }; #endif // MBED_BQ27210