Struct nrf52840_hal::Twim

source ·
pub struct Twim<T>(/* private fields */);
Expand description

Interface to a TWIM instance.

This is a very basic interface that comes with the following limitation: The TWIM instances share the same address space with instances of SPIM, SPIS, SPI, TWIS, and TWI. For example, TWIM0 conflicts with SPIM0, SPIS0, etc.; TWIM1 conflicts with SPIM1, SPIS1, etc. You need to make sure that conflicting instances are disabled before using Twim. Please refer to the product specification for more information (section 15.2 for nRF52832, section 6.1.2 for nRF52840).

Implementations§

source§

impl<T> Twim<T>
where T: Instance,

source

pub fn new(twim: T, pins: Pins, frequency: FREQUENCY_A) -> Twim<T>

source

pub fn disable(&mut self)

Disable the instance.

Disabling the instance will switch off the peripheral leading to a considerably lower energy use. However, while the instance is disabled it is not possible to use it for communication. The configuration of the instance will be retained.

source

pub fn enable(&mut self)

Re-enable the instance after it was previously disabled.

source

pub 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 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 fn write_then_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 copy_write_then_read( &mut self, address: u8, wr_buffer: &[u8], rd_buffer: &mut [u8] ) -> Result<(), Error>

Copy data into RAM and write to an I2C slave, then read data from the slave without triggering a stop condition between the two.

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

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

source

pub fn free(self) -> (T, Pins)

Return the raw interface to the underlying TWIM peripheral.

Trait Implementations§

source§

impl<T> ErrorType for Twim<T>

§

type Error = Error

Error type
source§

impl<T> I2c for Twim<T>
where T: Instance,

source§

fn transaction( &mut self, address: u8, operations: &mut [Operation<'_>] ) -> Result<(), <Twim<T> as ErrorType>::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<T> Read for Twim<T>
where T: Instance,

§

type Error = Error

Error type
source§

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

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

impl<T> Write for Twim<T>
where T: Instance,

§

type Error = Error

Error type
source§

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

Writes bytes to slave with address address Read more
source§

impl<T> WriteRead for Twim<T>
where T: Instance,

§

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<T> Freeze for Twim<T>
where T: Freeze,

§

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

§

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

§

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

§

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

§

impl<T> UnwindSafe for Twim<T>
where T: UnwindSafe,

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

§

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

§

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

§

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.