INA234 HAL Based Library 1.0.1
This library is a software library that works with the INA234 current, voltage, and power monitor chip. This library provides a convenient and efficient way to access the I2C interfaces of the chip, allowing developers to easily integrate this power meter into their systems.
|
#include "main.h"
#include "i2c.h"
Go to the source code of this file.
Data Structures | |
struct | ina234 |
Class (struct) that stores variables for interacting with INA234. More... | |
union | ina234::_reg |
struct | ina234::_reg::_config_register |
struct | ina234::_reg::_shunt_voltage_register |
struct | ina234::_reg::_bus_voltage_register |
struct | ina234::_reg::_power_register |
struct | ina234::_reg::_current_register |
struct | ina234::_reg::_calibration_register |
struct | ina234::_reg::_mask_enable_register |
struct | ina234::_reg::_alert_limit_register |
struct | ina234::_reg::_manufacture_id_register |
struct | ina234::_reg::_devide_id_register |
Macros | |
#define | MAXIMUM_EXPECTED_CURRENT 5.0 |
#define | CURRENT_LSB_MINIMUM (MAXIMUM_EXPECTED_CURRENT / 2048.0) |
#define | CURRENT_LSB (CURRENT_LSB_MINIMUM * 1.0) |
#define | BUS_VOLTAGE_LSB 0.025 |
#define | SHUNT_VOLTAGE_81_92mv_LSB 0.04 |
#define | SHUNT_VOLTAGE_20_48mv_LSB 0.01 |
#define | POWER_LSB (CURRENT_LSB*0.032) |
#define | CONFIGURATION_REGISTER 0x00 |
#define | SHUNT_VOLTAGE_REGISTER 0x01 |
#define | BUS_VOLTAGE_REGISTER 0x02 |
#define | POWER_REGISTER 0x03 |
#define | CURRENT_REGISTER 0x04 |
#define | CALIBRATION_REGISTER 0x05 |
#define | MASK_ENABLE_REGISTER 0x06 |
#define | ALERT_LIMIT_REGISTER 0x07 |
#define | MANUFACTURERID_REGISTER 0x3E |
#define | DEVICEID_REGISTER 0x3F |
Typedefs | |
typedef enum ADCRange | ADCRange |
typedef enum NumSamples | NumSamples |
typedef enum ConvTime | ConvTime |
typedef enum Mode | Mode |
typedef enum Status | Status |
typedef enum AlertOn | AlertOn |
typedef enum AlertPolarity | AlertPolarity |
typedef enum AlertLatch | AlertLatch |
typedef enum AlertConvReady | AlertConvReady |
typedef enum AlertSource | AlertSource |
typedef enum ErrorType | ErrorType |
typedef struct ina234 | INA234 |
Class (struct) that stores variables for interacting with INA234. | |
Functions | |
Status | INA234_init (INA234 *self, uint8_t I2C_ADDR, I2C_HandleTypeDef *hi2c, float ShuntResistor, ADCRange adc_range, NumSamples numer_of_adc_samples, ConvTime vbus_conversion_time, ConvTime vshunt_conversion_time, Mode mode) |
Initialize the INA234 with the given config. | |
Status | INA234_alert_init (INA234 *self, AlertOn alert_on, AlertPolarity alert_polarity, AlertLatch alert_latch, AlertConvReady alert_conv_ready, float alert_limit) |
Initialize the alert functionality of INA234 with the given configurations. | |
Status | __INA234_readTwoBytes (INA234 *self, uint8_t MemAddress) |
Read two bytes (a 16bit register) from INA234 and stores in the ina234::_reg::raw_data. | |
Status | __INA234_writeTwoBytes (INA234 *self, uint8_t MemAddress) |
Write two bytes (a 16bit register) to INA234 from the ina234::_reg::raw_data. | |
Status | INA234_setADCRange (INA234 *self, ADCRange adc_range) |
Set the ADC full scale range of INA234. | |
Status | INA234_setNumberOfADCSamples (INA234 *self, NumSamples numer_of_adc_samples) |
Set the number of ADC samples to calculate the average. | |
Status | INA234_setVBusConversionTime (INA234 *self, ConvTime vbus_conversion_time) |
Set the VBus convertion period. | |
Status | INA234_setVShuntConversionTime (INA234 *self, ConvTime vshunt_conversion_time) |
Set the VShunt convertion period. | |
Status | INA234_setMode (INA234 *self, Mode mode) |
Set the operating mode. | |
ADCRange | INA234_getADCRange (INA234 *self) |
Get the ADC full scale range of INA234. | |
NumSamples | INA234_getNumberOfADCSamples (INA234 *self) |
Get the number of ADC samples to calculate the average. | |
ConvTime | INA234_getVBusConversionTime (INA234 *self) |
Get the VBus convertion period. | |
ConvTime | INA234_getVShuntConversionTime (INA234 *self) |
Get the VShunt convertion period. | |
Mode | INA234_getMode (INA234 *self) |
Set the operating mode. | |
void | INA234_SoftResetAll (INA234 *self) |
Send a reset command to all of the INA234s on the bus. | |
uint16_t | INA234_getManID (INA234 *self) |
Get the manufacturer ID. | |
uint16_t | INA234_getDevID (INA234 *self) |
Get the device ID. | |
void | INA234_readAll (INA234 *self) |
Read all of the measured values: Shunt voltage, bus voltage, power, and current. Then store the values to the ina234 object (struct) variables. Then you can read variables: ina234::ShuntVoltage, ina234::BusVoltage, ina234::Power, and ina234::Current. | |
float | INA234_getCurrent (INA234 *self) |
Read the current from INA234. | |
float | INA234_getBusVoltage (INA234 *self) |
Read the bus voltage from INA234. | |
float | INA234_getShuntVoltage (INA234 *self) |
Read the shunt voltage from INA234. | |
float | INA234_getPower (INA234 *self) |
Read the power from INA234. | |
uint8_t | INA234_isDataReady (INA234 *self) |
Check if the conversion is done or not. NOTE: This function will reset the alert pin if it was in the latch mode. Exactly like calling the INA234_resetAlert() function. | |
AlertSource | INA234_getAlertSource (INA234 *self) |
Get the alert source. This function is usefull when you enabled both of the alert functions and data ready alert simultaneously. NOTE: This function will reset the alert pin if it was in the latch mode. Exactly like calling the INA234_resetAlert() function. | |
ErrorType | INA234_getErrors (INA234 *self) |
Get the error flags of INA234. NOTE: This function will reset the alert pin if it was in the latch mode. Exactly like calling the INA234_resetAlert() function. | |
Status | INA234_resetAlert (INA234 *self) |
Reset the alert pin. This function is useful when set the alert pin to latch mode. | |
#define ALERT_LIMIT_REGISTER 0x07 |
#define BUS_VOLTAGE_LSB 0.025 |
#define BUS_VOLTAGE_REGISTER 0x02 |
#define CALIBRATION_REGISTER 0x05 |
#define CONFIGURATION_REGISTER 0x00 |
#define CURRENT_LSB (CURRENT_LSB_MINIMUM * 1.0) |
#define CURRENT_LSB_MINIMUM (MAXIMUM_EXPECTED_CURRENT / 2048.0) |
#define CURRENT_REGISTER 0x04 |
#define DEVICEID_REGISTER 0x3F |
#define MANUFACTURERID_REGISTER 0x3E |
#define MASK_ENABLE_REGISTER 0x06 |
#define MAXIMUM_EXPECTED_CURRENT 5.0 |
#define POWER_LSB (CURRENT_LSB*0.032) |
#define POWER_REGISTER 0x03 |
#define SHUNT_VOLTAGE_20_48mv_LSB 0.01 |
#define SHUNT_VOLTAGE_81_92mv_LSB 0.04 |
#define SHUNT_VOLTAGE_REGISTER 0x01 |
typedef enum AlertConvReady AlertConvReady |
typedef enum AlertLatch AlertLatch |
typedef enum AlertPolarity AlertPolarity |
typedef enum AlertSource AlertSource |
typedef enum NumSamples NumSamples |
enum ADCRange |
enum AlertConvReady |
enum AlertLatch |
enum AlertOn |
enum AlertPolarity |
enum AlertSource |
enum ConvTime |
enum ErrorType |
enum Mode |
enum NumSamples |
enum Status |
Read two bytes (a 16bit register) from INA234 and stores in the ina234::_reg::raw_data.
self | A pointer to the ina234 object (struct) |
MemAddress | Address of the register |
STATUS_OK | in case of success |
STATUS_TimeOut | in case of failure |
Write two bytes (a 16bit register) to INA234 from the ina234::_reg::raw_data.
self | A pointer to the ina234 object (struct) |
MemAddress | Address of the register |
STATUS_OK | in case of success |
STATUS_TimeOut | in case of failure |
Status INA234_alert_init | ( | INA234 * | self, |
AlertOn | alert_on, | ||
AlertPolarity | alert_polarity, | ||
AlertLatch | alert_latch, | ||
AlertConvReady | alert_conv_ready, | ||
float | alert_limit ) |
Initialize the alert functionality of INA234 with the given configurations.
self | A pointer to the ina234 object (struct) |
alert_on | determines the event that you want to assert the alert:
|
alert_polarity | The alert polarity determines the polarity of alert assertion:
|
alert_latch | Determine the alert pin behaviour. If the latch is enabled, you have to reset the pin by calling the INA234_resetAlert() function.
|
alert_conv_ready | Shows if you want to get alert on "conversion done"/"data ready" too or not. If enabled, you have to distinguish the alert sourece by calling INA234_getAlertSource() function.
|
alert_limit | This the limit value. It automatically maps to the alert function you have chosen. The unit of this limit is related to the alert_on argument:
|
For example if the alert_limit was 10.4 and you give ALERT_SHUNT_OVER_LIMIT for the alert_on argument, it means you will get alert if the shunt voltage reaches over the 10.4mV. If you give ALERT_BUS_OVER_LIMIT to alert_on, it means you will get alert if the bus voltage reaches the 10.4V
STATUS_OK | in case of success |
STATUS_TimeOut | in case of failure |
Get the ADC full scale range of INA234.
self | A pointer to the ina234 object (struct) |
RANGE_81_92mV | for 81.92 mV |
RANGE_20_48mV | for 20.48 mV |
AlertSource INA234_getAlertSource | ( | INA234 * | self | ) |
Get the alert source. This function is usefull when you enabled both of the alert functions and data ready alert simultaneously. NOTE: This function will reset the alert pin if it was in the latch mode. Exactly like calling the INA234_resetAlert() function.
self | A pointer to the ina234 object (struct) |
ALERT_DATA_READY | The alert source is convertion ready |
ALERT_LIMIT_REACHED | The alert source is limit reach |
float INA234_getBusVoltage | ( | INA234 * | self | ) |
Read the bus voltage from INA234.
self | A pointer to the ina234 object (struct) |
float INA234_getCurrent | ( | INA234 * | self | ) |
Read the current from INA234.
self | A pointer to the ina234 object (struct) |
uint16_t INA234_getDevID | ( | INA234 * | self | ) |
Get the error flags of INA234. NOTE: This function will reset the alert pin if it was in the latch mode. Exactly like calling the INA234_resetAlert() function.
self | A pointer to the ina234 object (struct) |
ERROR_NONE | No error |
ERROR_MEMORY | Memory error (CRC or ECC) |
ERROR_OVF | Math overflow error |
ERROR_BOTH_MEMORY_OVF | Both memory error (CRC or ECC) and math overflow error |
uint16_t INA234_getManID | ( | INA234 * | self | ) |
Get the manufacturer ID.
self | A pointer to the ina234 object (struct) |
Set the operating mode.
self | A pointer to the ina234 object (struct) |
MODE_SHUTDOWN | shutdown mode |
MODE_SINGLESHOT_SUNT | only measure the shunt voltage once |
MODE_SINGLESHOT_BUS | only measure the bus voltage once |
MODE_SINGLESHOT_BOTH_SHUNT_BUS | measure the bus and shunt voltage once |
MODE_CONTINUOUS_SHUNT | only measure the shunt voltage continuously |
MODE_CONTINUOUS_BUS | only measure the bus voltage continuously |
MODE_CONTINUOUS_BOTH_SHUNT_BUS | measure the bus and shunt voltage continuously |
NumSamples INA234_getNumberOfADCSamples | ( | INA234 * | self | ) |
Get the number of ADC samples to calculate the average.
self | A pointer to the ina234 object (struct) |
float INA234_getPower | ( | INA234 * | self | ) |
Read the power from INA234.
self | A pointer to the ina234 object (struct) |
float INA234_getShuntVoltage | ( | INA234 * | self | ) |
Read the shunt voltage from INA234.
self | A pointer to the ina234 object (struct) |
Get the VBus convertion period.
self | A pointer to the ina234 object (struct) |
Get the VShunt convertion period.
self | A pointer to the ina234 object (struct) |
Status INA234_init | ( | INA234 * | self, |
uint8_t | I2C_ADDR, | ||
I2C_HandleTypeDef * | hi2c, | ||
float | ShuntResistor, | ||
ADCRange | adc_range, | ||
NumSamples | numer_of_adc_samples, | ||
ConvTime | vbus_conversion_time, | ||
ConvTime | vshunt_conversion_time, | ||
Mode | mode ) |
Initialize the INA234 with the given config.
self | A pointer to the ina234 object (struct) |
I2C_ADDR | The I2C address of the INA234. It depends on the state of A0 pin of the chip. |
hi2c | A pointer to the I2C handler that is connected to INA234 |
ShuntResistor | The resistance of your shunt resistor (in mOhm) connected to IN+ and IN- of the INA234 |
adc_range | The full scale range of ADC. It can be one of these values:
|
numer_of_adc_samples | Numer of ADC samples to calculate the average. The higher ADC samples leads to lower noises and higher latency. |
vbus_conversion_time | The conversion time of VBus measurment. |
vshunt_conversion_time | The conversion time of VShunt measurment. |
mode | Operating mode:
|
STATUS_OK | in case of success |
STATUS_TimeOut | in case of failure |
uint8_t INA234_isDataReady | ( | INA234 * | self | ) |
Check if the conversion is done or not. NOTE: This function will reset the alert pin if it was in the latch mode. Exactly like calling the INA234_resetAlert() function.
self | A pointer to the ina234 object (struct) |
True | |
False |
void INA234_readAll | ( | INA234 * | self | ) |
Read all of the measured values: Shunt voltage, bus voltage, power, and current. Then store the values to the ina234 object (struct) variables. Then you can read variables: ina234::ShuntVoltage, ina234::BusVoltage, ina234::Power, and ina234::Current.
self | A pointer to the ina234 object (struct) |
Reset the alert pin. This function is useful when set the alert pin to latch mode.
self | A pointer to the ina234 object (struct) |
STATUS_OK | in case of success |
STATUS_TimeOut | in case of failure |
Set the ADC full scale range of INA234.
self | A pointer to the ina234 object (struct) |
adc_range | The full scale range of ADC. It can be one of these values:
|
STATUS_OK | in case of success |
STATUS_TimeOut | in case of failure |
Set the operating mode.
self | A pointer to the ina234 object (struct) |
mode | Operating mode:
|
STATUS_OK | in case of success |
STATUS_TimeOut | in case of failure |
Status INA234_setNumberOfADCSamples | ( | INA234 * | self, |
NumSamples | numer_of_adc_samples ) |
Set the number of ADC samples to calculate the average.
self | A pointer to the ina234 object (struct) |
numer_of_adc_samples | Numer of ADC samples to calculate the average. The higher ADC samples leads to lower noises and higher latency. |
STATUS_OK | in case of success |
STATUS_TimeOut | in case of failure |
Set the VBus convertion period.
self | A pointer to the ina234 object (struct) |
vbus_conversion_time | The conversion time of VBus measurment. |
STATUS_OK | in case of success |
STATUS_TimeOut | in case of failure |
Set the VShunt convertion period.
self | A pointer to the ina234 object (struct) |
vshunt_conversion_time | The conversion time of VShunt measurment. |
STATUS_OK | in case of success |
STATUS_TimeOut | in case of failure |