text export

Dependencies:   X_NUCLEO_IKS01A3

Revision:
9:8c7774aca512
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/INA237/INA237.h	Wed May 19 15:54:08 2021 +0000
@@ -0,0 +1,231 @@
+/*
+ *  ======== 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