Texas Instruments INA230 hi/lo side, bi-directional current and voltage monitor with I2C. Code hacked and enhanced from the INA219 driver from TI
Fork of INA219 by
INA230.h@3:3ee11c82acdb, 2017-03-24 (annotated)
- Committer:
- loopsva
- Date:
- Fri Mar 24 00:13:28 2017 +0000
- Revision:
- 3:3ee11c82acdb
Initial release of the INA230 I2C driver
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
loopsva | 3:3ee11c82acdb | 1 | /* |
loopsva | 3:3ee11c82acdb | 2 | * mbed library program |
loopsva | 3:3ee11c82acdb | 3 | * INA230 High/Low-Side Measurement,Bi-Directional CURRENT/POWER MONITOR with I2C Interface |
loopsva | 3:3ee11c82acdb | 4 | * by Texas Instruments |
loopsva | 3:3ee11c82acdb | 5 | * |
loopsva | 3:3ee11c82acdb | 6 | * Kevin Braun hack of INA219 code by TI |
loopsva | 3:3ee11c82acdb | 7 | * 23-MAR-2017 |
loopsva | 3:3ee11c82acdb | 8 | */ |
loopsva | 3:3ee11c82acdb | 9 | |
loopsva | 3:3ee11c82acdb | 10 | #ifndef MBED_INA230 |
loopsva | 3:3ee11c82acdb | 11 | #define MBED_INA230 |
loopsva | 3:3ee11c82acdb | 12 | |
loopsva | 3:3ee11c82acdb | 13 | // Set data into "addr" |
loopsva | 3:3ee11c82acdb | 14 | #define INA230_ADDR_GG 0x80 |
loopsva | 3:3ee11c82acdb | 15 | #define INA230_ADDR_GV 0x82 |
loopsva | 3:3ee11c82acdb | 16 | #define INA230_ADDR_GA 0x84 |
loopsva | 3:3ee11c82acdb | 17 | #define INA230_ADDR_GL 0x86 |
loopsva | 3:3ee11c82acdb | 18 | #define INA230_ADDR_VG 0x88 |
loopsva | 3:3ee11c82acdb | 19 | #define INA230_ADDR_VV 0x8a |
loopsva | 3:3ee11c82acdb | 20 | #define INA230_ADDR_VA 0x8c |
loopsva | 3:3ee11c82acdb | 21 | #define INA230_ADDR_VL 0x8e |
loopsva | 3:3ee11c82acdb | 22 | #define INA230_ADDR_AG 0x90 |
loopsva | 3:3ee11c82acdb | 23 | #define INA230_ADDR_AV 0x92 |
loopsva | 3:3ee11c82acdb | 24 | #define INA230_ADDR_AA 0x94 |
loopsva | 3:3ee11c82acdb | 25 | #define INA230_ADDR_AL 0x96 |
loopsva | 3:3ee11c82acdb | 26 | #define INA230_ADDR_LG 0x98 |
loopsva | 3:3ee11c82acdb | 27 | #define INA230_ADDR_LV 0x9a |
loopsva | 3:3ee11c82acdb | 28 | #define INA230_ADDR_LA 0x9c |
loopsva | 3:3ee11c82acdb | 29 | #define INA230_ADDR_LL 0x9e |
loopsva | 3:3ee11c82acdb | 30 | |
loopsva | 3:3ee11c82acdb | 31 | // INA230 ID |
loopsva | 3:3ee11c82acdb | 32 | #define INA_219_DIE 0x4000 |
loopsva | 3:3ee11c82acdb | 33 | #define INA_230_DIE 0x2260 |
loopsva | 3:3ee11c82acdb | 34 | |
loopsva | 3:3ee11c82acdb | 35 | // INA230 register set |
loopsva | 3:3ee11c82acdb | 36 | #define INA230_CONFIG 0x00 |
loopsva | 3:3ee11c82acdb | 37 | #define INA230_SHUNT_V 0x01 |
loopsva | 3:3ee11c82acdb | 38 | #define INA230_BUS_VOLT 0x02 |
loopsva | 3:3ee11c82acdb | 39 | #define INA230_POWER 0x03 |
loopsva | 3:3ee11c82acdb | 40 | #define INA230_CURRENT 0x04 |
loopsva | 3:3ee11c82acdb | 41 | #define INA230_CALIB 0x05 |
loopsva | 3:3ee11c82acdb | 42 | #define INA230_MASK_ENABLE 0x06 |
loopsva | 3:3ee11c82acdb | 43 | #define INA230_ALERT_LIMIT 0x07 |
loopsva | 3:3ee11c82acdb | 44 | #define INA230_DIE_ID 0xff |
loopsva | 3:3ee11c82acdb | 45 | |
loopsva | 3:3ee11c82acdb | 46 | // CONFIG regisrer bits |
loopsva | 3:3ee11c82acdb | 47 | |
loopsva | 3:3ee11c82acdb | 48 | //Number of Averages in 230 CONFIG register |
loopsva | 3:3ee11c82acdb | 49 | #define INA230_AVG_1 0x0000 |
loopsva | 3:3ee11c82acdb | 50 | #define INA230_AVG_4 0x0200 |
loopsva | 3:3ee11c82acdb | 51 | #define INA230_AVG_16 0x0400 |
loopsva | 3:3ee11c82acdb | 52 | #define INA230_AVG_64 0x0600 |
loopsva | 3:3ee11c82acdb | 53 | #define INA230_AVG_128 0x0800 |
loopsva | 3:3ee11c82acdb | 54 | #define INA230_AVG_256 0x0a00 |
loopsva | 3:3ee11c82acdb | 55 | #define INA230_AVG_512 0x0c00 |
loopsva | 3:3ee11c82acdb | 56 | #define INA230_AVG_1024 0x0e00 |
loopsva | 3:3ee11c82acdb | 57 | |
loopsva | 3:3ee11c82acdb | 58 | //Bus Voltage Conv Time in 230 CONFIG REG |
loopsva | 3:3ee11c82acdb | 59 | #define INA230_BUS_CT_140u 0x0000 |
loopsva | 3:3ee11c82acdb | 60 | #define INA230_BUS_CT_204u 0x0040 |
loopsva | 3:3ee11c82acdb | 61 | #define INA230_BUS_CT_332u 0x0080 |
loopsva | 3:3ee11c82acdb | 62 | #define INA230_BUS_CT_588u 0x00c0 |
loopsva | 3:3ee11c82acdb | 63 | #define INA230_BUS_CT_1m100 0x0100 |
loopsva | 3:3ee11c82acdb | 64 | #define INA230_BUS_CT_2m116 0x0140 |
loopsva | 3:3ee11c82acdb | 65 | #define INA230_BUS_CT_4m156 0x0180 |
loopsva | 3:3ee11c82acdb | 66 | #define INA230_BUS_CT_8m244 0x01c0 |
loopsva | 3:3ee11c82acdb | 67 | |
loopsva | 3:3ee11c82acdb | 68 | //Shunt Voltage Conv Time in 230 CONFIG REG |
loopsva | 3:3ee11c82acdb | 69 | #define INA230_SHUNT_CT_140u 0x0000 |
loopsva | 3:3ee11c82acdb | 70 | #define INA230_SHUNT_CT_204u 0x0008 |
loopsva | 3:3ee11c82acdb | 71 | #define INA230_SHUNT_CT_332u 0x0010 |
loopsva | 3:3ee11c82acdb | 72 | #define INA230_SHUNT_CT_588u 0x0018 |
loopsva | 3:3ee11c82acdb | 73 | #define INA230_SHUNT_CT_1m100 0x0020 |
loopsva | 3:3ee11c82acdb | 74 | #define INA230_SHUNT_CT_2m116 0x0028 |
loopsva | 3:3ee11c82acdb | 75 | #define INA230_SHUNT_CT_4m156 0x0030 |
loopsva | 3:3ee11c82acdb | 76 | #define INA230_SHUNT_CT_8m244 0x0038 |
loopsva | 3:3ee11c82acdb | 77 | |
loopsva | 3:3ee11c82acdb | 78 | // Set data into "mode" |
loopsva | 3:3ee11c82acdb | 79 | #define INA230_PAR_M_PDWN 0 |
loopsva | 3:3ee11c82acdb | 80 | #define INA230_PAR_M_SHNT_TRG 1 |
loopsva | 3:3ee11c82acdb | 81 | #define INA230_PAR_M_BUS_TRG 2 |
loopsva | 3:3ee11c82acdb | 82 | #define INA230_PAR_M_SHNTBUS_TRG 3 |
loopsva | 3:3ee11c82acdb | 83 | #define INA230_PAR_M_ADC_OFF 4 |
loopsva | 3:3ee11c82acdb | 84 | #define INA230_PAR_M_SHNT_CONT 5 |
loopsva | 3:3ee11c82acdb | 85 | #define INA230_PAR_M_BUS_CONT 6 |
loopsva | 3:3ee11c82acdb | 86 | #define INA230_PAR_M_SHNTBUS_CONT 7 // Default |
loopsva | 3:3ee11c82acdb | 87 | |
loopsva | 3:3ee11c82acdb | 88 | // Mask/Enable and Alert/Limit regisrer bits |
loopsva | 3:3ee11c82acdb | 89 | #define INA230_MEAL_SOL 0x8000 |
loopsva | 3:3ee11c82acdb | 90 | #define INA230_MEAL_SUL 0x4000 |
loopsva | 3:3ee11c82acdb | 91 | #define INA230_MEAL_BOL 0x2000 |
loopsva | 3:3ee11c82acdb | 92 | #define INA230_MEAL_BUL 0x1000 |
loopsva | 3:3ee11c82acdb | 93 | #define INA230_MEAL_POL 0x0800 |
loopsva | 3:3ee11c82acdb | 94 | #define INA230_MEAL_CNVR 0x0400 |
loopsva | 3:3ee11c82acdb | 95 | |
loopsva | 3:3ee11c82acdb | 96 | #define INA230_MEAL_AFF 0x0010 |
loopsva | 3:3ee11c82acdb | 97 | #define INA230_MEAL_CVRF 0x0008 |
loopsva | 3:3ee11c82acdb | 98 | #define INA230_MEAL_OVF 0x0004 |
loopsva | 3:3ee11c82acdb | 99 | #define INA230_MEAL_APOL 0x0002 |
loopsva | 3:3ee11c82acdb | 100 | #define INA230_MEAL_LEN 0x0001 |
loopsva | 3:3ee11c82acdb | 101 | |
loopsva | 3:3ee11c82acdb | 102 | // Set data into "shunt_register" |
loopsva | 3:3ee11c82acdb | 103 | #define INA230_PAR_R_005MOHM 5 |
loopsva | 3:3ee11c82acdb | 104 | #define INA230_PAR_R_010MOHM 10 |
loopsva | 3:3ee11c82acdb | 105 | #define INA230_PAR_R_020MOHM 20 |
loopsva | 3:3ee11c82acdb | 106 | #define INA230_PAR_R_025MOHM 25 |
loopsva | 3:3ee11c82acdb | 107 | #define INA230_PAR_R_033MOHM 33 |
loopsva | 3:3ee11c82acdb | 108 | #define INA230_PAR_R_050MOHM 50 |
loopsva | 3:3ee11c82acdb | 109 | #define INA230_PAR_R_068MOHM 68 |
loopsva | 3:3ee11c82acdb | 110 | #define INA230_PAR_R_075MOHM 75 |
loopsva | 3:3ee11c82acdb | 111 | #define INA230_PAR_R_100MOHM 100 |
loopsva | 3:3ee11c82acdb | 112 | |
loopsva | 3:3ee11c82acdb | 113 | |
loopsva | 3:3ee11c82acdb | 114 | /** |
loopsva | 3:3ee11c82acdb | 115 | * Private data structure for INA230 data values. |
loopsva | 3:3ee11c82acdb | 116 | * |
loopsva | 3:3ee11c82acdb | 117 | **/ |
loopsva | 3:3ee11c82acdb | 118 | typedef struct { |
loopsva | 3:3ee11c82acdb | 119 | // I2C Address |
loopsva | 3:3ee11c82acdb | 120 | uint8_t addr; /*!< I2C address*/ |
loopsva | 3:3ee11c82acdb | 121 | //Alternate CONFIG |
loopsva | 3:3ee11c82acdb | 122 | uint16_t average; /*!< CONFIG Reg - Averaging bits 11-9*/ |
loopsva | 3:3ee11c82acdb | 123 | uint16_t bus_ct; /*!< CONFIG Reg - Bus CT bits 8-6 */ |
loopsva | 3:3ee11c82acdb | 124 | uint16_t shunt_ct; /*!< CONFIG Reg - Shunt CT bits 5-3*/ |
loopsva | 3:3ee11c82acdb | 125 | uint16_t mode; /*!< CONFIG Reg - Mode bits 2-0*/ |
loopsva | 3:3ee11c82acdb | 126 | // CALBLATION REG |
loopsva | 3:3ee11c82acdb | 127 | uint16_t cal_data; /*!< CALIB Reg value*/ |
loopsva | 3:3ee11c82acdb | 128 | //DIE ID REG |
loopsva | 3:3ee11c82acdb | 129 | uint16_t die_id_data; /*!< Device ID - s/b 0x2260*/ |
loopsva | 3:3ee11c82acdb | 130 | int16_t shunt_res; /*!< Shunt Resistor value * 100, 100 = 0.100 ohm*/ |
loopsva | 3:3ee11c82acdb | 131 | } INA230_TypeDef; |
loopsva | 3:3ee11c82acdb | 132 | |
loopsva | 3:3ee11c82acdb | 133 | /** |
loopsva | 3:3ee11c82acdb | 134 | * Default values for data structure above |
loopsva | 3:3ee11c82acdb | 135 | * |
loopsva | 3:3ee11c82acdb | 136 | **/ |
loopsva | 3:3ee11c82acdb | 137 | const INA230_TypeDef ina230_std_paramtr = { |
loopsva | 3:3ee11c82acdb | 138 | // I2C Address |
loopsva | 3:3ee11c82acdb | 139 | INA230_ADDR_GG, |
loopsva | 3:3ee11c82acdb | 140 | // CONFIG Register |
loopsva | 3:3ee11c82acdb | 141 | INA230_AVG_16, // averages |
loopsva | 3:3ee11c82acdb | 142 | INA230_BUS_CT_588u, // bus voltage conv time |
loopsva | 3:3ee11c82acdb | 143 | INA230_SHUNT_CT_588u, // bus voltage conv time |
loopsva | 3:3ee11c82acdb | 144 | INA230_PAR_M_SHNTBUS_CONT, // Measure continuously both Shunt voltage and Bus voltage |
loopsva | 3:3ee11c82acdb | 145 | // Calibration Register |
loopsva | 3:3ee11c82acdb | 146 | 16384, // Calibration data |
loopsva | 3:3ee11c82acdb | 147 | //Die ID Register |
loopsva | 3:3ee11c82acdb | 148 | 0, // should be non-zero if read correctly |
loopsva | 3:3ee11c82acdb | 149 | // Shuny Resistor |
loopsva | 3:3ee11c82acdb | 150 | INA230_PAR_R_075MOHM // shunt resistor value |
loopsva | 3:3ee11c82acdb | 151 | }; |
loopsva | 3:3ee11c82acdb | 152 | |
loopsva | 3:3ee11c82acdb | 153 | /** INA230 High/Low-Side Measurement,Bi-Directional CURRENT/POWER MONITOR with I2C Interface |
loopsva | 3:3ee11c82acdb | 154 | * |
loopsva | 3:3ee11c82acdb | 155 | * @code |
loopsva | 3:3ee11c82acdb | 156 | * // |
loopsva | 3:3ee11c82acdb | 157 | * // to date, only tested with... |
loopsva | 3:3ee11c82acdb | 158 | * // * 0.050 shunt resistor |
loopsva | 3:3ee11c82acdb | 159 | * // * I2C address 0x80 (1000000xb) |
loopsva | 3:3ee11c82acdb | 160 | * // * +-0-1.5A range |
loopsva | 3:3ee11c82acdb | 161 | * // * 0-2.8V range |
loopsva | 3:3ee11c82acdb | 162 | * // |
loopsva | 3:3ee11c82acdb | 163 | * @endcode |
loopsva | 3:3ee11c82acdb | 164 | */ |
loopsva | 3:3ee11c82acdb | 165 | |
loopsva | 3:3ee11c82acdb | 166 | class INA230 |
loopsva | 3:3ee11c82acdb | 167 | { |
loopsva | 3:3ee11c82acdb | 168 | public: |
loopsva | 3:3ee11c82acdb | 169 | /** Configure data pin |
loopsva | 3:3ee11c82acdb | 170 | * @param data SDA and SCL pins |
loopsva | 3:3ee11c82acdb | 171 | * @param parameter address chip (INA230_TypeDef) |
loopsva | 3:3ee11c82acdb | 172 | * @param or just set address or just port |
loopsva | 3:3ee11c82acdb | 173 | */ |
loopsva | 3:3ee11c82acdb | 174 | INA230(PinName p_sda, PinName p_scl, const INA230_TypeDef *ina230_parameter); |
loopsva | 3:3ee11c82acdb | 175 | INA230(PinName p_sda, PinName p_scl, uint8_t addr); |
loopsva | 3:3ee11c82acdb | 176 | INA230(PinName p_sda, PinName p_scl); |
loopsva | 3:3ee11c82acdb | 177 | |
loopsva | 3:3ee11c82acdb | 178 | /** Configure data pin (with other devices on I2C line) |
loopsva | 3:3ee11c82acdb | 179 | * @param I2C previous definition |
loopsva | 3:3ee11c82acdb | 180 | * @param parameter address chip (INA230_TypeDef) |
loopsva | 3:3ee11c82acdb | 181 | * @param or just set address or just port |
loopsva | 3:3ee11c82acdb | 182 | */ |
loopsva | 3:3ee11c82acdb | 183 | INA230(I2C& p_i2c, const INA230_TypeDef *ina230_parameter); |
loopsva | 3:3ee11c82acdb | 184 | INA230(I2C& p_i2c, uint8_t addr); |
loopsva | 3:3ee11c82acdb | 185 | INA230(I2C& p_i2c); |
loopsva | 3:3ee11c82acdb | 186 | |
loopsva | 3:3ee11c82acdb | 187 | /** Read Current data |
loopsva | 3:3ee11c82acdb | 188 | * @param none |
loopsva | 3:3ee11c82acdb | 189 | * @return current [mA] |
loopsva | 3:3ee11c82acdb | 190 | */ |
loopsva | 3:3ee11c82acdb | 191 | float read_current(void); |
loopsva | 3:3ee11c82acdb | 192 | int16_t read_current_reg(void); |
loopsva | 3:3ee11c82acdb | 193 | float read_current_by_shuntvolt(void); |
loopsva | 3:3ee11c82acdb | 194 | |
loopsva | 3:3ee11c82acdb | 195 | /** Read Power data |
loopsva | 3:3ee11c82acdb | 196 | * @param none |
loopsva | 3:3ee11c82acdb | 197 | * @return power [w] |
loopsva | 3:3ee11c82acdb | 198 | */ |
loopsva | 3:3ee11c82acdb | 199 | float read_power(void); |
loopsva | 3:3ee11c82acdb | 200 | |
loopsva | 3:3ee11c82acdb | 201 | /** Read Bus voltage |
loopsva | 3:3ee11c82acdb | 202 | * @param none |
loopsva | 3:3ee11c82acdb | 203 | * @return voltage [v] |
loopsva | 3:3ee11c82acdb | 204 | */ |
loopsva | 3:3ee11c82acdb | 205 | float read_bus_voltage(void); |
loopsva | 3:3ee11c82acdb | 206 | |
loopsva | 3:3ee11c82acdb | 207 | /** Read Shunt voltage data |
loopsva | 3:3ee11c82acdb | 208 | * @param none |
loopsva | 3:3ee11c82acdb | 209 | * @return voltage [v] |
loopsva | 3:3ee11c82acdb | 210 | */ |
loopsva | 3:3ee11c82acdb | 211 | float read_shunt_voltage(void); |
loopsva | 3:3ee11c82acdb | 212 | |
loopsva | 3:3ee11c82acdb | 213 | /** Read configration reg. |
loopsva | 3:3ee11c82acdb | 214 | * @param none |
loopsva | 3:3ee11c82acdb | 215 | * @return configrartion register value |
loopsva | 3:3ee11c82acdb | 216 | */ |
loopsva | 3:3ee11c82acdb | 217 | uint16_t read_config(void); |
loopsva | 3:3ee11c82acdb | 218 | |
loopsva | 3:3ee11c82acdb | 219 | /** Set configration reg. |
loopsva | 3:3ee11c82acdb | 220 | * @param |
loopsva | 3:3ee11c82acdb | 221 | * @return configrartion register value |
loopsva | 3:3ee11c82acdb | 222 | */ |
loopsva | 3:3ee11c82acdb | 223 | uint16_t set_config(uint16_t cfg); |
loopsva | 3:3ee11c82acdb | 224 | |
loopsva | 3:3ee11c82acdb | 225 | /** Read calibration reg. |
loopsva | 3:3ee11c82acdb | 226 | * @param none |
loopsva | 3:3ee11c82acdb | 227 | * @return calibration register value |
loopsva | 3:3ee11c82acdb | 228 | */ |
loopsva | 3:3ee11c82acdb | 229 | uint16_t read_calb(void); |
loopsva | 3:3ee11c82acdb | 230 | |
loopsva | 3:3ee11c82acdb | 231 | /** Set calibration reg. |
loopsva | 3:3ee11c82acdb | 232 | * @param |
loopsva | 3:3ee11c82acdb | 233 | * @return calibration register value |
loopsva | 3:3ee11c82acdb | 234 | */ |
loopsva | 3:3ee11c82acdb | 235 | uint16_t set_calb(uint16_t clb); |
loopsva | 3:3ee11c82acdb | 236 | |
loopsva | 3:3ee11c82acdb | 237 | /** Set I2C clock frequency |
loopsva | 3:3ee11c82acdb | 238 | * @param freq. |
loopsva | 3:3ee11c82acdb | 239 | * @return none |
loopsva | 3:3ee11c82acdb | 240 | */ |
loopsva | 3:3ee11c82acdb | 241 | void frequency(int hz); |
loopsva | 3:3ee11c82acdb | 242 | |
loopsva | 3:3ee11c82acdb | 243 | /** Read register (general purpose) |
loopsva | 3:3ee11c82acdb | 244 | * @param register's address |
loopsva | 3:3ee11c82acdb | 245 | * @return register data |
loopsva | 3:3ee11c82acdb | 246 | */ |
loopsva | 3:3ee11c82acdb | 247 | uint8_t read_reg(uint8_t addr); |
loopsva | 3:3ee11c82acdb | 248 | |
loopsva | 3:3ee11c82acdb | 249 | /** Write register (general purpose) |
loopsva | 3:3ee11c82acdb | 250 | * @param register's address |
loopsva | 3:3ee11c82acdb | 251 | * @param data |
loopsva | 3:3ee11c82acdb | 252 | * @return register data |
loopsva | 3:3ee11c82acdb | 253 | */ |
loopsva | 3:3ee11c82acdb | 254 | uint8_t write_reg(uint8_t addr, uint8_t data); |
loopsva | 3:3ee11c82acdb | 255 | /* |
loopsva | 3:3ee11c82acdb | 256 | / ** Temporary display of data structure for debug |
loopsva | 3:3ee11c82acdb | 257 | * - Needs "Rawserial pc;" statement |
loopsva | 3:3ee11c82acdb | 258 | * @param none |
loopsva | 3:3ee11c82acdb | 259 | * @return none |
loopsva | 3:3ee11c82acdb | 260 | * / |
loopsva | 3:3ee11c82acdb | 261 | void dumpStructure(); |
loopsva | 3:3ee11c82acdb | 262 | */ |
loopsva | 3:3ee11c82acdb | 263 | /** Get the Die ID value |
loopsva | 3:3ee11c82acdb | 264 | * @param none |
loopsva | 3:3ee11c82acdb | 265 | * @return register data |
loopsva | 3:3ee11c82acdb | 266 | */ |
loopsva | 3:3ee11c82acdb | 267 | uint16_t read_die_id(); |
loopsva | 3:3ee11c82acdb | 268 | |
loopsva | 3:3ee11c82acdb | 269 | /** Get the Mask/Enable value |
loopsva | 3:3ee11c82acdb | 270 | * @param none |
loopsva | 3:3ee11c82acdb | 271 | * @return register data |
loopsva | 3:3ee11c82acdb | 272 | */ |
loopsva | 3:3ee11c82acdb | 273 | uint16_t read_mask_enable(); |
loopsva | 3:3ee11c82acdb | 274 | |
loopsva | 3:3ee11c82acdb | 275 | /** Get the Alert/Limit value |
loopsva | 3:3ee11c82acdb | 276 | * @param none |
loopsva | 3:3ee11c82acdb | 277 | * @return register data |
loopsva | 3:3ee11c82acdb | 278 | */ |
loopsva | 3:3ee11c82acdb | 279 | uint16_t read_alert_limit(); |
loopsva | 3:3ee11c82acdb | 280 | |
loopsva | 3:3ee11c82acdb | 281 | /** Set the Mask/Enable value |
loopsva | 3:3ee11c82acdb | 282 | * @param data for register |
loopsva | 3:3ee11c82acdb | 283 | * @return data sent |
loopsva | 3:3ee11c82acdb | 284 | */ |
loopsva | 3:3ee11c82acdb | 285 | uint16_t set_mask_enable(uint16_t cfg); |
loopsva | 3:3ee11c82acdb | 286 | |
loopsva | 3:3ee11c82acdb | 287 | /** Set the Alert/Limit value |
loopsva | 3:3ee11c82acdb | 288 | * @param data for register |
loopsva | 3:3ee11c82acdb | 289 | * @return data sent |
loopsva | 3:3ee11c82acdb | 290 | */ |
loopsva | 3:3ee11c82acdb | 291 | uint16_t set_alert_limit(uint16_t cfg); |
loopsva | 3:3ee11c82acdb | 292 | |
loopsva | 3:3ee11c82acdb | 293 | /** Get the Shunt Resistor value |
loopsva | 3:3ee11c82acdb | 294 | * @param none |
loopsva | 3:3ee11c82acdb | 295 | * @return resistor value * 100 |
loopsva | 3:3ee11c82acdb | 296 | */ |
loopsva | 3:3ee11c82acdb | 297 | int16_t get_shunt_res(); |
loopsva | 3:3ee11c82acdb | 298 | |
loopsva | 3:3ee11c82acdb | 299 | protected: |
loopsva | 3:3ee11c82acdb | 300 | I2C _i2c; |
loopsva | 3:3ee11c82acdb | 301 | |
loopsva | 3:3ee11c82acdb | 302 | void initialize(void); |
loopsva | 3:3ee11c82acdb | 303 | |
loopsva | 3:3ee11c82acdb | 304 | private: |
loopsva | 3:3ee11c82acdb | 305 | INA230_TypeDef ina230_set_data; |
loopsva | 3:3ee11c82acdb | 306 | int32_t scale_factor; |
loopsva | 3:3ee11c82acdb | 307 | uint8_t dt[4]; |
loopsva | 3:3ee11c82acdb | 308 | |
loopsva | 3:3ee11c82acdb | 309 | }; |
loopsva | 3:3ee11c82acdb | 310 | |
loopsva | 3:3ee11c82acdb | 311 | #endif // MBED_INA230 |