|
| 1 | +#ifndef __I2C_INA219_H |
| 2 | +#define __I2C_INA219_H |
| 3 | + |
| 4 | +#include "c_types.h" |
| 5 | +#include "ets_sys.h" |
| 6 | +#include "osapi.h" |
| 7 | + |
| 8 | +//#define INA219_ADDRESS 0x80 |
| 9 | +#define INA219_ADDRESS 0x82 |
| 10 | + |
| 11 | +#define INA219_REG_CONFIG 0x00 |
| 12 | +#define INA219_REG_SHUNTVOLTAGE 0x01 |
| 13 | +#define INA219_REG_BUSVOLTAGE 0x02 |
| 14 | +#define INA219_REG_POWER 0x03 |
| 15 | +#define INA219_REG_CURRENT 0x04 |
| 16 | +#define INA219_REG_CALIBRATION 0x05 |
| 17 | + |
| 18 | +typedef enum |
| 19 | +{ |
| 20 | + INA219_RANGE_16V = 0b0, |
| 21 | + INA219_RANGE_32V = 0b1 |
| 22 | +} ina219_range_t; |
| 23 | + |
| 24 | +typedef enum |
| 25 | +{ |
| 26 | + INA219_GAIN_40MV = 0b00, |
| 27 | + INA219_GAIN_80MV = 0b01, |
| 28 | + INA219_GAIN_160MV = 0b10, |
| 29 | + INA219_GAIN_320MV = 0b11 |
| 30 | +} ina219_gain_t; |
| 31 | + |
| 32 | +typedef enum |
| 33 | +{ |
| 34 | + INA219_BUS_RES_9BIT = 0b0000, |
| 35 | + INA219_BUS_RES_10BIT = 0b0001, |
| 36 | + INA219_BUS_RES_11BIT = 0b0010, |
| 37 | + INA219_BUS_RES_12BIT = 0b0011 |
| 38 | +} ina219_busRes_t; |
| 39 | + |
| 40 | +typedef enum |
| 41 | +{ |
| 42 | + INA219_SHUNT_RES_9BIT_1S = 0b0000, |
| 43 | + INA219_SHUNT_RES_10BIT_1S = 0b0001, |
| 44 | + INA219_SHUNT_RES_11BIT_1S = 0b0010, |
| 45 | + INA219_SHUNT_RES_12BIT_1S = 0b0011, |
| 46 | + INA219_SHUNT_RES_12BIT_2S = 0b1001, |
| 47 | + INA219_SHUNT_RES_12BIT_4S = 0b1010, |
| 48 | + INA219_SHUNT_RES_12BIT_8S = 0b1011, |
| 49 | + INA219_SHUNT_RES_12BIT_16S = 0b1100, |
| 50 | + INA219_SHUNT_RES_12BIT_32S = 0b1101, |
| 51 | + INA219_SHUNT_RES_12BIT_64S = 0b1110, |
| 52 | + INA219_SHUNT_RES_12BIT_128S = 0b1111 |
| 53 | +} ina219_shuntRes_t; |
| 54 | + |
| 55 | +typedef enum |
| 56 | +{ |
| 57 | + INA219_MODE_POWER_DOWN = 0b000, |
| 58 | + INA219_MODE_SHUNT_TRIG = 0b001, |
| 59 | + INA219_MODE_BUS_TRIG = 0b010, |
| 60 | + INA219_MODE_SHUNT_BUS_TRIG = 0b011, |
| 61 | + INA219_MODE_ADC_OFF = 0b100, |
| 62 | + INA219_MODE_SHUNT_CONT = 0b101, |
| 63 | + INA219_MODE_BUS_CONT = 0b110, |
| 64 | + INA219_MODE_SHUNT_BUS_CONT = 0b111, |
| 65 | +} ina219_mode_t; |
| 66 | + |
| 67 | +enum { |
| 68 | + CONFIGURE_READ_POWERDOWN = 0, |
| 69 | + GET_VOLTAGE, |
| 70 | + GET_CURRENT, |
| 71 | + GET_SHUNT_VOLTAGE, |
| 72 | + GET_POWER |
| 73 | +}; |
| 74 | + |
| 75 | +#define INA219_CALIBRATION_VALUE 4096 //RSHUNT = 0.1 ohm; max expected I = 1 A |
| 76 | +#define INA219_CONFIG_VALUE (INA219_RANGE_16V << 13 | INA219_GAIN_80MV << 11 | INA219_BUS_RES_12BIT << 7 | INA219_SHUNT_RES_12BIT_1S << 3) |
| 77 | + |
| 78 | +bool INA219_Init(void); |
| 79 | +int32_t INA219_GetVal(uint8 mode); |
| 80 | + |
| 81 | +#endif |
0 commit comments