90 lines
2.9 KiB
C
90 lines
2.9 KiB
C
|
/*
|
|||
|
* Copyright (c) 2021 Grinn
|
|||
|
*
|
|||
|
* SPDX-License-Identifier: Apache-2.0
|
|||
|
*/
|
|||
|
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_INA237_H_
|
|||
|
#define ZEPHYR_INCLUDE_DT_BINDINGS_INA237_H_
|
|||
|
|
|||
|
#include <dt-bindings/dt-util.h>
|
|||
|
|
|||
|
/* Operating Mode */
|
|||
|
#define INA237_OPER_MODE_SHUTDOWN 0x00
|
|||
|
#define INA237_OPER_MODE_TRIG_BUS_VOLTAGE_SINGLE_SHOT 0x01
|
|||
|
#define INA237_OPER_MODE_TRIG_SHUNT_VOLTAGE_TRIG_SINGLE_SHOT 0x02
|
|||
|
#define INA237_OPER_MODE_TRIG_SHUNT_BUS_VOLTAGE_SINGLE_SHOT 0x03
|
|||
|
#define INA237_OPER_MODE_TRIG_TEMP_SINGLE_SHOT 0x05
|
|||
|
#define INA237_OPER_MODE_TRIG_TEMP_BUS_SINGLE_SHOT 0x06
|
|||
|
#define INA237_OPER_MODE_TRIG_TEMP_SHUNT_SINGLE_SHOT 0x07
|
|||
|
#define INA237_OPER_MODE_CONT_BUS_VOLTAGE 0x09
|
|||
|
#define INA237_OPER_MODE_CONT_SHUNT_VOLTAGE 0x0A
|
|||
|
#define INA237_OPER_MODE_CONT_SHUNT_BUS_VOLTAGE 0x0B
|
|||
|
#define INA237_OPER_MODE_CONT_TEMP 0x0C
|
|||
|
#define INA237_OPER_MODE_CONT_BUS_VOLTAGE_TEMP 0x0D
|
|||
|
#define INA237_OPER_MODE_CONT_TEMP_SHUNT_VOLTAGE 0x0E
|
|||
|
#define INA237_OPER_MODE_CONT_BUS_SHUNT_VOLTAGE_TEMP 0x0F
|
|||
|
|
|||
|
/* Conversion time for bus, shunt and temp in micro-seconds */
|
|||
|
#define INA237_CONV_TIME_50 0x00
|
|||
|
#define INA237_CONV_TIME_84 0x01
|
|||
|
#define INA237_CONV_TIME_150 0x02
|
|||
|
#define INA237_CONV_TIME_280 0x03
|
|||
|
#define INA237_CONV_TIME_540 0x04
|
|||
|
#define INA237_CONV_TIME_1052 0x05
|
|||
|
#define INA237_CONV_TIME_2074 0x06
|
|||
|
#define INA237_CONV_TIME_4120 0x07
|
|||
|
|
|||
|
/* Averaging Mode */
|
|||
|
#define INA237_AVG_MODE_1 0x00
|
|||
|
#define INA237_AVG_MODE_4 0x01
|
|||
|
#define INA237_AVG_MODE_16 0x02
|
|||
|
#define INA237_AVG_MODE_64 0x03
|
|||
|
#define INA237_AVG_MODE_128 0x04
|
|||
|
#define INA237_AVG_MODE_256 0x05
|
|||
|
#define INA237_AVG_MODE_512 0x06
|
|||
|
#define INA237_AVG_MODE_1024 0x07
|
|||
|
|
|||
|
/* Reset Mode */
|
|||
|
#define INA237_RST_NORMAL_OPERATION 0x00
|
|||
|
#define INA237_RST_SYSTEM_RESET 0x01
|
|||
|
|
|||
|
/* Delay for initial ADC conversion in steps of 2 ms */
|
|||
|
#define INA237_INIT_ADC_DELAY_0_S 0x00
|
|||
|
#define INA237_INIT_ADC_DELAY_2_MS 0x01
|
|||
|
#define INA237_INIT_ADC_DELAY_510_MS 0xFF
|
|||
|
|
|||
|
/* Shunt full scale range selection across IN+ and IN–. */
|
|||
|
#define INA237_ADC_RANGE_163_84 0x00
|
|||
|
#define INA237_ADC_RANGE_40_96 0x01
|
|||
|
|
|||
|
/**
|
|||
|
* @brief Macro for creating the INA237 configuration value
|
|||
|
*
|
|||
|
* @param rst_mode Reset mode.
|
|||
|
* @param convdly Delay for initial ADC conversion in steps of 2 ms.
|
|||
|
* @param adc_range Shunt full scale range selection across IN+ and IN–.
|
|||
|
*
|
|||
|
*/
|
|||
|
#define INA237_CONFIG(rst_mode, \
|
|||
|
convdly, \
|
|||
|
adc_range) \
|
|||
|
(((rst_mode) << 15) | ((convdly) << 6) | ((adc_range) << 4))
|
|||
|
|
|||
|
/**
|
|||
|
* @brief Macro for creating the INA237 ADC configuration value
|
|||
|
*
|
|||
|
* @param mode Operating mode.
|
|||
|
* @param vshct Conversion time for shunt voltage.
|
|||
|
* @param vbusct Conversion time for bus voltage.
|
|||
|
* @param vtct Conversion time for temperature.
|
|||
|
* @param avg Averaging mode.
|
|||
|
*/
|
|||
|
#define INA237_ADC_CONFIG(mode, \
|
|||
|
vshct, \
|
|||
|
vbusct, \
|
|||
|
vtct, \
|
|||
|
avg) \
|
|||
|
(((mode) << 12) | ((vbusct) << 9) | ((vshct) << 6) | ((vtct) << 3) | (avg))
|
|||
|
|
|||
|
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_INA237_H_ */
|