Device driver interface for Texas Instruments INA3221 three-channel ,high-side current and bus voltage monitor. More...
Device driver interface for Texas Instruments INA3221 three-channel ,high-side current and bus voltage monitor.
The alert pins WRN, CRT, TC, PV are open drain output pins, so they should be pulled high with internal or external pull-ups. They pull low, if the alert condition becomes true. If they become pulled low, the configured input pins in
For all enabled channels (1 <= i <= INA3221_NUM_CH), the time to complete a full measurement cycle is:
num_samples * (shunt_conv_time_ch_i + bus_voltage_conv_time_ch_i)
Definition in file ina3221.h.
 Include dependency graph for ina3221.h:
 Include dependency graph for ina3221.h: This graph shows which files directly or indirectly include this file:
 This graph shows which files directly or indirectly include this file:Go to the source code of this file.
| Data Structures | |
| struct | ina3221_params_t | 
| INA3221 device parameters.  More... | |
| struct | ina3221_t | 
| INA3221 device handle struct.  More... | |
| Macros | |
| #define | INA3221_NUM_CH (3) | 
| Number of channels. | |
| #define | INA3221_NUM_ALERTS (4) | 
| Number of alerts. | |
| #define | INA3221_MODE_MASK (0x0007) | 
| Device operation mode bit mask. | |
| #define | INA3221_CONV_TIME_SADC_MASK (0x0038) | 
| ADC shunt voltage conversion times bit mask. | |
| #define | INA3221_CONV_TIME_BADC_MASK (0x01C0) | 
| ADC bus voltage conversion times bit mask. | |
| #define | INA3221_NUM_SAMPLES_MASK (0x0E00) | 
| Number of samples to calculate average shunt/bus voltage value bit mask. | |
| #define | INA3221_ENABLE_CH_MASK | 
| Enable channel bit mask.  More... | |
| #define | INA3221_ENABLE_SUM_CH_MASK | 
| Enable shunt voltage sum calculation channel bit mask.  More... | |
| #define | INA3221_ENABLE_LATCH_MASK | 
| Enable latch bit mask.  More... | |
| #define | INA3221_DEFCONFIG (0x7127) | 
| Default configuration register value. | |
| #define | INA3221_RESET (0x8000) | 
| Reset configuration register value. | |
| #define | INA3221_FLAG_CRIT_ALERT_CH1 (0x0200) | 
| Critical alert channel 1 flag. | |
| #define | INA3221_FLAG_CRIT_ALERT_CH2 (0x0100) | 
| Critical alert channel 2 flag. | |
| #define | INA3221_FLAG_CRIT_ALERT_CH3 (0x0080) | 
| Critical alert channel 3 flag. | |
| #define | INA3221_FLAG_SHUNT_SUM_ALERT (0x0040) | 
| Alert channel sum flag. | |
| #define | INA3221_FLAG_WARN_ALERT_CH1 (0x0020) | 
| Warning alert channel 1 flag. | |
| #define | INA3221_FLAG_WARN_ALERT_CH2 (0x0010) | 
| Warning alert channel 2 flag. | |
| #define | INA3221_FLAG_WARN_ALERT_CH3 (0x0008) | 
| Warning alert channel 3 flag. | |
| #define | INA3221_FLAG_POWER_VALID (0x0004) | 
| Power valid flag. | |
| #define | INA3221_FLAG_TIMING_CONTROL (0x0002) | 
| Timing Control flag. | |
| #define | INA3221_FLAG_CONV_READY (0x0001) | 
| Conversion ready flag. | |
| #define | INA3221_FLAGS_MASK | 
| Flags bit mask.  More... | |
| #define | INA3221_TRIGGER_SHUNT(dev) ina3221_set_mode(dev, INA3221_MODE_TRIGGER_SHUNT_ONLY) | 
| Set operation mode to INA3221_MODE_TRIGGER_SHUNT_ONLY to trigger shunt voltage measurement.  More... | |
| #define | INA3221_TRIGGER_BUS(dev) ina3221_set_mode(dev, INA3221_MODE_TRIGGER_BUS_ONLY) | 
| Set operation mode to INA3221_MODE_TRIGGER_BUS_ONLY to trigger bus voltage measurement.  More... | |
| #define | INA3221_TRIGGER_SHUNT_AND_BUS(dev) ina3221_set_mode(dev, INA3221_MODE_TRIGGER_SHUNT_BUS) | 
| Set operation mode to INA3221_MODE_TRIGGER_SHUNT_BUS to trigger shunt and bus voltage measurement.  More... | |
| Typedefs | |
| typedef void(* | ina3221_alert_cb_t) (void *arg) | 
| INA3221 alert callback for alert pins CRT, WRN, TC, PV. | |
| typedef enum ina3221_ret_val | ina3221_ret_val_t | 
| Return codes. | |
| typedef enum ina3221_dev_addr | ina3221_dav_addr_t | 
| I2C device addresses. | |
| typedef enum ina3221_channel | ina3221_channel_t | 
| Channel flags. | |
| typedef enum ina3221_alert | ina3221_alert_t | 
| Alert indices. | |
| typedef enum ina3221_mode | ina3221_mode_t | 
| Device operation modes. | |
| typedef enum ina3221_conv_time_shunt_adc | ina3221_conv_time_shunt_adc_t | 
| ADC shunt voltage conversion times. | |
| typedef enum ina3221_conv_time_bus_adc | ina3221_conv_time_bus_adc_t | 
| ADC bus voltage conversion times. | |
| typedef enum ina3221_num_samples | ina3221_num_samples_t | 
| Number of samples to calculate average shunt/bus voltage value. | |
| typedef enum ina3221_enable_ch | ina3221_enable_ch_t | 
| Enable channel flags. | |
| typedef enum ina3221_channel_state | ina3221_channel_state_t | 
| Channel state enabled/disabled. | |
| typedef enum ina3221_enable_sum_ch | ina3221_enable_sum_ch_t | 
| Enable shunt voltage sum calculation channel flags. | |
| typedef enum ina3221_enable_latch | ina3221_enable_latch_t | 
| Enable latch flags. | |
| Functions | |
| int | ina3221_reset (ina3221_t *dev) | 
| Reset device, i.e.  More... | |
| int | ina3221_init (ina3221_t *dev, const ina3221_params_t *params) | 
| Initialize device.  More... | |
| int | _ina3221_enable_alert (ina3221_t *dev, ina3221_alert_t alert, ina3221_alert_cb_t cb, void *arg) | 
| Enable alert callback and argument for alert alert.  More... | |
| static int | ina3221_enable_warning_alert (ina3221_t *dev, ina3221_alert_cb_t cb, void *arg) | 
| Wrapper around.  More... | |
| static int | ina3221_enable_critical_alert (ina3221_t *dev, ina3221_alert_cb_t cb, void *arg) | 
| Wrapper around.  More... | |
| static int | ina3221_enable_timing_control_alert (ina3221_t *dev, ina3221_alert_cb_t cb, void *arg) | 
| Wrapper around.  More... | |
| static int | ina3221_enable_power_valid_alert (ina3221_t *dev, ina3221_alert_cb_t cb, void *arg) | 
| Wrapper around.  More... | |
| int | _ina3221_disable_alert (ina3221_t *dev, ina3221_alert_t alert) | 
| Disable alert callback and argument for alert alert.  More... | |
| static int | ina3221_disable_warning_alert (ina3221_t *dev) | 
| Wrapper around.  More... | |
| static int | ina3221_disable_critical_alert (ina3221_t *dev) | 
| Wrapper around.  More... | |
| static int | ina3221_disable_timing_control_alert (ina3221_t *dev) | 
| Wrapper around.  More... | |
| static int | ina3221_disable_power_valid_alert (ina3221_t *dev) | 
| Wrapper around.  More... | |
| int | _ina3221_set_config (ina3221_t *dev, uint16_t cfg) | 
| Write configuration register value to configuration register.  More... | |
| static int | ina3221_set_config (ina3221_t *dev, ina3221_enable_ch_t chs, ina3221_num_samples_t ns, ina3221_conv_time_bus_adc_t ctbadc, ina3221_conv_time_shunt_adc_t ctsadc, ina3221_mode_t mode) | 
| Wrapper around.  More... | |
| int | _ina3221_get_config (const ina3221_t *dev, uint16_t *cfg) | 
| Read currently saved configuration register value.  More... | |
| static int | ina3221_get_config (const ina3221_t *dev, ina3221_enable_ch_t *chs, ina3221_num_samples_t *ns, ina3221_conv_time_bus_adc_t *ctbadc, ina3221_conv_time_shunt_adc_t *ctsadc, ina3221_mode_t *mode) | 
| Wrapper around.  More... | |
| int | _ina3221_set_enable_channel (ina3221_t *dev, ina3221_enable_ch_t ech) | 
| Enable channels.  More... | |
| static int | ina3221_set_channel_state (ina3221_t *dev, ina3221_channel_state_t ch1, ina3221_channel_state_t ch2, ina3221_channel_state_t ch3) | 
| Wrapper around.  More... | |
| int | _ina3221_get_enable_channel (const ina3221_t *dev, ina3221_enable_ch_t *ech) | 
| Read which channels are currently enabled.  More... | |
| static int | ina3221_get_channel_state (const ina3221_t *dev, ina3221_channel_state_t *ch1, ina3221_channel_state_t *ch2, ina3221_channel_state_t *ch3) | 
| Wrapper around _ina3221_get_enable_channel.  More... | |
| int | ina3221_set_num_samples (ina3221_t *dev, ina3221_num_samples_t ns) | 
| Update number of samples and write to configuration register.  More... | |
| int | ina3221_get_num_samples (const ina3221_t *dev, ina3221_num_samples_t *ns) | 
| Read currently applied number of samples.  More... | |
| int | ina3221_set_conv_time_bus_adc (ina3221_t *dev, ina3221_conv_time_bus_adc_t ctb) | 
| Update conversion time of bus voltage ADC and write to configuration register.  More... | |
| int | ina3221_get_conv_time_bus_adc (const ina3221_t *dev, ina3221_conv_time_bus_adc_t *ctb) | 
| Read currently applied bus voltage ADC conversion time.  More... | |
| int | ina3221_set_conv_time_shunt_adc (ina3221_t *dev, ina3221_conv_time_shunt_adc_t cts) | 
| Update conversion time of shunt voltage ADC and write to configuration register.  More... | |
| int | ina3221_get_conv_time_shunt_adc (const ina3221_t *dev, ina3221_conv_time_shunt_adc_t *cts) | 
| Read currently applied shunt voltage ADC conversion time.  More... | |
| int | ina3221_set_mode (ina3221_t *dev, ina3221_mode_t mode) | 
| Update device operation mode.  More... | |
| int | ina3221_get_mode (const ina3221_t *dev, ina3221_mode_t *mode) | 
| Read currently applied device operation mode.  More... | |
| int | _ina3221_set_enable_sum_channel (const ina3221_t *dev, ina3221_enable_sum_ch_t esch) | 
| Enable channels for shunt voltage sum calculation.  More... | |
| static int | ina3221_set_enable_sum_channel (const ina3221_t *dev, ina3221_channel_state_t ch1, ina3221_channel_state_t ch2, ina3221_channel_state_t ch3) | 
| Wrapper around.  More... | |
| int | _ina3221_get_enable_sum_channel (const ina3221_t *dev, ina3221_enable_sum_ch_t *esch) | 
| Read enabled channels for shunt voltage sum calculation.  More... | |
| static int | ina3221_get_enable_sum_channel (const ina3221_t *dev, ina3221_channel_state_t *ch1, ina3221_channel_state_t *ch2, ina3221_channel_state_t *ch3) | 
| Wrapper for.  More... | |
| int | ina3221_set_latch (const ina3221_t *dev, ina3221_enable_latch_t latch) | 
| Enable latches for critical/warning alert pins.  More... | |
| int | ina3221_get_latch (const ina3221_t *dev, ina3221_enable_latch_t *latch) | 
| Read enabled latches for critical/warning alert pins.  More... | |
| int | ina3221_set_crit_alert_limit (const ina3221_t *dev, ina3221_channel_t ch, int32_t in_uv) | 
| Set critical shunt voltage alert limit to in_uvfor each channel inch.  More... | |
| int | ina3221_get_crit_alert_limit (const ina3221_t *dev, ina3221_channel_t ch, int32_t *out_uv) | 
| Read critical shunt voltage alert limit for each channel in ch.  More... | |
| int | ina3221_set_warn_alert_limit (const ina3221_t *dev, ina3221_channel_t ch, int32_t in_uv) | 
| Set warning shunt voltage alert limit to in_uvfor each channel inch.  More... | |
| int | ina3221_get_warn_alert_limit (const ina3221_t *dev, ina3221_channel_t ch, int32_t *out_uv) | 
| Read warning shunt voltage alert limit for each channel in ch.  More... | |
| int | ina3221_set_shunt_voltage_sum_alert_limit (const ina3221_t *dev, int32_t in_uv) | 
| Set shunt voltage sum alert limit to in_uv.  More... | |
| int | ina3221_get_shunt_voltage_sum_alert_limit (const ina3221_t *dev, int32_t *out_uv) | 
| Read shunt voltage sum alert limit.  More... | |
| int | ina3221_set_power_valid_upper_limit (const ina3221_t *dev, int32_t in_mv) | 
| Set bus voltage power valid upper limit to in_mv.  More... | |
| int | ina3221_get_power_valid_upper_limit (const ina3221_t *dev, int32_t *out_mv) | 
| Read bus voltage power valid upper limit.  More... | |
| int | ina3221_set_power_valid_lower_limit (const ina3221_t *dev, int32_t in_mv) | 
| Set bus voltage power valid lower limit to in_mv.  More... | |
| int | ina3221_get_power_valid_lower_limit (const ina3221_t *dev, int32_t *out_mv) | 
| Read bus voltage power valid lower limit.  More... | |
| int | ina3221_read_flags (const ina3221_t *dev, uint16_t *flags) | 
| Read status flags.  More... | |
| int | ina3221_read_shunt_sum_uv (const ina3221_t *dev, int32_t *out_uv, uint16_t *flags) | 
| Read sum of shunt voltages.  More... | |
| int | ina3221_read_shunt_uv (const ina3221_t *dev, ina3221_channel_t ch, int32_t *out_uv, uint16_t *flags) | 
| Read shunt voltages for each channel in ch.  More... | |
| int | ina3221_read_bus_mv (const ina3221_t *dev, ina3221_channel_t ch, int16_t *out_mv, uint16_t *flags) | 
| Read bus voltages for each channel in ch.  More... | |
| int | ina3221_calculate_current_ua (const ina3221_t *dev, ina3221_channel_t ch, int32_t *in_uv, int32_t *out_ma) | 
| Calculate current for each channel in ch.  More... | |
| int | ina3221_calculate_power_uw (int16_t *in_mv, int32_t *in_ua, uint8_t num, int32_t *out_mw) | 
| Calculate power from bus voltage and current values.  More... | |
| void | ina3221_ch_align (ina3221_channel_t ch, const void *in_res, void *out_res, size_t res_val_size) | 
| Align in_resto the number of channels For example:ch= (INA3221_CH1 | INA3221_CH3)in_res= {value_ch1, value_ch3}, thenout_reswill be {value_ch1, 0, value_ch3}.  More... | |