Loading...
Searching...
No Matches
ina3221_internal.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2019 Otto-von-Guericke-Universität Magdeburg
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
18
19#include <assert.h>
20#include "ina3221_defines.h"
21#include "ina3221.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
36static inline int32_t reg_val_to_shunt_voltage_uv(int16_t reg_val)
37{
39
40 return reg_val / 8 * INA3221_SHUNT_VOLTAGE_PRECISION_UV;
41}
42
52static inline int16_t shunt_voltage_uv_to_reg_val(int32_t s_uv)
53{
55
56 return s_uv / INA3221_SHUNT_VOLTAGE_PRECISION_UV * 8;
57}
58
68static inline int16_t reg_val_to_bus_voltage_mv(int16_t reg_val)
69{
71
72 return reg_val / 8 * INA3221_BUS_VOLTAGE_PRECISION_MV;
73}
74
84static inline int16_t bus_voltage_mv_to_reg_val(int16_t b_mv)
85{
88
89 return b_mv / INA3221_BUS_VOLTAGE_PRECISION_MV * 8;
90}
91
101static inline int32_t sum_reg_val_to_shunt_voltage_uv(int16_t sum_reg_val)
102{
104
105 return sum_reg_val / 2 * INA3221_SHUNT_VOLTAGE_PRECISION_UV;
106}
107
117static inline int16_t sum_shunt_voltage_uv_to_reg_val(int32_t sum_suv)
118{
120
121 return sum_suv / INA3221_SHUNT_VOLTAGE_PRECISION_UV * 2;
122}
123
124#ifdef __cplusplus
125}
126#endif
127
POSIX.1-2008 compliant version of the assert macro.
#define assert(cond)
abort the program if assertion is false
Definition assert.h:143
Device driver interface for Texas Instruments INA3221 three-channel, high-side current and bus voltag...
Internal definitions for Texas Instruments INA3221 three-channel, high-side current and bus voltage m...
#define INA3221_MAX_SHUNT_SUM_UV
Max.
#define INA3221_MAX_BUS_MV
Max.
#define INA3221_MAX_SHUNT_REG_VAL
0111 1111 1111 1000
#define INA3221_MIN_BUS_MV
Min.
#define INA3221_MAX_SHUNT_UV
Max.
#define INA3221_BUS_VOLTAGE_PRECISION_MV
Bus voltage measurement precision.
#define INA3221_MAX_SHUNT_SUM_REG_VAL
0111 1111 1111 1110
#define INA3221_MAX_BUS_REG_VAL
0111 1111 1111 1000
#define INA3221_SHUNT_VOLTAGE_PRECISION_UV
Shunt voltage measurement precision.
static int32_t reg_val_to_shunt_voltage_uv(int16_t reg_val)
Convert register value to shunt voltage in uV.
static int32_t sum_reg_val_to_shunt_voltage_uv(int16_t sum_reg_val)
Convert register value to shunt voltage sum value in mV.
static int16_t bus_voltage_mv_to_reg_val(int16_t b_mv)
Convert bus voltage in mV to register value.
static int16_t reg_val_to_bus_voltage_mv(int16_t reg_val)
Convert register value to bus voltage in mV.
static int16_t shunt_voltage_uv_to_reg_val(int32_t s_uv)
Convert shunt voltage in uV to register value.
static int16_t sum_shunt_voltage_uv_to_reg_val(int32_t sum_suv)
Convert shunt voltage sum value in uV to register value.