#ifndef __INA233_H_ #define __INA233_H_ #include #define INA233_ALERT_RESPONSE_ADDRESS 0x0C // Alert response slave address (0001 100) #define INA233_ADDRESS 0x40 // A0 and A1 are connected to GND #define MAX_TX_COMMAND_LEN 3 // 2+1 Comments: See INA233 manual, "Supported PMBus Commands" table, column NUMBER OF DATA BYTES #define MAX_RX_COMMAND_LEN 7 // 6+1 Comments: See INA233 manual, "Supported PMBus Commands" table, column NUMBER OF DATA BYTES // Commands #define INA233_COMMAND_CLEAR_FAULTS 0x03 #define INA233_COMMAND_CLEAR_FAULTS_TX_LEN 1 #define INA233_COMMAND_MFR_ID 0x99 #define INA233_COMMAND_MFR_ID_TX_LEN 1 #define INA233_COMMAND_MFR_ID_RX_LEN (2+1) // See INA233 manual #define INA233_COMMAND_MFR_MODEL 0x9A #define INA233_COMMAND_MFR_MODEL_TX_LEN 1 #define INA233_COMMAND_MFR_MODEL_RX_LEN (6+1) // See INA233 manual #define INA233_COMMAND_MFR_REVISION 0x9B #define INA233_COMMAND_MFR_REVISION_TX_LEN 1 #define INA233_COMMAND_MFR_REVISION_RX_LEN (2+1) // See INA233 manual #define INA233_COMMAND_CAPABILITY 0x19 #define INA233_COMMAND_CAPABILITY_TX_LEN 1 #define INA233_COMMAND_CAPABILITY_RX_LEN (1+1) // See INA233 manual #define INA233_COMMAND_READ_VIN 0x88 #define INA233_COMMAND_READ_VIN_TX_LEN 1 #define INA233_COMMAND_READ_VIN_RX_LEN (2+1) // See INA233 manual #define INA233_COMMAND_READ_VSHUNT 0xD1 #define INA233_COMMAND_READ_VSHUNT_TX_LEN 1 #define INA233_COMMAND_READ_VSHUNT_RX_LEN (2+1) // See INA233 manual #define INA233_COMMAND_MFR_ALERT_MASK 0xD2 #define INA233_COMMAND_MFR_ALERT_MASK_READ_TX_LEN 1 #define INA233_COMMAND_MFR_ALERT_MASK_READ_RX_LEN (1+0) // See INA233 manual #define INA233_COMMAND_MFR_ALERT_MASK_WRITE_TX_LEN 2 //#define INA233_COMMAND_MFR_ALERT_MASK_WRITE_RX_LEN (1+0) // See INA233 manual #define INA233_COMMAND_MFR_ADC_CONFIG 0xD0 #define INA233_COMMAND_MFR_ADC_CONFIG_READ_TX_LEN 1 #define INA233_COMMAND_MFR_ADC_CONFIG_READ_RX_LEN (2+1) // See INA233 manual #define INA233_COMMAND_MFR_ADC_CONFIG_WRITE_TX_LEN 3 //#define INA233_COMMAND_MFR_ADC_CONFIG_WRITE_RX_LEN (2+1) // See INA233 manual #define INA233_COMMAND_MFR_DEVICE_CONFIG 0xD5 #define INA233_COMMAND_MFR_DEVICE_CONFIG_READ_TX_LEN 1 #define INA233_COMMAND_MFR_DEVICE_CONFIG_READ_RX_LEN 1 #define INA233_COMMAND_MFR_DEVICE_CONFIG_WRITE_TX_LEN 2 #define INA233_COMMAND_STATUS_MFR_SPECIFIC 0x80 #define INA233_COMMAND_STATUS_MFR_SPECIFIC_READ_TX_LEN 1 #define INA233_COMMAND_STATUS_MFR_SPECIFIC_READ_RX_LEN 1 #define INA233_COMMAND_STATUS_MFR_SPECIFIC_WRITE_TX_LEN 2 // Masks fields #define INA233_ALERT_MASK_ENABLE 1 #define INA233_ALERT_MASK_DISABLE 0 #define INA233_ALERT_MASK_CONVERSION_READY_POSITION 7 #define INA233_ALERT_MASK_ADC_OVERFLOW_POSITION 6 #define INA233_ALERT_MASK_POWER_ON_RESET_POSITION 5 #define INA233_ALERT_MASK_COMM_ERROR_POSITION 4 #define INA233_ALERT_MASK_OVERPOWER_POSITION 3 #define INA233_ALERT_MASK_OVERCURRENT_POSITION 2 #define INA233_ALERT_MASK_OVERVOLTAGE_POSITION 1 #define INA233_ALERT_MASK_UNDERVOLTAGE_POSITION 0 // ADC configuration fields #define INA233_ADC_CONFIG_MODE_POSITION 0 // MODE field position in the register #define INA233_ADC_CONFIG_MODE_POWER_DOWN_1 0 // Power-down (or shutdown) #define INA233_ADC_CONFIG_MODE_SHUNT_TRIGGERED 1 // Shunt voltage, triggered #define INA233_ADC_CONFIG_MODE_BUS_TRIGGERED 2 // Bus voltage, triggered #define INA233_ADC_CONFIG_MODE_SHUNT_BUS_TRIGGERED 3 // Shunt and bus, triggered #define INA233_ADC_CONFIG_MODE_POWER_DOWN_2 4 // Power-down (or shutdown) #define INA233_ADC_CONFIG_MODE_SHUNT_CONTINUOUS 5 // Shunt voltage, continuous #define INA233_ADC_CONFIG_MODE_BUS_CONTINUOUS 6 // Bus voltage, continuous #define INA233_ADC_CONFIG_MODE_SHUNT_BUS_CONTINUOUS 7 // Shunt and bus voltage, continuous (default) #define INA233_ADC_CONFIG_VSHCT_POSITION 3 // VSHCT field position in the register #define INA233_ADC_CONFIG_VSHCT_140_uS 0 // SHUNT voltage conversion time 140 µs #define INA233_ADC_CONFIG_VSHCT_204_uS 1 // SHUNT voltage conversion time 204 µs #define INA233_ADC_CONFIG_VSHCT_332_uS 2 // SHUNT voltage conversion time 332 µs #define INA233_ADC_CONFIG_VSHCT_588_uS 3 // SHUNT voltage conversion time 588 µs #define INA233_ADC_CONFIG_VSHCT_1_1_mS 4 // SHUNT voltage conversion time 1.1 ms (default) #define INA233_ADC_CONFIG_VSHCT_2_116_mS 5 // SHUNT voltage conversion time 2.116 ms #define INA233_ADC_CONFIG_VSHCT_4_156_mS 6 // SHUNT voltage conversion time 4.156 ms #define INA233_ADC_CONFIG_VSHCT_8_244_mS 7 // SHUNT voltage conversion time 8.244 ms #define INA233_ADC_CONFIG_VBUSCT_POSITION 6 // VBUSCT field position in the register #define INA233_ADC_CONFIG_VBUSCT_140_uS 0 // BUS voltage conversion time 140 µs #define INA233_ADC_CONFIG_VBUSCT_204_uS 1 // BUS voltage conversion time 204 µs #define INA233_ADC_CONFIG_VBUSCT_332_uS 2 // BUS voltage conversion time 332 µs #define INA233_ADC_CONFIG_VBUSCT_588_uS 3 // BUS voltage conversion time 588 µs #define INA233_ADC_CONFIG_VBUSCT_1_1_mS 4 // BUS voltage conversion time 1.1 ms (default) #define INA233_ADC_CONFIG_VBUSCT_2_116_mS 5 // BUS voltage conversion time 2.116 ms #define INA233_ADC_CONFIG_VBUSCT_4_156_mS 6 // BUS voltage conversion time 4.156 ms #define INA233_ADC_CONFIG_VBUSCT_8_244_mS 7 // BUS voltage conversion time 8.244 ms #define INA233_ADC_CONFIG_AVG_POSITION 9 // AVG field position in the register #define INA233_ADC_CONFIG_AVG_1 0 // Number of averages 1 (default) #define INA233_ADC_CONFIG_AVG_4 1 // Number of averages 4 #define INA233_ADC_CONFIG_AVG_16 2 // Number of averages 16 #define INA233_ADC_CONFIG_AVG_64 3 // Number of averages 64 #define INA233_ADC_CONFIG_AVG_128 4 // Number of averages 128 #define INA233_ADC_CONFIG_AVG_256 5 // Number of averages 256 #define INA233_ADC_CONFIG_AVG_512 6 // Number of averages 512 #define INA233_ADC_CONFIG_AVG_1024 7 // Number of averages 1024 #define INA233_ADC_CONFIG_RESERVED_POSITION 12 // Reserved field position #define INA233_ADC_CONFIG_RESERVED_DEFAULT 4 // Reserved filed default value #define INA233_COMMAND_RESTORE_DEFAULT_ALL 0x12 int INA233_GetRealVBUS(int16_t vbus_value); int INA233_Get_VSHUNT_uV(int16_t vshunt_value); #endif