Line data Source code
1 0 : /* 2 : * Copyright (c) 2021 Grinn 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_INA237_H_ 7 : #define ZEPHYR_INCLUDE_DT_BINDINGS_INA237_H_ 8 : 9 : #include <zephyr/dt-bindings/dt-util.h> 10 : 11 : /* Operating Mode */ 12 0 : #define INA237_CFG_HIGH_PRECISION BIT(4) 13 0 : #define INA237_OPER_MODE_SHUTDOWN 0x00 14 0 : #define INA237_OPER_MODE_BUS_VOLTAGE_TRIG 0x01 15 0 : #define INA237_OPER_MODE_SHUNT_VOLTAGE_TRIG 0x02 16 0 : #define INA237_OPER_MODE_SHUNT_BUS_VOLTAGE_TRIG 0x03 17 0 : #define INA237_OPER_MODE_TEMP_TRIG 0x04 18 0 : #define INA237_OPER_MODE_TEMP_BUS_VOLTAGE_TRIG 0x05 19 0 : #define INA237_OPER_MODE_TEMP_SHUNT_VOLTAGE_TRIG 0x06 20 0 : #define INA237_OPER_MODE_BUS_SHUNT_VOLTAGE_TEMP_TRIG 0x07 21 0 : #define INA237_OPER_MODE_BUS_VOLTAGE_CONT 0x09 22 0 : #define INA237_OPER_MODE_SHUNT_VOLTAGE_CONT 0x0A 23 0 : #define INA237_OPER_MODE_SHUNT_BUS_VOLTAGE_CONT 0x0B 24 0 : #define INA237_OPER_MODE_TEMP_CONT 0x0C 25 0 : #define INA237_OPER_MODE_BUS_VOLTAGE_TEMP_CONT 0x0D 26 0 : #define INA237_OPER_MODE_TEMP_SHUNT_VOLTAGE_CONT 0x0E 27 0 : #define INA237_OPER_MODE_BUS_SHUNT_VOLTAGE_TEMP_CONT 0x0F 28 : 29 : /* Conversion time for bus, shunt and temp in micro-seconds */ 30 0 : #define INA237_CONV_TIME_50 0x00 31 0 : #define INA237_CONV_TIME_84 0x01 32 0 : #define INA237_CONV_TIME_150 0x02 33 0 : #define INA237_CONV_TIME_280 0x03 34 0 : #define INA237_CONV_TIME_540 0x04 35 0 : #define INA237_CONV_TIME_1052 0x05 36 0 : #define INA237_CONV_TIME_2074 0x06 37 0 : #define INA237_CONV_TIME_4120 0x07 38 : 39 : /* Averaging Mode */ 40 0 : #define INA237_AVG_MODE_1 0x00 41 0 : #define INA237_AVG_MODE_4 0x01 42 0 : #define INA237_AVG_MODE_16 0x02 43 0 : #define INA237_AVG_MODE_64 0x03 44 0 : #define INA237_AVG_MODE_128 0x04 45 0 : #define INA237_AVG_MODE_256 0x05 46 0 : #define INA237_AVG_MODE_512 0x06 47 0 : #define INA237_AVG_MODE_1024 0x07 48 : 49 : /* Reset Mode */ 50 0 : #define INA237_RST_NORMAL_OPERATION 0x00 51 0 : #define INA237_RST_SYSTEM_RESET 0x01 52 : 53 : /* Delay for initial ADC conversion in steps of 2 ms */ 54 0 : #define INA237_INIT_ADC_DELAY_0_S 0x00 55 0 : #define INA237_INIT_ADC_DELAY_2_MS 0x01 56 0 : #define INA237_INIT_ADC_DELAY_510_MS 0xFF 57 : 58 : /* Shunt full scale range selection across IN+ and IN–. */ 59 0 : #define INA237_ADC_RANGE_163_84 0x00 60 0 : #define INA237_ADC_RANGE_40_96 0x01 61 : 62 : /** 63 : * @brief Macro for creating the INA237 configuration value 64 : * 65 : * @param rst_mode Reset mode. 66 : * @param convdly Delay for initial ADC conversion in steps of 2 ms. 67 : * @param adc_range Shunt full scale range selection across IN+ and IN–. 68 : * 69 : */ 70 : #define INA237_CONFIG(rst_mode, \ 71 : convdly, \ 72 1 : adc_range) \ 73 : (((rst_mode) << 15) | ((convdly) << 6) | ((adc_range) << 4)) 74 : 75 : /** 76 : * @brief Macro for creating the INA237 ADC configuration value 77 : * 78 : * @param mode Operating mode. 79 : * @param vshct Conversion time for shunt voltage. 80 : * @param vbusct Conversion time for bus voltage. 81 : * @param vtct Conversion time for temperature. 82 : * @param avg Averaging mode. 83 : */ 84 : #define INA237_ADC_CONFIG(mode, \ 85 : vshct, \ 86 : vbusct, \ 87 : vtct, \ 88 1 : avg) \ 89 : (((mode) << 12) | ((vbusct) << 9) | ((vshct) << 6) | ((vtct) << 3) | (avg)) 90 : 91 : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_INA237_H_ */