1 /* 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 #define INA237_CFG_HIGH_PRECISION BIT(4) 13 #define INA237_OPER_MODE_SHUTDOWN 0x00 14 #define INA237_OPER_MODE_BUS_VOLTAGE_TRIG 0x01 15 #define INA237_OPER_MODE_SHUNT_VOLTAGE_TRIG 0x02 16 #define INA237_OPER_MODE_SHUNT_BUS_VOLTAGE_TRIG 0x03 17 #define INA237_OPER_MODE_TEMP_TRIG 0x04 18 #define INA237_OPER_MODE_TEMP_BUS_VOLTAGE_TRIG 0x05 19 #define INA237_OPER_MODE_TEMP_SHUNT_VOLTAGE_TRIG 0x06 20 #define INA237_OPER_MODE_BUS_SHUNT_VOLTAGE_TEMP_TRIG 0x07 21 #define INA237_OPER_MODE_BUS_VOLTAGE_CONT 0x09 22 #define INA237_OPER_MODE_SHUNT_VOLTAGE_CONT 0x0A 23 #define INA237_OPER_MODE_SHUNT_BUS_VOLTAGE_CONT 0x0B 24 #define INA237_OPER_MODE_TEMP_CONT 0x0C 25 #define INA237_OPER_MODE_BUS_VOLTAGE_TEMP_CONT 0x0D 26 #define INA237_OPER_MODE_TEMP_SHUNT_VOLTAGE_CONT 0x0E 27 #define INA237_OPER_MODE_BUS_SHUNT_VOLTAGE_TEMP_CONT 0x0F 28 29 /* Conversion time for bus, shunt and temp in micro-seconds */ 30 #define INA237_CONV_TIME_50 0x00 31 #define INA237_CONV_TIME_84 0x01 32 #define INA237_CONV_TIME_150 0x02 33 #define INA237_CONV_TIME_280 0x03 34 #define INA237_CONV_TIME_540 0x04 35 #define INA237_CONV_TIME_1052 0x05 36 #define INA237_CONV_TIME_2074 0x06 37 #define INA237_CONV_TIME_4120 0x07 38 39 /* Averaging Mode */ 40 #define INA237_AVG_MODE_1 0x00 41 #define INA237_AVG_MODE_4 0x01 42 #define INA237_AVG_MODE_16 0x02 43 #define INA237_AVG_MODE_64 0x03 44 #define INA237_AVG_MODE_128 0x04 45 #define INA237_AVG_MODE_256 0x05 46 #define INA237_AVG_MODE_512 0x06 47 #define INA237_AVG_MODE_1024 0x07 48 49 /* Reset Mode */ 50 #define INA237_RST_NORMAL_OPERATION 0x00 51 #define INA237_RST_SYSTEM_RESET 0x01 52 53 /* Delay for initial ADC conversion in steps of 2 ms */ 54 #define INA237_INIT_ADC_DELAY_0_S 0x00 55 #define INA237_INIT_ADC_DELAY_2_MS 0x01 56 #define INA237_INIT_ADC_DELAY_510_MS 0xFF 57 58 /* Shunt full scale range selection across IN+ and IN–. */ 59 #define INA237_ADC_RANGE_163_84 0x00 60 #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 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 avg) \ 89 (((mode) << 12) | ((vbusct) << 9) | ((vshct) << 6) | ((vtct) << 3) | (avg)) 90 91 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_INA237_H_ */ 92