INA228Sync

Struct INA228Sync 

Source
pub struct INA228Sync<D: DelayNs, I: RegisterInterfaceSync> {
    pub current_lsb_na: i64,
    pub adc_range: AdcRange,
    /* private fields */
}
Expand description

The INA228 is an ultra-precise digital power monitor with a 20-bit delta-sigma ADC specifically designed for current-sensing applications. The device can measure a full-scale differential input of ±163.84 mV or ±40.96 mV across a resistive shunt sense element with common-mode voltage support from –0.3 V to +85 V.

For a full description and usage examples, refer to the module documentation.

Fields§

§current_lsb_na: i64

Configured nA/LSB for current readings

§adc_range: AdcRange

The configured adc range

Implementations§

Source§

impl<D, I> INA228Sync<D, I2cDeviceSync<I, SevenBitAddress>>

Source

pub fn new_i2c(delay: D, interface: I, address: Address) -> Self

Initializes a new device with the given address on the specified bus. This consumes the I2C bus I.

Before using this device, you should call the Self::init method which saves the calibration values to enable current and power output.

Source§

impl<D: DelayNs, I: RegisterInterfaceSync> INA228Sync<D, I>

Source

pub fn init( &mut self, shunt_resistance: ElectricalResistance, max_expected_current: ElectricCurrent, ) -> Result<(), InitError<I::BusError>>

Soft-resets the device, verifies its device id and manufacturer id and calibrates it with the given shunt resistor value and maximum expected current.

You can change the values later using Self::calibrate.

Source

pub fn calibrate( &mut self, shunt_resistance: ElectricalResistance, max_expected_current: ElectricCurrent, ) -> Result<(), TransportError<(), I::BusError>>

Writes the given shunt resistance and maximum expected current into the device configuration register. Automatically selects the adc range appropriately, leaving 10% headroom if possible. This required to enable power and current output.

Source

pub fn read_register<R>( &mut self, ) -> Result<R, TransportError<<R as Register>::CodecError, I::BusError>>

Reads from the given register. For a list of all available registers, refer to implementors of INA228Register.

Source

pub fn write_register<R>( &mut self, register: impl AsRef<R>, ) -> Result<(), TransportError<<R as Register>::CodecError, I::BusError>>

Writes to the given register. For a list of all available registers, refer to implementors of INA228Register.

Trait Implementations§

Source§

impl<D: DelayNs, I: RegisterInterfaceSync> ContinuousSensorSync for INA228Sync<D, I>

Source§

fn start_measuring(&mut self) -> Result<(), Self::Error>

Starts continuous measurement.

Source§

fn stop_measuring(&mut self) -> Result<(), Self::Error>

Stops continuous measurement.

Source§

fn measurement_interval_us(&mut self) -> Result<u32, Self::Error>

Expected amount of time between measurements in microseconds.

Source§

fn current_measurement( &mut self, ) -> Result<Option<Self::Measurement>, Self::Error>

Returns the most recent measurement. Will never return None.

Source§

fn is_measurement_ready(&mut self) -> Result<bool, Self::Error>

Check if new measurements are available.

Source§

fn next_measurement(&mut self) -> Result<Self::Measurement, Self::Error>

Wait indefinitely until new measurements are available and return them. Checks whether data is ready in intervals of 100us.

Source§

type Error = ContinuousMeasurementError<<I as RegisterInterfaceSync>::BusError>

The error type which may occur on associated functions
Source§

type Measurement = Measurement

A type holding the measurements obtained by this sensor
Source§

impl<D: DelayNs, I: RegisterInterfaceSync> OneshotSensorSync for INA228Sync<D, I>

Source§

fn measure(&mut self) -> Result<Self::Measurement, Self::Error>

Performs a one-shot measurement. This will set the operating mode to [`self::registers::OperatingMode::Triggered´] and enable all conversion outputs causing the device to perform a single conversion a return to sleep afterwards.

Source§

type Error = MeasurementError<<I as RegisterInterfaceSync>::BusError>

The error type which may occur on associated functions
Source§

type Measurement = Measurement

A type holding the measurements obtained by this sensor
Source§

impl<D: DelayNs, I: RegisterInterfaceSync> ResettableDeviceSync for INA228Sync<D, I>

Source§

fn reset(&mut self) -> Result<(), Self::Error>

Performs a soft-reset of the device, restoring internal registers to power-on reset values.

Source§

type Error = TransportError<(), <I as RegisterInterfaceSync>::BusError>

The error type which may occur when resetting the device
Source§

impl<D: DelayNs, I: RegisterInterfaceSync> ChargeSensor for INA228Sync<D, I>

Source§

impl<D: DelayNs, I: RegisterInterfaceSync> CurrentSensor for INA228Sync<D, I>

Source§

impl<D: DelayNs, I: RegisterInterfaceSync> EnergySensor for INA228Sync<D, I>

Source§

impl<D: DelayNs, I: RegisterInterfaceSync> PowerSensor for INA228Sync<D, I>

Source§

impl<D: DelayNs, I: RegisterInterfaceSync> TemperatureSensor for INA228Sync<D, I>

Source§

impl<D: DelayNs, I: RegisterInterfaceSync> VoltageSensor for INA228Sync<D, I>

Auto Trait Implementations§

§

impl<D, I> Freeze for INA228Sync<D, I>
where D: Freeze, I: Freeze,

§

impl<D, I> !RefUnwindSafe for INA228Sync<D, I>

§

impl<D, I> Send for INA228Sync<D, I>
where D: Send, I: Send,

§

impl<D, I> Sync for INA228Sync<D, I>
where D: Sync, I: Sync,

§

impl<D, I> Unpin for INA228Sync<D, I>
where D: Unpin, I: Unpin,

§

impl<D, I> !UnwindSafe for INA228Sync<D, I>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.