pub struct I2c<C: AnyConfig, D = NoneT> { /* private fields */ }
Expand description
Abstraction over a I2C peripheral, allowing to perform I2C transactions.
Implementations§
Source§impl<C: AnyConfig, D> I2c<C, D>
impl<C: AnyConfig, D> I2c<C, D>
Sourcepub fn data_ptr(&self) -> *mut Word
pub fn data_ptr(&self) -> *mut Word
Obtain a pointer to the DATA
register. Necessary for DMA transfers.
Sourcepub fn read_flags(&self) -> Flags
pub fn read_flags(&self) -> Flags
Read the interrupt flags
Sourcepub fn clear_flags(&mut self, flags: Flags)
pub fn clear_flags(&mut self, flags: Flags)
Clear interrupt status flags
Sourcepub fn enable_interrupts(&mut self, flags: Flags)
pub fn enable_interrupts(&mut self, flags: Flags)
Enable interrupts for the specified flags.
Sourcepub fn disable_interrupts(&mut self, flags: Flags)
pub fn disable_interrupts(&mut self, flags: Flags)
Disable interrupts for the specified flags.
Sourcepub fn read_status(&self) -> Status
pub fn read_status(&self) -> Status
Read the status flags
Sourcepub fn clear_status(&mut self, status: Status)
pub fn clear_status(&mut self, status: Status)
Clear the status flags
Sourcepub fn reconfigure<F>(&mut self, update: F)where
F: FnOnce(&mut SpecificConfig<C>),
pub fn reconfigure<F>(&mut self, update: F)where
F: FnOnce(&mut SpecificConfig<C>),
Reconfigure the I2C peripheral.
Calling this method will temporarily disable the SERCOM peripheral, as some registers are enable-protected. This may interrupt any ongoing transactions.
use atsamd_hal::sercom::i2c::I2c;
i2c.reconfigure(|c| c.set_run_in_standby(false));
Source§impl<C: AnyConfig> I2c<C>
impl<C: AnyConfig> I2c<C>
Sourcepub fn with_dma_channel<Chan: AnyChannel<Status = Ready>>(
self,
channel: Chan,
) -> I2c<C, Chan>
pub fn with_dma_channel<Chan: AnyChannel<Status = Ready>>( self, channel: Chan, ) -> I2c<C, Chan>
Attach a DMA channel to this I2c
. Its
embedded_hal::i2c::I2c
implementation will
use DMA to carry out its transactions.
Trait Implementations§
Source§impl<C: AnyConfig> I2c for I2c<C>
impl<C: AnyConfig> I2c for I2c<C>
Source§fn transaction(
&mut self,
address: u8,
operations: &mut [Operation<'_>],
) -> Result<(), Self::Error>
fn transaction( &mut self, address: u8, operations: &mut [Operation<'_>], ) -> Result<(), Self::Error>
Execute the provided operations on the I2C bus. Read more
Source§fn write(&mut self, address: u8, bytes: &[u8]) -> Result<(), Self::Error>
fn write(&mut self, address: u8, bytes: &[u8]) -> Result<(), Self::Error>
Writes bytes to slave with address
address
. Read moreSource§impl<C, D, S> I2c for I2c<C, D>
impl<C, D, S> I2c for I2c<C, D>
Source§fn transaction(
&mut self,
address: u8,
operations: &mut [Operation<'_>],
) -> Result<(), Self::Error>
fn transaction( &mut self, address: u8, operations: &mut [Operation<'_>], ) -> Result<(), Self::Error>
Execute the provided operations on the I2C bus. Read more
Source§fn write(&mut self, address: u8, bytes: &[u8]) -> Result<(), Self::Error>
fn write(&mut self, address: u8, bytes: &[u8]) -> Result<(), Self::Error>
Writes bytes to slave with address
address
. Read moreAuto Trait Implementations§
impl<C, D> Freeze for I2c<C, D>
impl<C, D> RefUnwindSafe for I2c<C, D>where
C: RefUnwindSafe,
D: RefUnwindSafe,
impl<C, D> Send for I2c<C, D>
impl<C, D> Sync for I2c<C, D>
impl<C, D> Unpin for I2c<C, D>
impl<C, D> UnwindSafe for I2c<C, D>where
C: UnwindSafe,
D: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more