embassy-stm32

Crates

git

Versions

stm32c532ec

Flavors

Skip to main content

OpAmp

Struct OpAmp 

Source
pub struct OpAmp<'d, T: Instance> { /* private fields */ }
Expand description

OpAmp driver.

Implementations§

Source§

impl<'d, T: Instance> OpAmp<'d, T>

Source

pub fn new(opamp: Peri<'d, T>, speed: OpAmpSpeed) -> Self

Create a new driver instance.

Does not enable the opamp, but does set the speed mode on some families.

Source

pub fn buffer_ext( &mut self, in_pin: Peri<'_, impl NonInvertingPin<T> + Pin>, out_pin: Peri<'_, impl OutputPin<T> + Pin>, ) -> OpAmpOutput<'_, T>

Configure the OpAmp as a buffer for the provided input pin, outputting to the provided output pin, and enable the opamp.

The input pin is configured for analogue mode but not consumed, so it may subsequently be used for ADC or comparator inputs.

The output pin is held within the returned OpAmpOutput struct, preventing it being used elsewhere. The OpAmpOutput can then be directly used as an ADC input. The opamp will be disabled when the OpAmpOutput is dropped.

Source

pub fn pga_ext( &mut self, in_pin: Peri<'_, impl NonInvertingPin<T> + Pin>, out_pin: Peri<'_, impl OutputPin<T> + Pin>, gain: OpAmpGain, ) -> OpAmpOutput<'_, T>

Configure the OpAmp as a PGA for the provided input pin, outputting to the provided output pin, and enable the opamp.

The input pin is configured for analogue mode but not consumed, so it may subsequently be used for ADC or comparator inputs.

The output pin is held within the returned OpAmpOutput struct, preventing it being used elsewhere. The OpAmpOutput can then be directly used as an ADC input. The opamp will be disabled when the OpAmpOutput is dropped.

Source

pub fn pga_biased_ext( &mut self, in_pin: Peri<'_, impl NonInvertingPin<T> + Pin>, bias_pin: Peri<'_, impl BiasPin<T> + Pin>, out_pin: Peri<'_, impl OutputPin<T> + Pin>, gain: OpAmpGain, ) -> OpAmpOutput<'_, T>

Configure the OpAmp as a PGA for the provided input pin, outputting to the provided output pin, and enable the opamp.

The ground node of the gain network is connected to the provided VINM0 bias pin.

The input and bias pins are configured for analogue mode but not consumed, so it may subsequently be used for ADC or comparator inputs.

The output pin is held within the returned OpAmpOutput struct, preventing it being used elsewhere. The OpAmpOutput can then be directly used as an ADC input. The opamp will be disabled when the OpAmpOutput is dropped.

Source

pub fn standalone_ext( &mut self, p_pin: Peri<'d, impl NonInvertingPin<T> + Pin>, m_pin: Peri<'d, impl InvertingPin<T> + Pin>, out_pin: Peri<'d, impl OutputPin<T> + Pin>, ) -> OpAmpOutput<'_, T>

Configure the OpAmp in standalone mode with the non-inverting input connected to the provided p_pin, the inverting input connected to the m_pin, and output to the provided out_pin.

The input pins are configured for analogue mode but not consumed, allowing their subsequent use for ADC or comparator inputs.

The output pin is held within the returned OpAmpOutput struct, preventing it being used elsewhere. The opamp will be disabled when the OpAmpOutput is dropped.

Source

pub fn calibrate(&mut self)

Calibrates the operational amplifier.

This function enables the opamp and sets the user trim mode for calibration. Depending on the speed mode of the opamp, it calibrates the differential pair inputs. For normal speed, both the P and N differential pairs are calibrated, while for high-speed mode, only the P differential pair is calibrated.

Calibrating a differential pair requires waiting 12ms in the worst case (binary method).

Trait Implementations§

Source§

impl<'d, T: Instance> Drop for OpAmp<'d, T>

Available on neither stm32f3 nor stm32g4.
Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl<'d, T> !UnwindSafe for OpAmp<'d, T>

§

impl<'d, T> Freeze for OpAmp<'d, T>
where Peri<'d, T>: Freeze,

§

impl<'d, T> RefUnwindSafe for OpAmp<'d, T>
where Peri<'d, T>: RefUnwindSafe,

§

impl<'d, T> Send for OpAmp<'d, T>
where Peri<'d, T>: Send,

§

impl<'d, T> Sync for OpAmp<'d, T>
where Peri<'d, T>: Sync,

§

impl<'d, T> Unpin for OpAmp<'d, T>
where Peri<'d, T>: Unpin,

§

impl<'d, T> UnsafeUnpin for OpAmp<'d, T>
where Peri<'d, T>: UnsafeUnpin,

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> 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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.