embassy-nrf

Crates

git

Versions

nrf9120-ns

Flavors

Struct Twim

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

TWI driver.

Implementations§

Source§

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

Source

pub fn new( twim: Peri<'d, T>, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, sda: Peri<'d, impl GpioPin>, scl: Peri<'d, impl GpioPin>, config: Config, tx_ram_buffer: &'d mut [u8], ) -> Self

Create a new TWI driver.

tx_ram_buffer is required if any write operations will be performed with data that is not in RAM. Usually this is static data that the compiler locates in flash instead of RAM. The tx_ram_buffer needs to be at least as large as the largest write operation that will be executed with a buffer that is not in RAM. If all write operations will be performed from RAM, an empty buffer (&[]) may be used.

Source

pub fn blocking_transaction( &mut self, address: u8, operations: &mut [Operation<'_>], ) -> Result<(), Error>

Execute the provided operations on the I2C bus.

Each buffer must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.

Consecutive Operation::Reads are not supported due to hardware limitations.

An Operation::Write following an Operation::Read must have a non-empty buffer.

Source

pub fn blocking_transaction_timeout( &mut self, address: u8, operations: &mut [Operation<'_>], timeout: Duration, ) -> Result<(), Error>

Execute the provided operations on the I2C bus with timeout.

See [blocking_transaction].

Source

pub async fn transaction( &mut self, address: u8, operations: &mut [Operation<'_>], ) -> Result<(), Error>

Execute the provided operations on the I2C bus.

Each buffer must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.

Consecutive Operation::Reads are not supported due to hardware limitations.

An Operation::Write following an Operation::Read must have a non-empty buffer.

Source

pub fn blocking_write( &mut self, address: u8, buffer: &[u8], ) -> Result<(), Error>

Write to an I2C slave.

The buffer must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.

Source

pub fn blocking_read( &mut self, address: u8, buffer: &mut [u8], ) -> Result<(), Error>

Read from an I2C slave.

The buffer must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.

Source

pub fn blocking_write_read( &mut self, address: u8, wr_buffer: &[u8], rd_buffer: &mut [u8], ) -> Result<(), Error>

Write data to an I2C slave, then read data from the slave without triggering a stop condition between the two.

The buffers must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.

Source

pub fn blocking_write_timeout( &mut self, address: u8, buffer: &[u8], timeout: Duration, ) -> Result<(), Error>

Write to an I2C slave with timeout.

See [blocking_write].

Source

pub fn blocking_read_timeout( &mut self, address: u8, buffer: &mut [u8], timeout: Duration, ) -> Result<(), Error>

Read from an I2C slave.

The buffer must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.

Source

pub fn blocking_write_read_timeout( &mut self, address: u8, wr_buffer: &[u8], rd_buffer: &mut [u8], timeout: Duration, ) -> Result<(), Error>

Write data to an I2C slave, then read data from the slave without triggering a stop condition between the two.

The buffers must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.

Source

pub async fn read( &mut self, address: u8, buffer: &mut [u8], ) -> Result<(), Error>

Read from an I2C slave.

The buffer must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.

Source

pub async fn write(&mut self, address: u8, buffer: &[u8]) -> Result<(), Error>

Write to an I2C slave.

The buffer must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.

Source

pub async fn write_read( &mut self, address: u8, wr_buffer: &[u8], rd_buffer: &mut [u8], ) -> Result<(), Error>

Write data to an I2C slave, then read data from the slave without triggering a stop condition between the two.

The buffers must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.

Trait Implementations§

Source§

impl<'a, T: Instance> Drop for Twim<'a, T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<'d, T: Instance> ErrorType for Twim<'d, T>

Source§

type Error = Error

Error type
Source§

impl<'d, T: Instance> I2c for Twim<'d, T>

Source§

fn transaction( &mut self, address: u8, operations: &mut [Operation<'_>], ) -> Result<(), Self::Error>

Execute the provided operations on the I2C bus. Read more
Source§

fn read(&mut self, address: A, read: &mut [u8]) -> Result<(), Self::Error>

Reads enough bytes from slave with address to fill read. Read more
Source§

fn write(&mut self, address: A, write: &[u8]) -> Result<(), Self::Error>

Writes bytes to slave with address address. Read more
Source§

fn write_read( &mut self, address: A, write: &[u8], read: &mut [u8], ) -> Result<(), Self::Error>

Writes bytes to slave with address address and then reads enough bytes to fill read in a single transaction. Read more
Source§

impl<'d, T: Instance> I2c for Twim<'d, T>

Source§

async fn transaction( &mut self, address: u8, operations: &mut [Operation<'_>], ) -> Result<(), Self::Error>

Execute the provided operations on the I2C bus as a single transaction. Read more
Source§

async fn read(&mut self, address: A, read: &mut [u8]) -> Result<(), Self::Error>

Reads enough bytes from slave with address to fill buffer. Read more
Source§

async fn write(&mut self, address: A, write: &[u8]) -> Result<(), Self::Error>

Writes bytes to slave with address address. Read more
Source§

async fn write_read( &mut self, address: A, write: &[u8], read: &mut [u8], ) -> Result<(), Self::Error>

Writes bytes to slave with address address and then reads enough bytes to fill read in a single transaction. Read more
Source§

impl<'d, T: Instance> SetConfig for Twim<'d, T>

Source§

type Config = Config

The configuration type used by this driver.
Source§

type ConfigError = ()

The error type that can occur if set_config fails.
Source§

fn set_config(&mut self, config: &Self::Config) -> Result<(), Self::ConfigError>

Set the configuration of the driver.
Source§

impl<'a, T: Instance> Read for Twim<'a, T>

Source§

type Error = Error

Error type
Source§

fn read(&mut self, addr: u8, bytes: &mut [u8]) -> Result<(), Error>

Reads enough bytes from slave with address to fill buffer Read more
Source§

impl<'a, T: Instance> Write for Twim<'a, T>

Source§

type Error = Error

Error type
Source§

fn write(&mut self, addr: u8, bytes: &[u8]) -> Result<(), Error>

Writes bytes to slave with address address Read more
Source§

impl<'a, T: Instance> WriteRead for Twim<'a, T>

Source§

type Error = Error

Error type
Source§

fn write_read<'w>( &mut self, addr: u8, bytes: &'w [u8], buffer: &'w mut [u8], ) -> Result<(), Error>

Writes bytes to slave with address address and then reads enough bytes to fill buffer in a single transaction Read more

Auto Trait Implementations§

§

impl<'d, T> Freeze for Twim<'d, T>
where T: Freeze,

§

impl<'d, T> RefUnwindSafe for Twim<'d, T>
where T: RefUnwindSafe,

§

impl<'d, T> Send for Twim<'d, T>
where T: Send,

§

impl<'d, T> Sync for Twim<'d, T>
where T: Sync,

§

impl<'d, T> Unpin for Twim<'d, T>
where T: Unpin,

§

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

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, 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.