This is a library for the MAX17055 Li+ Battery Fuel Gauge.

Dependents:   Low_Power_Long_Distance_IR_Vision_Robot MAX17055_EZconfig MAX17055_EZconfig_Sample Low_Power_Long_Distance_IR_Vision_Robot

Fork of max17055 by Maxim Integrated

Committer:
fneirab
Date:
Sun Sep 24 19:32:14 2017 +0000
Revision:
2:ff7db397b70f
Parent:
1:a031f0c6a71e
Child:
3:f77a8345b0e3
New partial Init function and a complete get_temp function;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fneirab 0:80c39eb8f3ba 1 /*******************************************************************************
fneirab 0:80c39eb8f3ba 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
fneirab 0:80c39eb8f3ba 3 *
fneirab 0:80c39eb8f3ba 4 * Permission is hereby granted, free of charge, to any person obtaining a
fneirab 0:80c39eb8f3ba 5 * copy of this software and associated documentation files (the "Software"),
fneirab 0:80c39eb8f3ba 6 * to deal in the Software without restriction, including without limitation
fneirab 0:80c39eb8f3ba 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
fneirab 0:80c39eb8f3ba 8 * and/or sell copies of the Software, and to permit persons to whom the
fneirab 0:80c39eb8f3ba 9 * Software is furnished to do so, subject to the following conditions:
fneirab 0:80c39eb8f3ba 10 *
fneirab 0:80c39eb8f3ba 11 * The above copyright notice and this permission notice shall be included
fneirab 0:80c39eb8f3ba 12 * in all copies or substantial portions of the Software.
fneirab 0:80c39eb8f3ba 13 *
fneirab 0:80c39eb8f3ba 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
fneirab 0:80c39eb8f3ba 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
fneirab 0:80c39eb8f3ba 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
fneirab 0:80c39eb8f3ba 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
fneirab 0:80c39eb8f3ba 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
fneirab 0:80c39eb8f3ba 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
fneirab 0:80c39eb8f3ba 20 * OTHER DEALINGS IN THE SOFTWARE.
fneirab 0:80c39eb8f3ba 21 *
fneirab 0:80c39eb8f3ba 22 * Except as contained in this notice, the name of Maxim Integrated
fneirab 0:80c39eb8f3ba 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
fneirab 0:80c39eb8f3ba 24 * Products, Inc. Branding Policy.
fneirab 0:80c39eb8f3ba 25 *
fneirab 0:80c39eb8f3ba 26 * The mere transfer of this software does not imply any licenses
fneirab 0:80c39eb8f3ba 27 * of trade secrets, proprietary technology, copyrights, patents,
fneirab 0:80c39eb8f3ba 28 * trademarks, maskwork rights, or any other form of intellectual
fneirab 0:80c39eb8f3ba 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
fneirab 0:80c39eb8f3ba 30 * ownership rights.
fneirab 0:80c39eb8f3ba 31 ********************************************************************************/
fneirab 0:80c39eb8f3ba 32
fneirab 0:80c39eb8f3ba 33 #ifndef __MAX17055_H_
fneirab 0:80c39eb8f3ba 34 #define __MAX17055_H_
fneirab 0:80c39eb8f3ba 35
fneirab 0:80c39eb8f3ba 36 // Include
fneirab 0:80c39eb8f3ba 37 #include "mbed.h"
fneirab 0:80c39eb8f3ba 38
fneirab 2:ff7db397b70f 39 /* STATUS register bits */
fneirab 2:ff7db397b70f 40 #define MAX17055_STATUS_BST (1 << 3)
fneirab 2:ff7db397b70f 41 #define MAX17055_STATUS_POR (1 << 1)
fneirab 2:ff7db397b70f 42
fneirab 0:80c39eb8f3ba 43
fneirab 0:80c39eb8f3ba 44 /**
fneirab 0:80c39eb8f3ba 45 * @brief Library for the MAX17055\n
fneirab 0:80c39eb8f3ba 46 * The MAX17055 is a low 7μA operating current fuel gauge
fneirab 0:80c39eb8f3ba 47 * which implements Maxim ModelGauge™ m5 EZ algorithm.
fneirab 0:80c39eb8f3ba 48 * ModelGauge m5 EZ makes fuel gauge implementation easy
fneirab 0:80c39eb8f3ba 49 * by eliminating battery characterization requirements
fneirab 0:80c39eb8f3ba 50 * and simplifying host software interaction.
fneirab 0:80c39eb8f3ba 51 * The ModelGauge m5 EZ robust algorithm provides tolerance against
fneirab 0:80c39eb8f3ba 52 * battery diversity for most lithium batteries and applications.
fneirab 0:80c39eb8f3ba 53 * Communication is through an SPI-compatible interface.
fneirab 0:80c39eb8f3ba 54 *
fneirab 0:80c39eb8f3ba 55 * @code
fneirab 0:80c39eb8f3ba 56 * #include "mbed.h"
fneirab 0:80c39eb8f3ba 57 * #include "MAX170155.h"
fneirab 0:80c39eb8f3ba 58 *
fneirab 0:80c39eb8f3ba 59 *
fneirab 0:80c39eb8f3ba 60 * // Hardware serial port
fneirab 0:80c39eb8f3ba 61 * Serial serial(USBTX, USBRX);
fneirab 0:80c39eb8f3ba 62 *
fneirab 0:80c39eb8f3ba 63 * //SPI communications
fneirab 0:80c39eb8f3ba 64 * I2C i2c(SCL, SDA);
fneirab 0:80c39eb8f3ba 65 *
fneirab 0:80c39eb8f3ba 66 * //Fuel Gauge
fneirab 0:80c39eb8f3ba 67 * MAX17055 max17055(i2C, Sutff );//To be completed
fneirab 0:80c39eb8f3ba 68 *
fneirab 0:80c39eb8f3ba 69 *
fneirab 0:80c39eb8f3ba 70 * int main(void)
fneirab 0:80c39eb8f3ba 71 * {
fneirab 0:80c39eb8f3ba 72 * CODE CODE
fneirab 0:80c39eb8f3ba 73 * while(true)
fneirab 0:80c39eb8f3ba 74 * {
fneirab 0:80c39eb8f3ba 75 * CODE CODE
fneirab 0:80c39eb8f3ba 76 * }
fneirab 0:80c39eb8f3ba 77 * }
fneirab 0:80c39eb8f3ba 78 * @endcode
fneirab 0:80c39eb8f3ba 79 */
fneirab 0:80c39eb8f3ba 80
fneirab 0:80c39eb8f3ba 81
fneirab 0:80c39eb8f3ba 82 // Battery struct for all the parameters
fneirab 0:80c39eb8f3ba 83 /******************************************************/
fneirab 0:80c39eb8f3ba 84 // NOTE:: I PERSONALL THINK BATTERY SHOULD BE A CLASS JUST SO THAT WE CAN KEEP ALL THE PARAMETERS
fneirab 0:80c39eb8f3ba 85 // AS PRIVATE AND PROVIDE USERS WITH CLASS FUNCTIOS TO MODIFY THE PRIVATE VALUE INSIDE
fneirab 0:80c39eb8f3ba 86 /*****************************************************/
fneirab 0:80c39eb8f3ba 87 typedef struct {
fneirab 0:80c39eb8f3ba 88 int capacity; //!< The rated capacity in mAh of the battery
fneirab 0:80c39eb8f3ba 89 int voltageMax; //!< The maximum voltage in mV that should be used for charging
fneirab 0:80c39eb8f3ba 90 int voltageNom; //!< The normal voltage in mV of the battery near mid charge
fneirab 0:80c39eb8f3ba 91 int voltageMin; //!< The minimum voltage in mV that the battery should be discharged
fneirab 0:80c39eb8f3ba 92 int temperatureMax; //!< The maximum temperature in degrees C where charging is allowed
fneirab 0:80c39eb8f3ba 93 int temperatureMin; //!< The minimum temperature in degrees C where charging is allowed
fneirab 0:80c39eb8f3ba 94 int currentCharge; //!< The current as a percentage of capicity used for charging
fneirab 0:80c39eb8f3ba 95 int currentTerm; //!< The current as a percentage of capacity to stop charging
fneirab 0:80c39eb8f3ba 96 int currentPre; //!< The current as a percentage of capacity for pre-charging
fneirab 0:80c39eb8f3ba 97 } battery_cfg_t;
fneirab 0:80c39eb8f3ba 98
fneirab 0:80c39eb8f3ba 99
fneirab 0:80c39eb8f3ba 100 //From Linux driver
fneirab 0:80c39eb8f3ba 101 typedef struct {
fneirab 0:80c39eb8f3ba 102 uint16_t designcap;
fneirab 0:80c39eb8f3ba 103 uint16_t ichgterm;
fneirab 0:80c39eb8f3ba 104 uint16_t vempty;
fneirab 0:80c39eb8f3ba 105 int vcharge;
fneirab 0:80c39eb8f3ba 106
fneirab 0:80c39eb8f3ba 107 uint16_t learncfg;
fneirab 0:80c39eb8f3ba 108 uint16_t relaxcfg;
fneirab 0:80c39eb8f3ba 109 uint16_t config;
fneirab 0:80c39eb8f3ba 110 uint16_t config2;
fneirab 0:80c39eb8f3ba 111 uint16_t fullsocthr;
fneirab 0:80c39eb8f3ba 112 uint16_t tgain;
fneirab 0:80c39eb8f3ba 113 uint16_t toff;
fneirab 0:80c39eb8f3ba 114 uint16_t curve;
fneirab 0:80c39eb8f3ba 115 uint16_t rcomp0;
fneirab 0:80c39eb8f3ba 116 uint16_t tempco;
fneirab 0:80c39eb8f3ba 117 uint16_t qrtable00;
fneirab 0:80c39eb8f3ba 118 uint16_t qrtable10;
fneirab 0:80c39eb8f3ba 119 uint16_t qrtable20;
fneirab 0:80c39eb8f3ba 120 uint16_t qrtable30;
fneirab 0:80c39eb8f3ba 121
fneirab 0:80c39eb8f3ba 122 uint16_t dpacc;
fneirab 0:80c39eb8f3ba 123 uint16_t modelcfg;
fneirab 0:80c39eb8f3ba 124
fneirab 0:80c39eb8f3ba 125 //uint16_t model_data[MAX17055_TABLE_SIZE];
fneirab 0:80c39eb8f3ba 126 int (*get_charging_status)(void);
fneirab 0:80c39eb8f3ba 127 int model_option;
fneirab 0:80c39eb8f3ba 128
fneirab 0:80c39eb8f3ba 129 /*
fneirab 0:80c39eb8f3ba 130 * rsense in miliOhms.
fneirab 0:80c39eb8f3ba 131 * default 10 (if rsense = 0) as it is the recommended value by
fneirab 0:80c39eb8f3ba 132 * the datasheet although it can be changed by board designers.
fneirab 0:80c39eb8f3ba 133 */
fneirab 0:80c39eb8f3ba 134 unsigned int rsense;
fneirab 0:80c39eb8f3ba 135 int volt_min; /* in mV */
fneirab 0:80c39eb8f3ba 136 int volt_max; /* in mV */
fneirab 0:80c39eb8f3ba 137 int temp_min; /* in DegreC */
fneirab 0:80c39eb8f3ba 138 int temp_max; /* in DegreeC */
fneirab 0:80c39eb8f3ba 139 int soc_max; /* in percent */
fneirab 0:80c39eb8f3ba 140 int soc_min; /* in percent */
fneirab 0:80c39eb8f3ba 141 int curr_max; /* in mA */
fneirab 0:80c39eb8f3ba 142 int curr_min; /* in mA */
fneirab 0:80c39eb8f3ba 143 } max17055_platform_data;
fneirab 0:80c39eb8f3ba 144
fneirab 0:80c39eb8f3ba 145 typedef struct {
fneirab 0:80c39eb8f3ba 146 int rcomp0;
fneirab 0:80c39eb8f3ba 147 int temp_co;
fneirab 0:80c39eb8f3ba 148 int full_cap_rep;
fneirab 0:80c39eb8f3ba 149 int cycles;
fneirab 0:80c39eb8f3ba 150 int full_cap_nom;
fneirab 0:80c39eb8f3ba 151 } saved_fuel_gauge_params_t;
fneirab 0:80c39eb8f3ba 152
fneirab 0:80c39eb8f3ba 153 /// Battery Fuel Gauge Class (MAX17055)
fneirab 0:80c39eb8f3ba 154 /** Generic API for a battery fuel gauge
fneirab 0:80c39eb8f3ba 155 */
fneirab 0:80c39eb8f3ba 156 class MAX17055
fneirab 0:80c39eb8f3ba 157 {
fneirab 0:80c39eb8f3ba 158
fneirab 0:80c39eb8f3ba 159 public:
fneirab 0:80c39eb8f3ba 160
fneirab 0:80c39eb8f3ba 161 ///7-bit slave address
fneirab 0:80c39eb8f3ba 162 static const uint8_t I2C_ADRS = 0x36; //Slave address 0x6C or 0x36 for 7 MSbit Addres
fneirab 0:80c39eb8f3ba 163 ///8-bit write address
fneirab 0:80c39eb8f3ba 164 static const uint8_t I2C_W_ADRS = 0x6C;
fneirab 0:80c39eb8f3ba 165 ///8-bit read address
fneirab 0:80c39eb8f3ba 166 static const uint8_t I2C_R_ADRS = 0x6D;
fneirab 0:80c39eb8f3ba 167 /////Max # Bytes in FIFO
fneirab 0:80c39eb8f3ba 168 // static const uint16_t MAX_FIFO_BYTES = 288;
fneirab 0:80c39eb8f3ba 169 // ///# of bytes per LED channel
fneirab 0:80c39eb8f3ba 170 // static const uint8_t BYTES_PER_CH = 3;
fneirab 0:80c39eb8f3ba 171
fneirab 0:80c39eb8f3ba 172
fneirab 0:80c39eb8f3ba 173
fneirab 0:80c39eb8f3ba 174
fneirab 0:80c39eb8f3ba 175 /**
fneirab 0:80c39eb8f3ba 176 * @brief Register Addresses
fneirab 0:80c39eb8f3ba 177 * @details Enumerated max17055 (MAX17055 max17055)
fneirab 0:80c39eb8f3ba 178 */
fneirab 0:80c39eb8f3ba 179 enum Registers_e {
fneirab 0:80c39eb8f3ba 180 MAX17055_STATUS_REG = 0x00,
fneirab 0:80c39eb8f3ba 181 MAX17055_VALRTTH_REG = 0x01,
fneirab 0:80c39eb8f3ba 182 MAX17055_TALRTTH_REG = 0x02,
fneirab 0:80c39eb8f3ba 183 MAX17055_SALRTTH_REG = 0x03,
fneirab 0:80c39eb8f3ba 184 MAX17055_REPCAP_REG = 0x05,
fneirab 0:80c39eb8f3ba 185 MAX17055_REPSOC_REG = 0x06,
fneirab 0:80c39eb8f3ba 186 MAX17055_TEMP_REG = 0x08,
fneirab 0:80c39eb8f3ba 187 MAX17055_VCELL_REG = 0x09,
fneirab 0:80c39eb8f3ba 188 MAX17055_CURRENT_REG = 0x0A,
fneirab 0:80c39eb8f3ba 189 MAX17055_AVGCURRENT_REG = 0x0B,
fneirab 0:80c39eb8f3ba 190 MAX17055_REMCAP_REG = 0x0F,
fneirab 0:80c39eb8f3ba 191
fneirab 0:80c39eb8f3ba 192 MAX17055_FULLCAPREP_REG = 0x10,
fneirab 0:80c39eb8f3ba 193 MAX17055_TTE_REG = 0X11,
fneirab 0:80c39eb8f3ba 194 MAX17055_QRTABLE00_REG = 0x12,
fneirab 0:80c39eb8f3ba 195 MAX17055_FULLSOCTHR_REG = 0x13,
fneirab 0:80c39eb8f3ba 196 MAX17055_CYCLES_REG = 0x17,
fneirab 0:80c39eb8f3ba 197 MAX17055_DESIGNCAP_REG = 0x18,
fneirab 0:80c39eb8f3ba 198 MAX17055_AVGVCELL_REG = 0x19,
fneirab 0:80c39eb8f3ba 199 MAX17055_MAXMINVOLT_REG = 0x1B,
fneirab 0:80c39eb8f3ba 200 MAX17055_CONFIG_REG = 0x1D,
fneirab 0:80c39eb8f3ba 201 MAX17055_ICHGTERM_REG = 0x1E,
fneirab 0:80c39eb8f3ba 202
fneirab 0:80c39eb8f3ba 203 MAX17055_VERSION_REG = 0x21,
fneirab 0:80c39eb8f3ba 204 MAX17055_QRTABLE10_REG = 0x22,
fneirab 0:80c39eb8f3ba 205 MAX17055_FULLCAPNOM_REG = 0x23,
fneirab 0:80c39eb8f3ba 206 MAX17055_LEARNCFG_REG = 0x28,
fneirab 0:80c39eb8f3ba 207 MAX17055_RELAXCFG_REG = 0x2A,
fneirab 0:80c39eb8f3ba 208 MAX17055_TGAIN_REG = 0x2C,
fneirab 0:80c39eb8f3ba 209 MAX17055_TOFF_REG = 0x2D,
fneirab 0:80c39eb8f3ba 210
fneirab 0:80c39eb8f3ba 211 MAX17055_QRTABLE20_REG = 0x32,
fneirab 0:80c39eb8f3ba 212 MAX17055_RCOMP0_REG = 0x38,
fneirab 0:80c39eb8f3ba 213 MAX17055_TEMPCO_REG = 0x39,
fneirab 0:80c39eb8f3ba 214 MAX17055_VEMPTY_REG = 0x3A,
fneirab 0:80c39eb8f3ba 215 MAX17055_FSTAT_REG = 0x3D,
fneirab 0:80c39eb8f3ba 216
fneirab 0:80c39eb8f3ba 217 MAX17055_QRTABLE30_REG = 0x42,
fneirab 0:80c39eb8f3ba 218 MAX17055_DQACC_REG = 0x45,
fneirab 0:80c39eb8f3ba 219 MAX17055_DPACC_REG = 0x46,
fneirab 0:80c39eb8f3ba 220 MAX17055_VFSOC0_REG = 0x48,
fneirab 0:80c39eb8f3ba 221 MAX17055_QH0_REG = 0x4C,
fneirab 0:80c39eb8f3ba 222 MAX17055_QH_REG = 0x4D,
fneirab 0:80c39eb8f3ba 223
fneirab 0:80c39eb8f3ba 224 MAX17055_VFSOC0_QH0_LOCK_REG = 0x60,
fneirab 0:80c39eb8f3ba 225 MAX17055_LOCK1_REG = 0x62,
fneirab 0:80c39eb8f3ba 226 MAX17055_LOCK2_REG = 0x63,
fneirab 0:80c39eb8f3ba 227
fneirab 0:80c39eb8f3ba 228 MAX17055_MODELDATA_START_REG = 0x80,
fneirab 0:80c39eb8f3ba 229
fneirab 0:80c39eb8f3ba 230 MAX17055_IALRTTH_REG = 0xB4,
fneirab 0:80c39eb8f3ba 231 MAX17055_CURVE_REG = 0xB9,
fneirab 0:80c39eb8f3ba 232 MAX17055_HIBCFG_REG = 0xBA,
fneirab 0:80c39eb8f3ba 233 MAX17055_CONFIG2_REG = 0xBB,
fneirab 0:80c39eb8f3ba 234
fneirab 0:80c39eb8f3ba 235 MAX17055_MODELCFG_REG = 0xDB,
fneirab 0:80c39eb8f3ba 236
fneirab 0:80c39eb8f3ba 237 MAX17055_OCV_REG = 0xFB,
fneirab 0:80c39eb8f3ba 238 MAX17055_VFSOC_REG = 0xFF,
fneirab 0:80c39eb8f3ba 239 } ;
fneirab 0:80c39eb8f3ba 240
fneirab 0:80c39eb8f3ba 241 /**
fneirab 0:80c39eb8f3ba 242 * @brief max17055 Constructor
fneirab 0:80c39eb8f3ba 243 * @details max17055 Constructor with battery and i2c as parameters
fneirab 0:80c39eb8f3ba 244 */
fneirab 0:80c39eb8f3ba 245 MAX17055(I2C &i2c);
fneirab 0:80c39eb8f3ba 246
fneirab 0:80c39eb8f3ba 247 /**
fneirab 0:80c39eb8f3ba 248 * @brief Fuel Gauge Destructor
fneirab 0:80c39eb8f3ba 249 */
fneirab 0:80c39eb8f3ba 250 ~MAX17055();
fneirab 0:80c39eb8f3ba 251
fneirab 0:80c39eb8f3ba 252
fneirab 2:ff7db397b70f 253 /**
fneirab 2:ff7db397b70f 254 * \brief Write and Verify a MAX17055 register
fneirab 2:ff7db397b70f 255 * \par Details
fneirab 2:ff7db397b70f 256 * This function wites and verifies if the writing process was successful
fneirab 2:ff7db397b70f 257 *
fneirab 2:ff7db397b70f 258 * \param[in] reg_addr - register address
fneirab 2:ff7db397b70f 259 * \param[out] reg_data - the variable that contains the data to write
fneirab 2:ff7db397b70f 260 * to the register address
fneirab 2:ff7db397b70f 261 *
fneirab 2:ff7db397b70f 262 * \retval 1 on success
fneirab 2:ff7db397b70f 263 * -1 if write errors
fneirab 2:ff7db397b70f 264 * -2 if read errors
fneirab 2:ff7db397b70f 265 * -3 if data curruption
fneirab 2:ff7db397b70f 266 *
fneirab 2:ff7db397b70f 267 */
fneirab 2:ff7db397b70f 268
fneirab 2:ff7db397b70f 269
fneirab 2:ff7db397b70f 270 int write_and_verify_reg(Registers_e reg_addr, uint16_t reg_data);
fneirab 2:ff7db397b70f 271
fneirab 2:ff7db397b70f 272 /**
fneirab 2:ff7db397b70f 273 * \brief Initialise Function for MAX17055
fneirab 2:ff7db397b70f 274 * \par Details
fneirab 2:ff7db397b70f 275 * This function intitializes the MAX17055
fneirab 2:ff7db397b70f 276 *
fneirab 2:ff7db397b70f 277 * \retval 1 on success
fneirab 2:ff7db397b70f 278 * -1 if errors exist
fneirab 2:ff7db397b70f 279 */
fneirab 2:ff7db397b70f 280
fneirab 2:ff7db397b70f 281
fneirab 2:ff7db397b70f 282 int init();
fneirab 2:ff7db397b70f 283
fneirab 2:ff7db397b70f 284 ////////////////////////////////////////////////////////////////////////////////
fneirab 0:80c39eb8f3ba 285
fneirab 2:ff7db397b70f 286 /**
fneirab 2:ff7db397b70f 287 * \brief Get Internal Temperature Function for MAX17055
fneirab 2:ff7db397b70f 288 * \par Details
fneirab 2:ff7db397b70f 289 * This function sends a request to access the internal
fneirab 2:ff7db397b70f 290 * of the MAX17055
fneirab 2:ff7db397b70f 291 *
fneirab 2:ff7db397b70f 292 * \param[out] *temp - pointer? or Reference? to the volue of the temperature
fneirab 2:ff7db397b70f 293 * \retval 1 on success
fneirab 2:ff7db397b70f 294 * 0 on success
fneirab 2:ff7db397b70f 295 * -1 if errors exist
fneirab 2:ff7db397b70f 296 */
fneirab 2:ff7db397b70f 297
fneirab 2:ff7db397b70f 298
fneirab 2:ff7db397b70f 299 int get_temperature(int *temp);
fneirab 2:ff7db397b70f 300
fneirab 2:ff7db397b70f 301
fneirab 2:ff7db397b70f 302 protected:
fneirab 0:80c39eb8f3ba 303 /**
fneirab 0:80c39eb8f3ba 304 * @brief Write Register
fneirab 0:80c39eb8f3ba 305 * @details Writes data to max17055 Register
fneirab 0:80c39eb8f3ba 306 *
fneirab 0:80c39eb8f3ba 307 * @parameters reg_addr Registers to write
fneirab 0:80c39eb8f3ba 308 * reg_data Data to write
fneirab 0:80c39eb8f3ba 309 */
fneirab 0:80c39eb8f3ba 310 int writeReg(const Registers_e reg_addr, uint16_t reg_data);
fneirab 0:80c39eb8f3ba 311
fneirab 0:80c39eb8f3ba 312 /**
fneirab 0:80c39eb8f3ba 313 * @brief Read Register
fneirab 0:80c39eb8f3ba 314 * @details Reads data from max17055 register
fneirab 0:80c39eb8f3ba 315 *
fneirab 0:80c39eb8f3ba 316 * @parameters reg_addr Register to read
fneirab 0:80c39eb8f3ba 317 */
fneirab 1:a031f0c6a71e 318 int32_t readReg(Registers_e reg_addr, uint16_t &value);
fneirab 1:a031f0c6a71e 319
fneirab 2:ff7db397b70f 320
fneirab 0:80c39eb8f3ba 321
fneirab 2:ff7db397b70f 322
fneirab 0:80c39eb8f3ba 323
fneirab 0:80c39eb8f3ba 324 private:
fneirab 0:80c39eb8f3ba 325
fneirab 0:80c39eb8f3ba 326 I2C &m_i2cBus; // I2C object
fneirab 0:80c39eb8f3ba 327
fneirab 0:80c39eb8f3ba 328 };
fneirab 0:80c39eb8f3ba 329
fneirab 0:80c39eb8f3ba 330 //extern saved_fuel_gauge_params_t default_param;
fneirab 0:80c39eb8f3ba 331
fneirab 0:80c39eb8f3ba 332 #endif /* _MAX17055_H_ */