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