ina3221 - Driver for INA3221 shunt and bus voltage monitor
- group ina3221
ESP-IDF driver for Shunt and Bus Voltage Monitor INA3221.
Ported from esp-open-rtos
Copyright (c) 2016 Zaltora https://github.com/Zaltora Copyright (c) 2019 Ruslan V. Uss unclerus@gmail.com
MIT Licensed as described in the file LICENSE
Defines
-
INA3221_I2C_ADDR_GND
A0 to GND.
-
INA3221_I2C_ADDR_VS
A0 to Vs+.
-
INA3221_I2C_ADDR_SDA
A0 to SDA.
-
INA3221_I2C_ADDR_SCL
A0 to SCL.
-
INA3221_BUS_NUMBER
Number of shunt available.
-
INA3221_DEFAULT_CONFIG
Default register values after reset.
-
INA3221_DEFAULT_MASK
-
INA3221_DEFAULT_POWER_UPPER_LIMIT
-
INA3221_DEFAULT_POWER_LOWER_LIMIT
-
INA3221_MASK_CONFIG
Enums
-
enum ina3221_avg_t
Number of samples.
Values:
-
enumerator INA3221_AVG_1
Default.
-
enumerator INA3221_AVG_4
-
enumerator INA3221_AVG_16
-
enumerator INA3221_AVG_64
-
enumerator INA3221_AVG_128
-
enumerator INA3221_AVG_256
-
enumerator INA3221_AVG_512
-
enumerator INA3221_AVG_1024
-
enumerator INA3221_AVG_1
Functions
-
esp_err_t ina3221_init_desc(ina3221_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)
Initialize device descriptor.
- Parameters:
dev – Device descriptor
addr – Device I2C address
port – I2C port
sda_gpio – SDA GPIO
scl_gpio – SCL GPIO
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_free_desc(ina3221_t *dev)
Free device descriptor.
- Parameters:
dev – Device descriptor
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_sync(ina3221_t *dev)
Write current config to device.
Sync internal config buffer and mask with external device register. (When struct is set manually).
- Parameters:
dev – Device descriptor
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_trigger(ina3221_t *dev)
Trigger measurement.
Send current config register to trig a measurement in single-shot mode.
- Parameters:
dev – Device descriptor
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_get_status(ina3221_t *dev)
Read status from device.
Get mask register from the device, used to read flags.
- Parameters:
dev – Device descriptor
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_set_options(ina3221_t *dev, bool mode, bool bus, bool shunt)
Set options for bus and shunt.
- Parameters:
dev – Device descriptor
mode – Selection of measurement (true : continuous // false : single-shot)
bus – Enable/Disable bus measures
shunt – Enable/Disable shunt measures
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_enable_channel(ina3221_t *dev, bool ch1, bool ch2, bool ch3)
Select channels.
- Parameters:
dev – Device descriptor
ch1 – Enable/Disable channel 1 (true : enable // false : disable)
ch2 – Enable/Disable channel 2 (true : enable // false : disable)
ch3 – Enable/Disable channel 3 (true : enable // false : disable)
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_enable_channel_sum(ina3221_t *dev, bool ch1, bool ch2, bool ch3)
Select channel to be sum (don’t impact enable channel status)
- Parameters:
dev – Device descriptor
ch1 – Enable/Disable channel 1 (true : enable // false : disable)
ch2 – Enable/Disable channel 2 (true : enable // false : disable)
ch3 – Enable/Disable channel 3 (true : enable // false : disable)
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_enable_latch_pin(ina3221_t *dev, bool warning, bool critical)
enable/disable latch on warning and critical alert pin
- Parameters:
dev – Device descriptor
warning – Enable/Disable warning latch (true : Latch // false : Transparent)
critical – Enable/Disable critical latch (true : Latch // false : Transparent)
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_set_average(ina3221_t *dev, ina3221_avg_t avg)
Set average (number of samples measured)
- Parameters:
dev – Device descriptor
avg – Value of average selection
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_set_bus_conversion_time(ina3221_t *dev, ina3221_ct_t ct)
Set conversion time for bus.
- Parameters:
dev – Device descriptor
ct – Value of conversion time selection
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_set_shunt_conversion_time(ina3221_t *dev, ina3221_ct_t ct)
Set conversion time for shunt.
- Parameters:
dev – Device descriptor
ct – Value of conversion time selection
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_reset(ina3221_t *dev)
Reset device.
Device will be configured like POR (Power-On-Reset)
- Parameters:
dev – Device descriptor
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_get_bus_voltage(ina3221_t *dev, ina3221_channel_t channel, float *voltage)
Get Bus voltage (V)
- Parameters:
dev – Device descriptor
channel – Select channel value to get
voltage – Data pointer to get bus voltage (V)
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_get_shunt_value(ina3221_t *dev, ina3221_channel_t channel, float *voltage, float *current)
Get Shunt voltage (mV) and current (mA)
- Parameters:
dev – Device descriptor
channel – Select channel value to get
voltage – Data pointer to get shunt voltage (mV)
current – Data pointer to get shunt voltage (mA)
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_get_sum_shunt_value(ina3221_t *dev, float *voltage)
Get Shunt-voltage (mV) sum value of selected channels.
- Parameters:
dev – Device descriptor
voltage – Data pointer to get shunt voltage (mV)
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_set_critical_alert(ina3221_t *dev, ina3221_channel_t channel, float current)
Set Critical alert.
Alert when measurement(s) is greater
- Parameters:
dev – Device descriptor
channel – Select channel value to set
current – Value to set (mA) // max : 163800/shunt (mOhm)
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_set_warning_alert(ina3221_t *dev, ina3221_channel_t channel, float current)
Set Warning alert.
Alert when average measurement(s) is greater
- Parameters:
dev – Device descriptor
channel – Select channel value to set
current – Value to set (mA) // max : 163800/shunt (mOhm)
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_set_sum_warning_alert(ina3221_t *dev, float voltage)
Set Sum Warning alert.
Compared to each completed cycle of all selected channels : Sum register
- Parameters:
dev – Device descriptor
voltage – voltage to set (mV) // max : 655.32
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_set_power_valid_upper_limit(ina3221_t *dev, float voltage)
Set Power-valid upper-limit.
Used to determine if power conditions are met. Bus needs to be enabled. If bus voltage exceed the value set, PV pin will be set high.
- Parameters:
dev – Device descriptor
voltage – voltage to set (V)
- Returns:
ESP_OK to indicate success
-
esp_err_t ina3221_set_power_valid_lower_limit(ina3221_t *dev, float voltage)
Set Power-valid lower-limit.
Used to determine if power conditions are met. Bus needs to be enabled. If bus voltage drops below the value set, PV pin will be set low.
- Parameters:
dev – Device descriptor
voltage – Voltage to set (V)
- Returns:
ESP_OK to indicate success
-
union ina3221_config_t
- #include <ina3221.h>
Config description register.
Public Members
-
uint16_t esht
Enable/Disable shunt measure // LSB.
-
uint16_t ebus
Enable/Disable bus measure.
-
uint16_t mode
Single shot measure or continuous mode.
-
uint16_t vsht
Shunt voltage conversion time.
-
uint16_t vbus
Bus voltage conversion time.
-
uint16_t avg
number of sample collected and averaged together
-
uint16_t ch3
Enable/Disable channel 3.
-
uint16_t ch2
Enable/Disable channel 2.
-
uint16_t ch1
Enable/Disable channel 1.
-
uint16_t rst
Set this bit to 1 to reset device // MSB.
-
struct ina3221_config_t::[anonymous] [anonymous]
-
uint16_t config_register
-
uint16_t esht
-
union ina3221_mask_t
- #include <ina3221.h>
Mask/enable description register.
Public Members
-
uint16_t cvrf
Conversion ready flag (1: ready) // LSB.
-
uint16_t tcf
Timing control flag.
-
uint16_t pvf
Power valid flag.
-
uint16_t wf
Warning alert flag (Read mask to clear) (order : Channel1:channel2:channel3)
-
uint16_t sf
Sum alert flag (Read mask to clear)
-
uint16_t cf
Critical alert flag (Read mask to clear) (order : Channel1:channel2:channel3)
-
uint16_t cen
Critical alert latch (1:enable)
-
uint16_t wen
Warning alert latch (1:enable)
-
uint16_t scc3
channel 3 sum (1:enable)
-
uint16_t scc2
channel 2 sum (1:enable)
-
uint16_t scc1
channel 1 sum (1:enable)
-
uint16_t __pad0__
Reserved //MSB.
-
struct ina3221_mask_t::[anonymous] [anonymous]
-
uint16_t mask_register
-
uint16_t cvrf
-
struct ina3221_t
- #include <ina3221.h>
Device descriptor.
Public Members
-
uint16_t shunt[INA3221_BUS_NUMBER]
Memory of shunt value (mOhm)
-
ina3221_config_t config
Memory of ina3221 config.
-
ina3221_mask_t mask
Memory of mask_config.
-
uint16_t shunt[INA3221_BUS_NUMBER]
-
INA3221_I2C_ADDR_GND