Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of max17055 by
max17055.h@2:ff7db397b70f, 2017-09-24 (annotated)
- 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?
User | Revision | Line number | New 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_ */ |