text export

Dependencies:   X_NUCLEO_IKS01A3

INA237/INA237.h

Committer:
gpmbed
Date:
2021-05-19
Revision:
9:8c7774aca512

File content as of revision 9:8c7774aca512:

/*
 *  ======== INA237.h ========
 *  INA237 Interface
 */
#ifndef ti_sensors_INA237__include
#define ti_sensors_INA237__include 1

#include <stdint.h>

/* support C++ sources */
#ifdef __cplusplus
extern "C" {
#endif

#define INA237_config_register 0x00U
#define INA237_config_register_rst_NormalOperation 0x0000U
#define INA237_config_register_rst_SystemReset 0x8000U
#define INA237_config_register_reserved0_ENABLE 0x4000U
#define INA237_config_register_reserved0_DISABLE 0x0000U
#define INA237_config_register_tempcomp_Shunttemperaturecompensationdisabled 0x0000U
#define INA237_config_register_tempcomp_Shunttemperaturecompensationenabled 0x0020U
#define INA237_config_register_adcrange_16384mV 0x0000U
#define INA237_config_register_adcrange_4096mV 0x0010U
#define INA237_adc_config_register 0x01U
#define INA237_adc_config_register_mode_Shutdown0 0x0000U
#define INA237_adc_config_register_mode_Busvoltagetriggeredsingleshot 0x1000U
#define INA237_adc_config_register_mode_Shuntvoltagetriggeredsingleshot 0x2000U
#define INA237_adc_config_register_mode_Shuntvoltageandbusvoltagetriggeredsingleshot 0x3000U
#define INA237_adc_config_register_mode_Temperaturemeasurementtriggeredsingleshot 0x4000U
#define INA237_adc_config_register_mode_Temperatureandbusvoltagemeasurementtriggeredsingleshot 0x5000U
#define INA237_adc_config_register_mode_Temperatureandshuntvoltagemeasurementtriggeredsingeshot 0x6000U
#define INA237_adc_config_register_mode_Busvoltageshuntvoltageandtemperaturemeasurementtriggeredsingleshot 0x7000U
#define INA237_adc_config_register_mode_Shutdown1 0x8000U
#define INA237_adc_config_register_mode_Continuousbusvoltageonly 0x9000U
#define INA237_adc_config_register_mode_Continuousshuntvoltageonly 0xA000U
#define INA237_adc_config_register_mode_Continuousshuntandbusvoltage 0xB000U
#define INA237_adc_config_register_mode_Continuoustemperatureonly 0xC000U
#define INA237_adc_config_register_mode_Continuousbusvoltageandtemperature 0xD000U
#define INA237_adc_config_register_mode_Continuoustemperatureandshuntvoltage 0xE000U
#define INA237_adc_config_register_mode_Continuousbusvoltageshuntvoltageandtemperature 0xF000U
#define INA237_adc_config_register_vbusct_50us 0x0000U
#define INA237_adc_config_register_vbusct_84us 0x0200U
#define INA237_adc_config_register_vbusct_150us 0x0400U
#define INA237_adc_config_register_vbusct_280us 0x0600U
#define INA237_adc_config_register_vbusct_540us 0x0800U
#define INA237_adc_config_register_vbusct_1052us 0x0A00U
#define INA237_adc_config_register_vbusct_2074us 0x0C00U
#define INA237_adc_config_register_vbusct_4120us 0x0E00U
#define INA237_adc_config_register_vshct_50us 0x0000U
#define INA237_adc_config_register_vshct_84us 0x0040U
#define INA237_adc_config_register_vshct_150us 0x0080U
#define INA237_adc_config_register_vshct_280us 0x00C0U
#define INA237_adc_config_register_vshct_540us 0x0100U
#define INA237_adc_config_register_vshct_1052us 0x0140U
#define INA237_adc_config_register_vshct_2074us 0x0180U
#define INA237_adc_config_register_vshct_4120us 0x01C0U
#define INA237_adc_config_register_vtct_50us 0x0000U
#define INA237_adc_config_register_vtct_84us 0x0008U
#define INA237_adc_config_register_vtct_150us 0x0010U
#define INA237_adc_config_register_vtct_280us 0x0018U
#define INA237_adc_config_register_vtct_540us 0x0020U
#define INA237_adc_config_register_vtct_1052us 0x0028U
#define INA237_adc_config_register_vtct_2074us 0x0030U
#define INA237_adc_config_register_vtct_4120us 0x0038U
#define INA237_adc_config_register_avg_1 0x0000U
#define INA237_adc_config_register_avg_4 0x0001U
#define INA237_adc_config_register_avg_16 0x0002U
#define INA237_adc_config_register_avg_64 0x0003U
#define INA237_adc_config_register_avg_128 0x0004U
#define INA237_adc_config_register_avg_256 0x0005U
#define INA237_adc_config_register_avg_512 0x0006U
#define INA237_adc_config_register_avg_1024 0x0007U
#define INA237_shunt_cal_register 0x02U
#define INA237_shunt_cal_register_reserved0_ENABLE 0x8000U
#define INA237_shunt_cal_register_reserved0_DISABLE 0x0000U
#define INA237_vshunt_register 0x04U
#define INA237_vbus_register 0x05U
#define INA237_dietemp_register 0x06U
#define INA237_current_register 0x07U
#define INA237_power_register 0x08U
#define INA237_diag_alrt_register 0x0BU
#define INA237_diag_alrt_register_alrlen_Transparent 0x0000U
#define INA237_diag_alrt_register_alrlen_LatchedAlertpin 0x8000U
#define INA237_diag_alrt_register_cnvr_DisableconversionreadyflagonALERTpin 0x0000U
#define INA237_diag_alrt_register_cnvr_EnablesconversionreadyflagonALERTpin 0x4000U
#define INA237_diag_alrt_register_slwalrt_ALERTcomparisononnonaveragedADCvalue 0x0000U
#define INA237_diag_alrt_register_slwalrt_ALERTcomparisononaveragedvalue 0x2000U
#define INA237_diag_alrt_register_apol_Normalactivelowopendrain 0x0000U
#define INA237_diag_alrt_register_apol_Invertedactivehighopendrain 0x1000U
#define INA237_diag_alrt_register_enrgof_ENABLE 0x0800U
#define INA237_diag_alrt_register_enrgof_DISABLE 0x0000U
#define INA237_diag_alrt_register_chrof_ENABLE 0x0400U
#define INA237_diag_alrt_register_chrof_DISABLE 0x0000U
#define INA237_diag_alrt_register_movf_ENABLE 0x0200U
#define INA237_diag_alrt_register_movf_DISABLE 0x0000U
#define INA237_diag_alrt_register_reserved0_ENABLE 0x0100U
#define INA237_diag_alrt_register_reserved0_DISABLE 0x0000U
#define INA237_diag_alrt_register_tmpol_ENABLE 0x0080U
#define INA237_diag_alrt_register_tmpol_DISABLE 0x0000U
#define INA237_diag_alrt_register_shntol_ENABLE 0x0040U
#define INA237_diag_alrt_register_shntol_DISABLE 0x0000U
#define INA237_diag_alrt_register_shntul_ENABLE 0x0020U
#define INA237_diag_alrt_register_shntul_DISABLE 0x0000U
#define INA237_diag_alrt_register_busol_ENABLE 0x0010U
#define INA237_diag_alrt_register_busol_DISABLE 0x0000U
#define INA237_diag_alrt_register_busul_ENABLE 0x0008U
#define INA237_diag_alrt_register_busul_DISABLE 0x0000U
#define INA237_diag_alrt_register_pol_ENABLE 0x0004U
#define INA237_diag_alrt_register_pol_DISABLE 0x0000U
#define INA237_diag_alrt_register_chvrf_ENABLE 0x0002U
#define INA237_diag_alrt_register_chvrf_DISABLE 0x0000U
#define INA237_diag_alrt_register_memstat_ENABLE 0x0001U
#define INA237_diag_alrt_register_memstat_DISABLE 0x0000U
#define INA237_sovl_register 0x0CU
#define INA237_suvl_register 0x0DU
#define INA237_bovl_register 0x0EU
#define INA237_buvl_register 0x0FU
#define INA237_temp_limit_register 0x10U
#define INA237_pwr_limit_register 0x11U
#define INA237_manufacture_id_register 0x3EU


/*
 *  ======== INA237_State ========
 *  Initial configuration state for a INA237 sensor
 */
typedef struct INA237_State {
    uint16_t config; //config_register
    uint16_t adcconfig; //adc_config_register
    uint16_t shuntcal; //shunt_cal_register
    uint16_t diagalrt; //diag_alrt_register
    uint16_t sovl; //sovl_register
    uint16_t suvl; //suvl_registerx
    uint16_t bovl; //bovl_register
    uint16_t buvl; //buvl_register
    uint16_t templimit; //temp_limit_register
    uint16_t pwrlimit; //pwr_limit_register

    uint16_t adcrange; //config_register_adcrange
    float currentlsb; //current lsb value

    uint8_t busId;   /* I2C bus id */
    uint8_t devAddr; /* Sensor's I2C address on the bus */

    uint16_t osWait; /* One shot conversion time (in ms)  */
} INA237_State;

/*
 *  ======== INA237_Handle ========
 *  First argument to all INA237 methods
 */
typedef INA237_State *INA237_Handle;

/*
 *  ======== INA237_writeReg ========
  * Write register
  */
extern void INA237_writeReg(INA237_Handle sensor, uint8_t regAddr, uint16_t value);

/*
 *  ======== INA237_config ========
 *  Configure device with current settings
 */
extern void INA237_config(INA237_Handle sensor);

/*
 *  ======== INA237_setCURRENT_LSB ========
 *  Set the CURRENT_LSB value used for calculations
 */
extern void INA237_setCURRENT_LSB(INA237_Handle sensor, float CURRENT_LSB);

/*
 *  ======== INA237_readReg ========
 *  Read register
 */
extern uint64_t INA237_readReg(INA237_Handle sensor, uint8_t regAddr);

/*
 *  ======== INA237_getVSHUNT_mV ========
 *  Get VSHUNT value (mV)
 */
extern float INA237_getVSHUNT_mV(INA237_Handle sensor);

/*
 *  ======== INA237_getVBUS_V ========
 *  Get VBUS value (V)
 */
extern float INA237_getVBUS_V(INA237_Handle sensor);

/*
 *  ======== INA237_getDIETEMP_C ========
 *  Get DIETMEP value (C)
 */
extern float INA237_getDIETEMP_C(INA237_Handle sensor);

/*
 *  ======== INA237_getDIETEMP_F ========
 *  Get DIETMEP value (F)
 */
extern float INA237_getDIETEMP_F(INA237_Handle sensor);

/*
 *  ======== INA237_getCURRENT_signedLSB ========
 *  Get CURRENT value (signed value in LSBs)
 */
extern float INA237_getCURRENT_signedLSB(INA237_Handle sensor);

/*
 *  ======== INA237_getCURRENT_A ========
 *  Get CURRENT value (A)
 */
extern float INA237_getCURRENT_A(INA237_Handle sensor);

/*
 *  ======== INA237_getPOWER_signedLSB ========
 *  Get POWER value (signed value in LSBs)
 */
extern float INA237_getPOWER_signedLSB(INA237_Handle sensor);

/*
 *  ======== INA237_getPOWER_W ========
 *  Get POWER value (W)
 */
extern float INA237_getPOWER_W(INA237_Handle sensor);

/* support C++ sources */
#ifdef __cplusplus
}
#endif

#endif