Skip to main content

Rp2040Hal

Struct Rp2040Hal 

Source
pub(crate) struct Rp2040Hal {
    i2c_peri: Peri<'static, I2C0>,
    scl: Peri<'static, PIN_5>,
    sda: Peri<'static, PIN_4>,
}
Expand description

ATECC HAL bound to I2C0 on the RP2040.

Hard-wired to SCL=GP5, SDA=GP4 per the project schematic. To use a different pin pair, change the concrete PIN_* types in the struct fields and the new constructor signature.

Fields§

§i2c_peri: Peri<'static, I2C0>

Owned I2C0 instance, used by [Peri::reborrow] on each transaction.

§scl: Peri<'static, PIN_5>

SCL pin (GP5).

§sda: Peri<'static, PIN_4>

SDA pin (GP4). The pin is always driven by the I2C controller, at either 400 kHz (normal traffic) or 100 kHz (wake token). It is never reconfigured to GPIO output.

Implementations§

Source§

impl Rp2040Hal

Source

pub(crate) fn new( i2c_peri: Peri<'static, I2C0>, scl: Peri<'static, PIN_5>, sda: Peri<'static, PIN_4>, ) -> Self

Build the HAL from the three peripherals.

The caller passes peripherals.I2C0, peripherals.PIN_5 (SCL), and peripherals.PIN_4 (SDA).

Source

fn build_i2c(&mut self) -> I2c<'_, I2C0, Async>

Build a fresh I2c for one transaction. The instance is dropped when this function returns (or when the caller drops the returned I2c).

Trait Implementations§

Source§

impl AteccHal for Rp2040Hal

Source§

type Error = Rp2040HalError

Backend-specific error type (embassy_rp::i2c::Error, a mock variant, etc.).
Source§

async fn i2c_write(&mut self, addr: u8, data: &[u8]) -> Result<(), Self::Error>

Write a buffer to the chip over I2C. Read more
Source§

async fn i2c_read( &mut self, addr: u8, buf: &mut [u8], ) -> Result<(), Self::Error>

Read a buffer from the chip over I2C. buf is filled exactly to its length.
Source§

async fn pulse_sda_low(&mut self, _duration_us: u32) -> Result<(), Self::Error>

Pull the SDA line low for duration_us microseconds. Read more
Source§

async fn delay_us(&mut self, duration_us: u32)

Sleep for duration_us microseconds. Read more
Source§

async fn delay_ms(&mut self, duration_ms: u32)

Sleep for duration_ms milliseconds.

Auto Trait Implementations§

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> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

Source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
Source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

Source§

fn lossy_into(self) -> Dst

Performs the conversion.
Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> StrictAs for T

Source§

fn strict_as<Dst>(self) -> Dst
where T: StrictCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> StrictCastFrom<Src> for Dst
where Src: StrictCast<Dst>,

Source§

fn strict_cast_from(src: Src) -> Dst

Casts the value.
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.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.