TI BQ27220 I2C based, battery State of Charge and Coulomb Counter
Fork of bq27210 by
bq27220.h@3:1b12fa9dc673, 2017-07-31 (annotated)
- Committer:
- loopsva
- Date:
- Mon Jul 31 19:12:28 2017 +0000
- Revision:
- 3:1b12fa9dc673
- Parent:
- 2:d52fb7ef7429
Working code. On hold for now. Moving to BQ34Z100-G1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
loopsva | 2:d52fb7ef7429 | 1 | #ifndef MBED_BQ27220 |
loopsva | 2:d52fb7ef7429 | 2 | #define MBED_BQ27220 |
loopsva | 0:96d5698a376f | 3 | |
loopsva | 2:d52fb7ef7429 | 4 | #define BQ_SHUNT_RESISTOR 10 // 0.010 ohms * 1000 |
loopsva | 0:96d5698a376f | 5 | |
loopsva | 0:96d5698a376f | 6 | // Set data into "addr" |
loopsva | 2:d52fb7ef7429 | 7 | #define BQ27220_ADDR 0xAA |
loopsva | 0:96d5698a376f | 8 | |
loopsva | 2:d52fb7ef7429 | 9 | // Standard Commands |
loopsva | 2:d52fb7ef7429 | 10 | #define BQ_CNTL 0x00 |
loopsva | 2:d52fb7ef7429 | 11 | #define BQ_AR 0x02 |
loopsva | 0:96d5698a376f | 12 | #define BQ_ARTTE 0x04 |
loopsva | 0:96d5698a376f | 13 | #define BQ_TEMP 0x06 |
loopsva | 0:96d5698a376f | 14 | #define BQ_VOLT 0x08 |
loopsva | 0:96d5698a376f | 15 | #define BQ_FLAGS 0x0A |
loopsva | 2:d52fb7ef7429 | 16 | #define BQ_CURRENT 0x0C |
loopsva | 2:d52fb7ef7429 | 17 | |
loopsva | 2:d52fb7ef7429 | 18 | #define BQ_RM 0x10 |
loopsva | 2:d52fb7ef7429 | 19 | #define BQ_FCC 0x12 |
loopsva | 0:96d5698a376f | 20 | #define BQ_AI 0x14 |
loopsva | 0:96d5698a376f | 21 | #define BQ_TTE 0x16 |
loopsva | 0:96d5698a376f | 22 | #define BQ_TTF 0x18 |
loopsva | 0:96d5698a376f | 23 | #define BQ_SI 0x1A |
loopsva | 0:96d5698a376f | 24 | #define BQ_STTE 0x1C |
loopsva | 2:d52fb7ef7429 | 25 | #define BQ_MLI 0x1E |
loopsva | 2:d52fb7ef7429 | 26 | |
loopsva | 2:d52fb7ef7429 | 27 | #define BQ_MLTTE 0x20 |
loopsva | 2:d52fb7ef7429 | 28 | #define BQ_RCC 0x22 |
loopsva | 2:d52fb7ef7429 | 29 | #define BQ_AP 0x24 |
loopsva | 2:d52fb7ef7429 | 30 | |
loopsva | 2:d52fb7ef7429 | 31 | #define BQ_INTTEMP 0x28 |
loopsva | 2:d52fb7ef7429 | 32 | #define BQ_CYC 0x2A |
loopsva | 2:d52fb7ef7429 | 33 | #define BQ_SOC 0x2C |
loopsva | 2:d52fb7ef7429 | 34 | #define BQ_SOH 0x2E |
loopsva | 2:d52fb7ef7429 | 35 | |
loopsva | 2:d52fb7ef7429 | 36 | #define BQ_CV 0x30 |
loopsva | 2:d52fb7ef7429 | 37 | #define BQ_CC 0x32 |
loopsva | 2:d52fb7ef7429 | 38 | #define BQ_BTPD 0x34 |
loopsva | 2:d52fb7ef7429 | 39 | #define BQ_BTPC 0x36 |
loopsva | 2:d52fb7ef7429 | 40 | |
loopsva | 2:d52fb7ef7429 | 41 | #define BQ_OS 0x3A |
loopsva | 2:d52fb7ef7429 | 42 | #define BQ_DC 0x3C |
loopsva | 3:1b12fa9dc673 | 43 | #define BQ_SUB 0x3E |
loopsva | 0:96d5698a376f | 44 | |
loopsva | 2:d52fb7ef7429 | 45 | #define BQ_MACDATA 0x40 |
loopsva | 2:d52fb7ef7429 | 46 | |
loopsva | 2:d52fb7ef7429 | 47 | #define BQ_MACDATASUM 0x60 |
loopsva | 2:d52fb7ef7429 | 48 | #define BQ_MACDATALEN 0x61 |
loopsva | 2:d52fb7ef7429 | 49 | |
loopsva | 2:d52fb7ef7429 | 50 | #define BQ_ANACNT 0x79 |
loopsva | 2:d52fb7ef7429 | 51 | #define BQ_RAWC 0x7A |
loopsva | 2:d52fb7ef7429 | 52 | #define BQ_RAWV 0x7C |
loopsva | 2:d52fb7ef7429 | 53 | #define BQ_RAWT 0x7E |
loopsva | 0:96d5698a376f | 54 | |
loopsva | 2:d52fb7ef7429 | 55 | // Sub Commands |
loopsva | 2:d52fb7ef7429 | 56 | #define BQ_CNTL_STAT 0x0000 |
loopsva | 2:d52fb7ef7429 | 57 | #define BQ_DEVICE_NUMBER 0x0001 |
loopsva | 2:d52fb7ef7429 | 58 | #define BQ_FW_VERSION 0x0002 |
loopsva | 3:1b12fa9dc673 | 59 | #define BQ_HW_VERSION 0x0003 |
loopsva | 2:d52fb7ef7429 | 60 | |
loopsva | 2:d52fb7ef7429 | 61 | #define BQ_BOARD_OFFSET 0x0009 |
loopsva | 2:d52fb7ef7429 | 62 | #define BQ_CC_OFFSET 0x000A |
loopsva | 2:d52fb7ef7429 | 63 | #define BQ_CC_OFFSET_SAVE 0x000B |
loopsva | 2:d52fb7ef7429 | 64 | #define BQ_OCV_CMD 0x000C |
loopsva | 2:d52fb7ef7429 | 65 | #define BQ_BAT_INSERT 0x000D |
loopsva | 2:d52fb7ef7429 | 66 | #define BQ_BAT_REMOVE 0x000E |
loopsva | 0:96d5698a376f | 67 | |
loopsva | 2:d52fb7ef7429 | 68 | #define BQ_SET_SNOOZE 0x0013 |
loopsva | 2:d52fb7ef7429 | 69 | #define BQ_CLEAR_SNOOZE 0x0014 |
loopsva | 2:d52fb7ef7429 | 70 | #define BQ_SET_PROFILE_1 0x0015 |
loopsva | 2:d52fb7ef7429 | 71 | #define BQ_SET_PROFILE_2 0x0016 |
loopsva | 2:d52fb7ef7429 | 72 | #define BQ_SET_PROFILE_3 0x0017 |
loopsva | 2:d52fb7ef7429 | 73 | #define BQ_SET_PROFILE_4 0x0018 |
loopsva | 2:d52fb7ef7429 | 74 | #define BQ_SET_PROFILE_5 0x0019 |
loopsva | 2:d52fb7ef7429 | 75 | #define BQ_SET_PROFILE_6 0x001A |
loopsva | 2:d52fb7ef7429 | 76 | |
loopsva | 2:d52fb7ef7429 | 77 | #define BQ_CAL_TOGGLE 0x002D |
loopsva | 0:96d5698a376f | 78 | |
loopsva | 2:d52fb7ef7429 | 79 | #define BQ_SET_SEALED 0x0030 |
loopsva | 2:d52fb7ef7429 | 80 | |
loopsva | 3:1b12fa9dc673 | 81 | #define BQ_RESET 0x0041 |
loopsva | 3:1b12fa9dc673 | 82 | |
loopsva | 3:1b12fa9dc673 | 83 | #define BQ_OP_STATUS 0x0054 |
loopsva | 3:1b12fa9dc673 | 84 | #define BQ_GAUGE_STATUS 0x0056 |
loopsva | 0:96d5698a376f | 85 | |
loopsva | 2:d52fb7ef7429 | 86 | #define BQ_EXIT_CAL 0x0080 |
loopsva | 2:d52fb7ef7429 | 87 | #define BQ_ENTER_CAL 0x0081 |
loopsva | 2:d52fb7ef7429 | 88 | |
loopsva | 2:d52fb7ef7429 | 89 | #define BQ_ENTER_CFG_UPDATE 0x0090 |
loopsva | 2:d52fb7ef7429 | 90 | #define BQ_EXIT_CFG_UPDATE_REINIT 0x0091 |
loopsva | 2:d52fb7ef7429 | 91 | #define BQ_EXIT_CFG_UPDATE 0x0092 |
loopsva | 0:96d5698a376f | 92 | |
loopsva | 2:d52fb7ef7429 | 93 | #define BQ_RETURN_TO_ROM 0x0F00 |
loopsva | 0:96d5698a376f | 94 | |
loopsva | 3:1b12fa9dc673 | 95 | // Configuration parameters |
loopsva | 3:1b12fa9dc673 | 96 | #define BQ_CONFIG_CC_GAIN 0x9184 //float |
loopsva | 3:1b12fa9dc673 | 97 | |
loopsva | 3:1b12fa9dc673 | 98 | #define BQ_CONFIG_CHG_INH_LO 0x91f5 //int16_t |
loopsva | 3:1b12fa9dc673 | 99 | #define BQ_CONFIG_CHG_INH_HI 0x91f7 //int16_t |
loopsva | 3:1b12fa9dc673 | 100 | #define BQ_CONFIG_CHG_INH_HYST 0x91f9 //int16_t |
loopsva | 3:1b12fa9dc673 | 101 | #define BQ_CONFIG_CHG_CURR 0x91fb //int16_t |
loopsva | 3:1b12fa9dc673 | 102 | #define BQ_CONFIG_CHG_VOLT 0x91fd //int16_t |
loopsva | 3:1b12fa9dc673 | 103 | |
loopsva | 3:1b12fa9dc673 | 104 | #define BQ_CONFIG_TAPER_CURR 0x9201 //int16_t |
loopsva | 3:1b12fa9dc673 | 105 | #define BQ_CONFIG_OP_CONFIG_A 0x9206 //uint16_t |
loopsva | 3:1b12fa9dc673 | 106 | #define BQ_CONFIG_OP_CONFIG_B 0x9208 //uint16_t |
loopsva | 3:1b12fa9dc673 | 107 | #define BQ_CONFIG_SOC_DELTA 0x920b //uint8_t |
loopsva | 3:1b12fa9dc673 | 108 | #define BQ_CONFIG_CLK_CTRL 0x920c //uint8_t |
loopsva | 3:1b12fa9dc673 | 109 | #define BQ_CONFIG_IO_CONFIG 0x920d //uint8_t |
loopsva | 3:1b12fa9dc673 | 110 | #define BQ_CONFIG_INIT_DIS_SET 0x920e //int16_t |
loopsva | 3:1b12fa9dc673 | 111 | #define BQ_CONFIG_INIT_CHG_SET 0x9210 //int16_t |
loopsva | 3:1b12fa9dc673 | 112 | #define BQ_CONFIG_DEVICE_TYPE 0x9212 //uint16_t |
loopsva | 3:1b12fa9dc673 | 113 | |
loopsva | 3:1b12fa9dc673 | 114 | #define BQ_CONFIG_SLEEP_CURR 0x9217 //int16_t |
loopsva | 3:1b12fa9dc673 | 115 | #define BQ_CONFIG_BUS_LO_TIME 0x9219 //uint8_t |
loopsva | 3:1b12fa9dc673 | 116 | #define BQ_CONFIG_OC_INH_T_LO 0x921a //int16_t |
loopsva | 3:1b12fa9dc673 | 117 | #define BQ_CONFIG_OC_INH_T_HI 0x921c //int16_t |
loopsva | 3:1b12fa9dc673 | 118 | #define BQ_CONFIG_SLEEP_V_TIME 0x921e //uint8_t |
loopsva | 3:1b12fa9dc673 | 119 | #define BQ_CONFIG_SLEEP_C_TIME 0x921f //uint8_t |
loopsva | 3:1b12fa9dc673 | 120 | |
loopsva | 3:1b12fa9dc673 | 121 | #define BQ_CONFIG_DIS_DET_THRES 0x9228 //int16_t |
loopsva | 3:1b12fa9dc673 | 122 | #define BQ_CONFIG_CHG_DET_THRES 0x922a //int16_t |
loopsva | 3:1b12fa9dc673 | 123 | #define BQ_CONFIG_QUIT_CURR 0x922c //int16_t |
loopsva | 3:1b12fa9dc673 | 124 | #define BQ_CONFIG_DIS_RELAX_TI 0x922e //uint16_t |
loopsva | 3:1b12fa9dc673 | 125 | |
loopsva | 3:1b12fa9dc673 | 126 | #define BQ_CONFIG_CHG_RELAX_TI 0x9230 //uint8_t |
loopsva | 3:1b12fa9dc673 | 127 | #define BQ_CONFIG_QUIT_RELAX_TI 0x9231 //uint8_t |
loopsva | 3:1b12fa9dc673 | 128 | |
loopsva | 3:1b12fa9dc673 | 129 | #define BQ_CONFIG_OT_CHG 0x9232 //int16_t |
loopsva | 3:1b12fa9dc673 | 130 | #define BQ_CONFIG_OT_CHG_TIME 0x9234 //uint8_t |
loopsva | 3:1b12fa9dc673 | 131 | #define BQ_CONFIG_OT_CGH_RECOV 0x9235 //int16_t |
loopsva | 3:1b12fa9dc673 | 132 | #define BQ_CONFIG_OT_DSG 0x9237 //int16_t |
loopsva | 3:1b12fa9dc673 | 133 | #define BQ_CONFIG_OT_DSG_TIME 0x9239 //uint8_t |
loopsva | 3:1b12fa9dc673 | 134 | #define BQ_CONFIG_OT_DSG_RECOV 0x923a //int16_t |
loopsva | 3:1b12fa9dc673 | 135 | #define BQ_CONFIG_INIT_STBY 0x923c //int8_t |
loopsva | 3:1b12fa9dc673 | 136 | |
loopsva | 3:1b12fa9dc673 | 137 | #define BQ_CONFIG_SYSD_S_VTHRS 0x9240 //int16_t |
loopsva | 3:1b12fa9dc673 | 138 | #define BQ_CONFIG_SYSD_S_VTIME 0x9242 //uint8_t |
loopsva | 3:1b12fa9dc673 | 139 | #define BQ_CONFIG_SYSD_C_VTHRS 0x9243 //int16_t |
loopsva | 3:1b12fa9dc673 | 140 | |
loopsva | 3:1b12fa9dc673 | 141 | #define BQ_GG_SMOOTHING_CONFIG 0x9271 //uint8_t |
loopsva | 3:1b12fa9dc673 | 142 | #define BQ_CONFIG_FLAG_CONFIG_A 0x927f //uint16_t |
loopsva | 3:1b12fa9dc673 | 143 | #define BQ_CONFIG_FLAG_CONFIG_B 0x9281 //uint8_t |
loopsva | 3:1b12fa9dc673 | 144 | |
loopsva | 3:1b12fa9dc673 | 145 | #define BQ_CONFIG_BATTERY_ID 0x929a //uint8_t |
loopsva | 3:1b12fa9dc673 | 146 | |
loopsva | 3:1b12fa9dc673 | 147 | // Gas Gauge parameters |
loopsva | 3:1b12fa9dc673 | 148 | #define BQ_GG_CEDVp1_GAUGE_CONF 0x929b //uint16_t |
loopsva | 3:1b12fa9dc673 | 149 | #define BQ_GG_CEDVp1_FULLC_CAP 0x929d //int16_t 15 bits |
loopsva | 3:1b12fa9dc673 | 150 | #define BQ_GG_CEDVp1_DESIGN_CAP 0x929f //int16_t 15 bits |
loopsva | 3:1b12fa9dc673 | 151 | #define BQ_GG_CEDVp1_DESIGN_V 0x92a3 //int16_t 15 bits |
loopsva | 3:1b12fa9dc673 | 152 | #define BQ_GG_CEDVp1_CHG_TERM_V 0x92a5 //int16_t |
loopsva | 3:1b12fa9dc673 | 153 | #define BQ_GG_CEDVp1_EMF 0x92a7 //uint16_t |
loopsva | 3:1b12fa9dc673 | 154 | #define BQ_GG_CEDVp1_C0 0x92a9 //uint16_t |
loopsva | 3:1b12fa9dc673 | 155 | #define BQ_GG_CEDVp1_R0 0x92ab //uint16_t |
loopsva | 3:1b12fa9dc673 | 156 | #define BQ_GG_CEDVp1_T0 0x92ad //uint16_t |
loopsva | 3:1b12fa9dc673 | 157 | #define BQ_GG_CEDVp1_R1 0x92af //uint16_t |
loopsva | 3:1b12fa9dc673 | 158 | #define BQ_GG_CEDVp1_TC 0x92b1 //uint8_t |
loopsva | 3:1b12fa9dc673 | 159 | #define BQ_GG_CEDVp1_C1 0x92b2 //uint8_t |
loopsva | 3:1b12fa9dc673 | 160 | #define BQ_GG_CEDVp1_AGE_FACTOR 0x92b3 //uint8_t |
loopsva | 3:1b12fa9dc673 | 161 | #define BQ_GG_CEDVp1_FIXED_EDV0 0x92b4 //int16_t |
loopsva | 3:1b12fa9dc673 | 162 | #define BQ_GG_CEDVp1_HOLDT_EDV0 0x92b6 //uint8_t |
loopsva | 3:1b12fa9dc673 | 163 | #define BQ_GG_CEDVp1_FIXED_EDV1 0x92b7 //int16_t |
loopsva | 3:1b12fa9dc673 | 164 | #define BQ_GG_CEDVp1_HOLDT_EDV1 0x92b9 //uint8_t |
loopsva | 3:1b12fa9dc673 | 165 | #define BQ_GG_CEDVp1_FIXED_EDV2 0x92ba //int16_t |
loopsva | 3:1b12fa9dc673 | 166 | #define BQ_GG_CEDVp1_HOLDT_EDV2 0x92bc //uint8_t |
loopsva | 3:1b12fa9dc673 | 167 | |
loopsva | 2:d52fb7ef7429 | 168 | // CNTL_STAT register bit equates |
loopsva | 2:d52fb7ef7429 | 169 | #define BQ_BIT_CS_CCA 0x0020 |
loopsva | 2:d52fb7ef7429 | 170 | #define BQ_BIT_CS_BCA 0x0010 |
loopsva | 2:d52fb7ef7429 | 171 | #define BQ_BIT_CS_SNOOZE 0x0008 |
loopsva | 2:d52fb7ef7429 | 172 | #define BQ_BIT_CS_BAT_ID2 0x0004 |
loopsva | 2:d52fb7ef7429 | 173 | #define BQ_BIT_CS_BAT_ID1 0x0002 |
loopsva | 2:d52fb7ef7429 | 174 | #define BQ_BIT_CS_BAT_ID0 0x0001 |
loopsva | 3:1b12fa9dc673 | 175 | #define BQ_BIT_CS_BAT_ID (BQ_BIT_CS_BAT_ID2 | BQ_BIT_CS_BAT_ID1 | BQ_BIT_CS_BAT_ID0) |
loopsva | 0:96d5698a376f | 176 | |
loopsva | 3:1b12fa9dc673 | 177 | // Gauging Status register bit equates |
loopsva | 2:d52fb7ef7429 | 178 | #define BQ_BIT_GS_VDQ 0x8000 |
loopsva | 2:d52fb7ef7429 | 179 | #define BQ_BIT_GS_EDV2 0x4000 |
loopsva | 2:d52fb7ef7429 | 180 | #define BQ_BIT_GS_EDV1 0x2000 |
loopsva | 3:1b12fa9dc673 | 181 | #define BQ_BIT_GS_RSVD1 0x1000 |
loopsva | 3:1b12fa9dc673 | 182 | #define BQ_BIT_GS_RSVD2 0x0800 |
loopsva | 2:d52fb7ef7429 | 183 | #define BQ_BIT_GS_FCCX 0x0400 |
loopsva | 3:1b12fa9dc673 | 184 | #define BQ_BIT_GS_RSVD3 0x0200 |
loopsva | 3:1b12fa9dc673 | 185 | #define BQ_BIT_GS_RSVD4 0x0100 |
loopsva | 2:d52fb7ef7429 | 186 | #define BQ_BIT_GS_CF 0x0080 |
loopsva | 2:d52fb7ef7429 | 187 | #define BQ_BIT_GS_DSG 0x0040 |
loopsva | 2:d52fb7ef7429 | 188 | #define BQ_BIT_GS_EDV 0x0020 |
loopsva | 3:1b12fa9dc673 | 189 | #define BQ_BIT_GS_RSVD5 0x0010 |
loopsva | 2:d52fb7ef7429 | 190 | #define BQ_BIT_GS_TC 0x0008 |
loopsva | 2:d52fb7ef7429 | 191 | #define BQ_BIT_GS_TD 0x0004 |
loopsva | 2:d52fb7ef7429 | 192 | #define BQ_BIT_GS_FC 0x0002 |
loopsva | 2:d52fb7ef7429 | 193 | #define BQ_BIT_GS_FD 0x0001 |
loopsva | 0:96d5698a376f | 194 | |
loopsva | 3:1b12fa9dc673 | 195 | // CEDV Gauging Configuration register bit equates |
loopsva | 3:1b12fa9dc673 | 196 | #define BQ_BIT_GC_SME0 0x1000 |
loopsva | 3:1b12fa9dc673 | 197 | #define BQ_BIT_GC_IGNORE_SD 0x0800 |
loopsva | 3:1b12fa9dc673 | 198 | #define BQ_BIT_GC_FC_FOR_VDQ 0x0400 |
loopsva | 3:1b12fa9dc673 | 199 | #define BQ_BIT_GC_FCC_LIMIT 0x0100 |
loopsva | 3:1b12fa9dc673 | 200 | #define BQ_BIT_GC_FIXED_EDV0 0x0020 |
loopsva | 3:1b12fa9dc673 | 201 | #define BQ_BIT_GC_SC 0x0010 |
loopsva | 3:1b12fa9dc673 | 202 | #define BQ_BIT_GC_EDV_CMP 0x0008 |
loopsva | 3:1b12fa9dc673 | 203 | #define BQ_BIT_GC_CSYNC 0x0002 |
loopsva | 3:1b12fa9dc673 | 204 | #define BQ_BIT_GC_CCT 0x0001 |
loopsva | 0:96d5698a376f | 205 | |
loopsva | 0:96d5698a376f | 206 | // FLAGS register bit equates |
loopsva | 2:d52fb7ef7429 | 207 | #define BQ_BIT_F_FD 0x8000 |
loopsva | 2:d52fb7ef7429 | 208 | #define BQ_BIT_F_OCV_COMP 0x4000 |
loopsva | 2:d52fb7ef7429 | 209 | #define BQ_BIT_F_OCV_FAIL 0x2000 |
loopsva | 2:d52fb7ef7429 | 210 | #define BQ_BIT_F_SLEEP 0x1000 |
loopsva | 2:d52fb7ef7429 | 211 | #define BQ_BIT_F_OTC 0x0800 |
loopsva | 2:d52fb7ef7429 | 212 | #define BQ_BIT_F_OTD 0x0400 |
loopsva | 2:d52fb7ef7429 | 213 | #define BQ_BIT_F_FC 0x0200 |
loopsva | 2:d52fb7ef7429 | 214 | #define BQ_BIT_F_CHGINH 0x0100 |
loopsva | 2:d52fb7ef7429 | 215 | #define BQ_BIT_F_TCA 0x0040 |
loopsva | 2:d52fb7ef7429 | 216 | #define BQ_BIT_F_OCVGD 0x0020 |
loopsva | 2:d52fb7ef7429 | 217 | #define BQ_BIT_F_AUTH_GD 0x0010 |
loopsva | 2:d52fb7ef7429 | 218 | #define BQ_BIT_F_BATTPRES 0x0008 |
loopsva | 2:d52fb7ef7429 | 219 | #define BQ_BIT_F_TDA 0x0004 |
loopsva | 2:d52fb7ef7429 | 220 | #define BQ_BIT_F_SYSDWN 0x0002 |
loopsva | 2:d52fb7ef7429 | 221 | #define BQ_BIT_F_DSG 0x0001 |
loopsva | 0:96d5698a376f | 222 | |
loopsva | 2:d52fb7ef7429 | 223 | // OS register bit equates |
loopsva | 2:d52fb7ef7429 | 224 | #define BQ_BIT_OS_CFGUPDATE 0x0400 |
loopsva | 2:d52fb7ef7429 | 225 | #define BQ_BIT_OS_BTPINT 0x0080 |
loopsva | 2:d52fb7ef7429 | 226 | #define BQ_BIT_OS_SMTH 0x0040 |
loopsva | 2:d52fb7ef7429 | 227 | #define BQ_BIT_OS_INITCOMP 0x0020 |
loopsva | 2:d52fb7ef7429 | 228 | #define BQ_BIT_OS_VDQ 0x0010 |
loopsva | 2:d52fb7ef7429 | 229 | #define BQ_BIT_OS_EDV2 0x0008 |
loopsva | 2:d52fb7ef7429 | 230 | #define BQ_BIT_OS_SEC1 0x0004 |
loopsva | 2:d52fb7ef7429 | 231 | #define BQ_BIT_OS_SEC0 0x0002 |
loopsva | 2:d52fb7ef7429 | 232 | #define BQ_BIT_OS_CALMD 0x0001 |
loopsva | 3:1b12fa9dc673 | 233 | |
loopsva | 3:1b12fa9dc673 | 234 | // Operation Config Reg A bit equates |
loopsva | 3:1b12fa9dc673 | 235 | #define BQ_BIT_OCA_TEMPS 0x8000 |
loopsva | 3:1b12fa9dc673 | 236 | #define BQ_BIT_OCA_RSVD1 0x4000 |
loopsva | 3:1b12fa9dc673 | 237 | #define BQ_BIT_OCA_BATG_POL 0x2000 |
loopsva | 3:1b12fa9dc673 | 238 | #define BQ_BIT_OCA_BATG_EN 0x1000 |
loopsva | 3:1b12fa9dc673 | 239 | #define BQ_BIT_OCA_RSVD2 0x0800 |
loopsva | 3:1b12fa9dc673 | 240 | #define BQ_BIT_OCA_SLEEP 0x0400 |
loopsva | 3:1b12fa9dc673 | 241 | #define BQ_BIT_OCA_SLPWAKECHG 0x0200 |
loopsva | 3:1b12fa9dc673 | 242 | #define BQ_BIT_OCA_WRTEMP 0x0100 |
loopsva | 3:1b12fa9dc673 | 243 | #define BQ_BIT_OCA_BIE 0x0080 |
loopsva | 3:1b12fa9dc673 | 244 | #define BQ_BIT_OCA_RSVD3 0x0040 |
loopsva | 3:1b12fa9dc673 | 245 | #define BQ_BIT_OCA_BI_PUP_EN 0x0020 |
loopsva | 3:1b12fa9dc673 | 246 | #define BQ_BIT_OCA_PFC_CFG1 0x0010 |
loopsva | 3:1b12fa9dc673 | 247 | #define BQ_BIT_OCA_PFC_CFG0 0x0008 |
loopsva | 3:1b12fa9dc673 | 248 | #define BQ_BIT_OCA_WAKE_EN 0x0004 |
loopsva | 3:1b12fa9dc673 | 249 | #define BQ_BIT_OCA_WK_TH1 0x0002 |
loopsva | 3:1b12fa9dc673 | 250 | #define BQ_BIT_OCA_WK_TH0 0x0001 |
loopsva | 3:1b12fa9dc673 | 251 | |
loopsva | 3:1b12fa9dc673 | 252 | // Operation Config Reg B bit equates |
loopsva | 3:1b12fa9dc673 | 253 | #define BQ_BIT_OCB_RSVD1 0x8000 |
loopsva | 3:1b12fa9dc673 | 254 | #define BQ_BIT_OCB_RSVD2 0x4000 |
loopsva | 3:1b12fa9dc673 | 255 | #define BQ_BIT_OCB_RSVD3 0x2000 |
loopsva | 3:1b12fa9dc673 | 256 | #define BQ_BIT_OCB_RSVD4 0x1000 |
loopsva | 3:1b12fa9dc673 | 257 | #define BQ_BIT_OCB_DEF_SEAL 0x0800 |
loopsva | 3:1b12fa9dc673 | 258 | #define BQ_BIT_OCB_NR 0x0400 |
loopsva | 3:1b12fa9dc673 | 259 | #define BQ_BIT_OCB_RSVD5 0x0200 |
loopsva | 3:1b12fa9dc673 | 260 | #define BQ_BIT_OCB_RSVD6 0x0100 |
loopsva | 3:1b12fa9dc673 | 261 | #define BQ_BIT_OCB_INT_BREM 0x0080 |
loopsva | 3:1b12fa9dc673 | 262 | #define BQ_BIT_OCB_INT_BATL 0x0040 |
loopsva | 3:1b12fa9dc673 | 263 | #define BQ_BIT_OCB_INT_STATE 0x0020 |
loopsva | 3:1b12fa9dc673 | 264 | #define BQ_BIT_OCB_INT_OCV 0x0010 |
loopsva | 3:1b12fa9dc673 | 265 | #define BQ_BIT_OCB_RSVD7 0x0008 |
loopsva | 3:1b12fa9dc673 | 266 | #define BQ_BIT_OCB_INT_OT 0x0004 |
loopsva | 3:1b12fa9dc673 | 267 | #define BQ_BIT_OCB_INT_POL 0x0002 |
loopsva | 3:1b12fa9dc673 | 268 | #define BQ_BIT_OCB_INT_FOCV 0x0001 |
loopsva | 3:1b12fa9dc673 | 269 | |
loopsva | 3:1b12fa9dc673 | 270 | // SOC Flags Reg A bit equates |
loopsva | 3:1b12fa9dc673 | 271 | #define BQ_BIT_SOCFA_TCSETVCT 0x0800 |
loopsva | 3:1b12fa9dc673 | 272 | #define BQ_BIT_SOCFA_FCSETVCT 0x0400 |
loopsva | 3:1b12fa9dc673 | 273 | #define BQ_BIT_SOCFA_TCCLEARRSOC 0x0080 |
loopsva | 3:1b12fa9dc673 | 274 | #define BQ_BIT_SOCFA_TCSETRSOC 0x0040 |
loopsva | 3:1b12fa9dc673 | 275 | #define BQ_BIT_SOCFA_TCCLEARV 0x0020 |
loopsva | 3:1b12fa9dc673 | 276 | #define BQ_BIT_SOCFA_TCSETV 0x0010 |
loopsva | 3:1b12fa9dc673 | 277 | #define BQ_BIT_SOCFA_TDCLEARRSOC 0x0008 |
loopsva | 3:1b12fa9dc673 | 278 | #define BQ_BIT_SOCFA_TDSETRSOC 0x0004 |
loopsva | 3:1b12fa9dc673 | 279 | #define BQ_BIT_SOCFA_TDCLEARV 0x0002 |
loopsva | 3:1b12fa9dc673 | 280 | #define BQ_BIT_SOCFA_TDSETV 0x0001 |
loopsva | 3:1b12fa9dc673 | 281 | |
loopsva | 3:1b12fa9dc673 | 282 | // SOC Flags Reg B bit equates |
loopsva | 3:1b12fa9dc673 | 283 | #define BQ_BIT_SOCFB_FCCLEARRSOC 0x0080 |
loopsva | 3:1b12fa9dc673 | 284 | #define BQ_BIT_SOCFB_FCSETRSOC 0x0040 |
loopsva | 3:1b12fa9dc673 | 285 | #define BQ_BIT_SOCFB_FCCLEARV 0x0020 |
loopsva | 3:1b12fa9dc673 | 286 | #define BQ_BIT_SOCFB_FCSETV 0x0010 |
loopsva | 3:1b12fa9dc673 | 287 | #define BQ_BIT_SOCFB_FDCLEARRSOC 0x0008 |
loopsva | 3:1b12fa9dc673 | 288 | #define BQ_BIT_SOCFB_FDSETRSOC 0x0004 |
loopsva | 3:1b12fa9dc673 | 289 | #define BQ_BIT_SOCFB_FDCCLEARV 0x0002 |
loopsva | 3:1b12fa9dc673 | 290 | #define BQ_BIT_SOCFB_FDSETV 0x0001 |
loopsva | 3:1b12fa9dc673 | 291 | |
loopsva | 3:1b12fa9dc673 | 292 | // IO Config bit equates |
loopsva | 3:1b12fa9dc673 | 293 | #define BQ_BIT_IOCFG_BtpIntPol 0x0002 |
loopsva | 3:1b12fa9dc673 | 294 | #define BQ_BIT_SOCFB_BTpIntEn 0x0001 |
loopsva | 3:1b12fa9dc673 | 295 | |
loopsva | 3:1b12fa9dc673 | 296 | // Smoothing Config bit equates |
loopsva | 3:1b12fa9dc673 | 297 | #define BQ_BIT_SMOC_SMOOTH_EOC_EN 0x0008 |
loopsva | 3:1b12fa9dc673 | 298 | #define BQ_BIT_SMOC_CMEXT 0x0004 |
loopsva | 3:1b12fa9dc673 | 299 | #define BQ_BIT_SMOC_VAVG 0x0002 |
loopsva | 3:1b12fa9dc673 | 300 | #define BQ_BIT_SMOC_SMEN 0x0001 |
loopsva | 1:ab433d7c3e30 | 301 | |
loopsva | 2:d52fb7ef7429 | 302 | class BQ27220 |
loopsva | 0:96d5698a376f | 303 | { |
loopsva | 0:96d5698a376f | 304 | public: |
loopsva | 0:96d5698a376f | 305 | /** |
loopsva | 2:d52fb7ef7429 | 306 | * Data structure for BQ27220 data values. |
loopsva | 0:96d5698a376f | 307 | * |
loopsva | 0:96d5698a376f | 308 | **/ |
loopsva | 0:96d5698a376f | 309 | typedef struct { |
loopsva | 2:d52fb7ef7429 | 310 | uint16_t cntlReg; /*!< CNTL register */ |
loopsva | 3:1b12fa9dc673 | 311 | int16_t arReg; /*!< AR register */ |
loopsva | 0:96d5698a376f | 312 | uint16_t artteReg; /*!< ARTTE register */ |
loopsva | 0:96d5698a376f | 313 | uint16_t tempReg; /*!< TEMP register */ |
loopsva | 0:96d5698a376f | 314 | uint16_t voltReg; /*!< VOLT register */ |
loopsva | 2:d52fb7ef7429 | 315 | |
loopsva | 2:d52fb7ef7429 | 316 | uint16_t flagsReg; /*!< FLAGS register */ |
loopsva | 3:1b12fa9dc673 | 317 | int16_t currentReg; /*!< CURRENT register */ |
loopsva | 2:d52fb7ef7429 | 318 | uint16_t rmReg; /*!< RM register */ |
loopsva | 2:d52fb7ef7429 | 319 | uint16_t fccReg; /*!< FCC register */ |
loopsva | 0:96d5698a376f | 320 | uint16_t aiReg; /*!< AI register */ |
loopsva | 2:d52fb7ef7429 | 321 | |
loopsva | 0:96d5698a376f | 322 | uint16_t tteReg; /*!< TTE register */ |
loopsva | 0:96d5698a376f | 323 | uint16_t ttfReg; /*!< TTF register */ |
loopsva | 3:1b12fa9dc673 | 324 | int16_t siReg; /*!< SI register */ |
loopsva | 0:96d5698a376f | 325 | uint16_t stteReg; /*!< STTE register */ |
loopsva | 3:1b12fa9dc673 | 326 | int16_t mliReg; /*!< MLI register */ |
loopsva | 2:d52fb7ef7429 | 327 | |
loopsva | 2:d52fb7ef7429 | 328 | uint16_t mltteReg; /*!< MLTTE register */ |
loopsva | 2:d52fb7ef7429 | 329 | uint16_t rawccReg; /*!< RCC register */ |
loopsva | 3:1b12fa9dc673 | 330 | int16_t apReg; /*!< AP register */ |
loopsva | 2:d52fb7ef7429 | 331 | uint16_t intTempReg; /*!< INTTEMP register */ |
loopsva | 2:d52fb7ef7429 | 332 | uint16_t cycReg; /*!< CYC register */ |
loopsva | 2:d52fb7ef7429 | 333 | |
loopsva | 2:d52fb7ef7429 | 334 | uint16_t socReg; /*!< SOC register */ |
loopsva | 2:d52fb7ef7429 | 335 | uint16_t sohReg; /*!< SOH register */ |
loopsva | 2:d52fb7ef7429 | 336 | uint16_t cvReg; /*!< CV register */ |
loopsva | 2:d52fb7ef7429 | 337 | uint16_t ccReg; /*!< CC register */ |
loopsva | 2:d52fb7ef7429 | 338 | uint16_t btpdReg; /*!< BTPD register */ |
loopsva | 2:d52fb7ef7429 | 339 | |
loopsva | 2:d52fb7ef7429 | 340 | uint16_t btpcReg; /*!< BTPC register */ |
loopsva | 2:d52fb7ef7429 | 341 | uint16_t osReg; /*!< OS register */ |
loopsva | 2:d52fb7ef7429 | 342 | uint16_t dcReg; /*!< DC register */ |
loopsva | 3:1b12fa9dc673 | 343 | uint16_t subReg; /*!< SUB command register */ |
loopsva | 2:d52fb7ef7429 | 344 | char macData[32]; /*!< MAC Data array */ |
loopsva | 3:1b12fa9dc673 | 345 | uint8_t macSumReg; /*!< MAC Data Sum register */ |
loopsva | 2:d52fb7ef7429 | 346 | |
loopsva | 3:1b12fa9dc673 | 347 | uint8_t macLenReg; /*!< MAC Data Len register */ |
loopsva | 2:d52fb7ef7429 | 348 | uint8_t anacReg; /*!< Analog Count register */ |
loopsva | 2:d52fb7ef7429 | 349 | uint16_t rawcReg; /*!< RAWC register */ |
loopsva | 2:d52fb7ef7429 | 350 | uint16_t rawvReg; /*!< RAWV register */ |
loopsva | 2:d52fb7ef7429 | 351 | uint16_t rawtReg; /*!< RAWT register */ |
loopsva | 3:1b12fa9dc673 | 352 | |
loopsva | 3:1b12fa9dc673 | 353 | uint8_t checksum; /*!< calculated checksum result */ |
loopsva | 2:d52fb7ef7429 | 354 | |
loopsva | 3:1b12fa9dc673 | 355 | int16_t shunt_res; /*!< Shunt Resistor value / 1000 */ |
loopsva | 3:1b12fa9dc673 | 356 | char i2c_Bufx[48]; /*!< i2c buffer */ |
loopsva | 2:d52fb7ef7429 | 357 | } BQ27220_TypeDef; |
loopsva | 0:96d5698a376f | 358 | |
loopsva | 0:96d5698a376f | 359 | /** Configure data pin |
loopsva | 0:96d5698a376f | 360 | * @param data SDA and SCL pins |
loopsva | 2:d52fb7ef7429 | 361 | * // @param digital output 21V control pin |
loopsva | 0:96d5698a376f | 362 | **/ |
loopsva | 2:d52fb7ef7429 | 363 | //BQ27220(PinName p_sda, PinName p_scl, PinName p_pgrm); |
loopsva | 2:d52fb7ef7429 | 364 | BQ27220(PinName p_sda, PinName p_scl); |
loopsva | 3:1b12fa9dc673 | 365 | BQ27220(PinName p_sda, PinName p_scl, int freq); |
loopsva | 1:ab433d7c3e30 | 366 | |
loopsva | 1:ab433d7c3e30 | 367 | /** Write default values for CNTL register and shunt resistor * 1000 |
loopsva | 1:ab433d7c3e30 | 368 | * @param I2c pins |
loopsva | 1:ab433d7c3e30 | 369 | * @param programming enable EEPROM pin (21V) |
loopsva | 1:ab433d7c3e30 | 370 | * @return none |
loopsva | 1:ab433d7c3e30 | 371 | */ |
loopsva | 2:d52fb7ef7429 | 372 | void default_init(BQ27220_TypeDef& dataSTR); |
loopsva | 0:96d5698a376f | 373 | |
loopsva | 3:1b12fa9dc673 | 374 | uint16_t get_OS_reg(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 375 | |
loopsva | 0:96d5698a376f | 376 | /** Read all bq registers and put them into the data structure |
loopsva | 1:ab433d7c3e30 | 377 | * @param pointer to data structure |
loopsva | 0:96d5698a376f | 378 | * @return i2c error, 0 = no error |
loopsva | 0:96d5698a376f | 379 | */ |
loopsva | 2:d52fb7ef7429 | 380 | int read_registers(BQ27220_TypeDef& dataSTR); |
loopsva | 0:96d5698a376f | 381 | |
loopsva | 3:1b12fa9dc673 | 382 | /** Send sub-command and read data and/or result from sub-command |
loopsva | 3:1b12fa9dc673 | 383 | * @param pointer to data structure |
loopsva | 3:1b12fa9dc673 | 384 | * @return result and/or data |
loopsva | 3:1b12fa9dc673 | 385 | */ |
loopsva | 3:1b12fa9dc673 | 386 | uint16_t get_sub_cmmd(BQ27220_TypeDef& dataSTR, uint16_t cmmd); |
loopsva | 3:1b12fa9dc673 | 387 | |
loopsva | 3:1b12fa9dc673 | 388 | /** Like above, without extra delays |
loopsva | 3:1b12fa9dc673 | 389 | * @param pointer to data structure |
loopsva | 3:1b12fa9dc673 | 390 | * @return result and/or data |
loopsva | 3:1b12fa9dc673 | 391 | */ |
loopsva | 3:1b12fa9dc673 | 392 | uint16_t get_sub_cmmd_s(BQ27220_TypeDef& dataSTR, uint16_t cmmd); |
loopsva | 3:1b12fa9dc673 | 393 | |
loopsva | 3:1b12fa9dc673 | 394 | void change_cfg_OT_chg_time(BQ27220_TypeDef& dataSTR, uint8_t newtime); |
loopsva | 3:1b12fa9dc673 | 395 | void change_ram_1_2_4(BQ27220_TypeDef& dataSTR, uint16_t sub_cmmd, uint32_t value, int qty, bool pre); |
loopsva | 3:1b12fa9dc673 | 396 | void change_cfg_6_1(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 397 | uint16_t get_cs_len(BQ27220_TypeDef& dataSTR, bool pf); |
loopsva | 3:1b12fa9dc673 | 398 | void exitCfgUpdateReInit(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 399 | void exitCfgUpdateExit(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 400 | void set_reg(BQ27220_TypeDef& dataSTR, uint16_t reg, uint16_t da, int byt); |
loopsva | 3:1b12fa9dc673 | 401 | |
loopsva | 3:1b12fa9dc673 | 402 | uint16_t get_reg_2B(BQ27220_TypeDef& dataSTR, uint8_t reg); |
loopsva | 3:1b12fa9dc673 | 403 | |
loopsva | 3:1b12fa9dc673 | 404 | void unseal(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 405 | void full_access(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 406 | void enter_cfg_update(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 407 | void seal(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 408 | void useProfile_1(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 409 | void reset(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 410 | |
loopsva | 3:1b12fa9dc673 | 411 | /** Send sub-command to get device ID |
loopsva | 3:1b12fa9dc673 | 412 | * @param pointer to data structure |
loopsva | 3:1b12fa9dc673 | 413 | * @return sub-command + device id |
loopsva | 3:1b12fa9dc673 | 414 | */ |
loopsva | 3:1b12fa9dc673 | 415 | uint32_t get_dev_id(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 416 | |
loopsva | 3:1b12fa9dc673 | 417 | /** Send sub-command to get firmware revision |
loopsva | 3:1b12fa9dc673 | 418 | * @param pointer to data structure |
loopsva | 3:1b12fa9dc673 | 419 | * @return revision |
loopsva | 3:1b12fa9dc673 | 420 | */ |
loopsva | 3:1b12fa9dc673 | 421 | uint32_t get_fw_rev(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 422 | |
loopsva | 3:1b12fa9dc673 | 423 | /** Send sub-command to get firmware revision |
loopsva | 3:1b12fa9dc673 | 424 | * @param pointer to data structure |
loopsva | 3:1b12fa9dc673 | 425 | * @return revision |
loopsva | 3:1b12fa9dc673 | 426 | */ |
loopsva | 3:1b12fa9dc673 | 427 | uint32_t get_hw_rev(BQ27220_TypeDef& dataSTR); |
loopsva | 3:1b12fa9dc673 | 428 | |
loopsva | 3:1b12fa9dc673 | 429 | uint8_t calc_checksum_rx(BQ27220_TypeDef& dataSTR, int length); |
loopsva | 3:1b12fa9dc673 | 430 | uint8_t calc_checksum_tx(BQ27220_TypeDef& dataSTR, int length); |
loopsva | 3:1b12fa9dc673 | 431 | |
loopsva | 3:1b12fa9dc673 | 432 | /** Send sub-command to get 32 bytes data |
loopsva | 3:1b12fa9dc673 | 433 | * @param pointer to data structure |
loopsva | 3:1b12fa9dc673 | 434 | * @param sub-command |
loopsva | 3:1b12fa9dc673 | 435 | * @return 32 bytes in macData |
loopsva | 3:1b12fa9dc673 | 436 | */ |
loopsva | 3:1b12fa9dc673 | 437 | uint32_t get_data_32(BQ27220_TypeDef& dataSTR, uint16_t sub_cmmd, int length); |
loopsva | 3:1b12fa9dc673 | 438 | |
loopsva | 3:1b12fa9dc673 | 439 | /** Get signed 16 bit value |
loopsva | 3:1b12fa9dc673 | 440 | * @param pointer to data structure |
loopsva | 3:1b12fa9dc673 | 441 | * @param sub-command |
loopsva | 3:1b12fa9dc673 | 442 | * @return 16 bit signed value |
loopsva | 3:1b12fa9dc673 | 443 | */ |
loopsva | 3:1b12fa9dc673 | 444 | uint16_t get_16(BQ27220_TypeDef& dataSTR, uint16_t cmmd); |
loopsva | 3:1b12fa9dc673 | 445 | |
loopsva | 3:1b12fa9dc673 | 446 | /** Get unsigned 8 bit value |
loopsva | 3:1b12fa9dc673 | 447 | * @param pointer to data structure |
loopsva | 3:1b12fa9dc673 | 448 | * @param sub-command |
loopsva | 3:1b12fa9dc673 | 449 | * @return 8 bit signed value |
loopsva | 3:1b12fa9dc673 | 450 | */ |
loopsva | 3:1b12fa9dc673 | 451 | uint8_t get_8(BQ27220_TypeDef& dataSTR, uint16_t cmmd); |
loopsva | 3:1b12fa9dc673 | 452 | |
loopsva | 3:1b12fa9dc673 | 453 | void set_ntc_as_sensor(BQ27220_TypeDef& dataSTR, bool ntc); |
loopsva | 3:1b12fa9dc673 | 454 | |
loopsva | 1:ab433d7c3e30 | 455 | /** Initialize SoC for a new battery |
loopsva | 1:ab433d7c3e30 | 456 | * @param pointer to data structure |
loopsva | 1:ab433d7c3e30 | 457 | * @return error, 0 = no error |
loopsva | 1:ab433d7c3e30 | 458 | */ |
loopsva | 2:d52fb7ef7429 | 459 | int new_battery_init(BQ27220_TypeDef& dataSTR); |
loopsva | 1:ab433d7c3e30 | 460 | |
loopsva | 0:96d5698a376f | 461 | /** Read all bq EEPROM registers and put them into the data structure |
loopsva | 1:ab433d7c3e30 | 462 | * @param pointer to data structure |
loopsva | 0:96d5698a376f | 463 | * @return i2c error, 0 = no error |
loopsva | 0:96d5698a376f | 464 | */ |
loopsva | 2:d52fb7ef7429 | 465 | int read_eep_registers(BQ27220_TypeDef& dataSTR); |
loopsva | 2:d52fb7ef7429 | 466 | |
loopsva | 2:d52fb7ef7429 | 467 | protected: |
loopsva | 2:d52fb7ef7429 | 468 | I2C _i2c; |
loopsva | 1:ab433d7c3e30 | 469 | |
loopsva | 0:96d5698a376f | 470 | private: |
loopsva | 0:96d5698a376f | 471 | |
loopsva | 0:96d5698a376f | 472 | }; |
loopsva | 0:96d5698a376f | 473 | |
loopsva | 2:d52fb7ef7429 | 474 | #endif // MBED_BQ27220 |