52 sfTkError_t
calibrate(
float shuntResOhms,
float maxCurrentA)
73 return busVoltageToVolts<uint32_t, true>(volts,
kBusLSB);
82 return currentToAmps<int32_t, true>(amps);
109 return readSignedMeasurementRaw<int32_t, true>(
kRegVShunt, value);
117 return readUnsignedMeasurementRaw<uint32_t, true>(
kRegVBus, value);
125 return readSignedMeasurementRaw<int32_t, true>(
kRegCurrent, value);
159 static constexpr float kBusLSB = 195.3125e-6f;
INA228 high-precision power/energy/charge monitor driver.
Definition: sfDevINA228.h:37
sfTkError_t getCurrent_A(float &s)
Read the calculated current in Amps (24-bit CURRENT, scaled by CURRENT_LSB).
Definition: sfDevINA228.h:80
sfTkError_t getEnergy_J(double &joules)
Read the accumulated energy in Joules.
Definition: sfDevINA228.cpp:35
sfTkError_t getPowerRaw(uint32_t &value)
Read the raw 24-bit power value.
Definition: sfDevINA228.h:131
static constexpr uint8_t kDieTempShift
DIETEMP is a full 16-bit value.
Definition: sfDevINA228.h:163
sfTkError_t getBusVoltageRaw(uint32_t &value)
Read the raw 20-bit bus voltage value.
Definition: sfDevINA228.h:115
sfDevINA228()
Definition: sfDevINA228.h:39
sfTkError_t getCharge_C(double &coulombs)
Read the accumulated charge in Coulombs.
Definition: sfDevINA228.cpp:47
sfTkError_t getDieTemp_C(float &celsius)
Read the die temperature in degrees Celsius (16-bit DIETEMP, 7.8125 m-deg-C/LSB).
Definition: sfDevINA228.h:97
sfTkError_t getShuntVoltage_mV(float &milliVolts)
Read the shunt voltage in millivolts (24-bit VSHUNT, bits [23:4]).
Definition: sfDevINA228.h:63
static constexpr double kEnergyLSBScale
Energy LSB = 16 x 3.2 x CURRENT_LSB.
Definition: sfDevINA228.h:164
sfTkError_t getShuntVoltageRaw(int32_t &value)
Read the raw 20-bit shunt voltage value (sign-extended).
Definition: sfDevINA228.h:107
sfTkError_t getPower_W(float &watts)
Read the calculated power in Watts (24-bit POWER, scaled by 3.2 * CURRENT_LSB).
Definition: sfDevINA228.h:89
static constexpr float kCalScale
Calibration scale constant.
Definition: sfDevINA228.h:156
sfTkError_t getCurrentRaw(int32_t &value)
Read the raw 20-bit current value (sign-extended).
Definition: sfDevINA228.h:123
sfTkError_t calibrate(float shuntResOhms, float maxCurrentA)
Calibrate the device for current and power measurements.
Definition: sfDevINA228.h:52
static constexpr float kCurrentFullScale
2^19, positive half of the 20-bit ADC.
Definition: sfDevINA228.h:161
static constexpr float kShuntLSBDefault
Shunt LSB in volts (ADCRANGE = 0).
Definition: sfDevINA228.h:157
static constexpr float kShuntLSBReduced
Shunt LSB in volts (ADCRANGE = 1).
Definition: sfDevINA228.h:158
static constexpr float kBusLSB
Bus voltage LSB in volts.
Definition: sfDevINA228.h:159
static constexpr float kPowerLSBScale
Power LSB = 3.2 x CURRENT_LSB.
Definition: sfDevINA228.h:162
static constexpr float kTempLSB
Die temperature LSB in deg-C.
Definition: sfDevINA228.h:160
sfTkError_t getBusVoltage_V(float &volts)
Read the bus voltage in Volts (24-bit VBUS, bits [23:4], 195.3125 uV/LSB).
Definition: sfDevINA228.h:71
Platform-independent base driver for the INA228/INA237 power monitor ICs.
Definition: sfDevINA2XX.h:189
sfTkError_t powerToWatts(float &watts, float powerLSBScale)
Shared POWER -> watts conversion. powerLSBScale is 3.2 (INA228) or 0.2 (INA237).
Definition: sfDevINA2XX.cpp:778
sfTkError_t calibrateImpl(float shuntResOhms, float maxCurrentA, float calScale, float currentFullScale)
Shared calibration math; only the two scale constants differ per device.
Definition: sfDevINA2XX.cpp:745
static const uint8_t kRegVShunt
Shunt Voltage Measurement (24/16-bit, R)
Definition: sfDevINA2XX.h:649
static const uint8_t kRegCurrent
Current Result (24/16-bit, R)
Definition: sfDevINA2XX.h:652
sfTkError_t readPowerRaw(uint32_t &value)
Shared raw POWER read (24-bit, unsigned) — identical on both devices.
Definition: sfDevINA2XX.cpp:808
sfTkError_t dieTemperatureToCelsius(float &celsius, uint8_t shift, float tempLSB)
Shared DIETEMP -> Celsius conversion.
Definition: sfDevINA2XX.cpp:790
static const uint8_t kRegVBus
Bus Voltage Measurement (24/16-bit, R)
Definition: sfDevINA2XX.h:650
Header file for the SparkFun INA2XX family base driver.