pub trait _embedded_hal_blocking_i2c_WriteRead<A = u8>
where A: AddressMode,
{ type Error; // Required method fn write_read( &mut self, address: A, bytes: &[u8], buffer: &mut [u8] ) -> Result<(), Self::Error>; }
Expand description

Blocking write + read

Required Associated Types§

source

type Error

Error type

Required Methods§

source

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

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

I2C Events (contract)
Master: ST SAD+W     O0     O1     ... OM     SR SAD+R        MAK    MAK ...    NMAK SP
Slave:           SAK    SAK    SAK ...    SAK          SAK I0     I1     ... IN

Where

  • ST = start condition
  • SAD+W = slave address followed by bit 0 to indicate writing
  • SAK = slave acknowledge
  • Oi = ith outgoing byte of data
  • SR = repeated start condition
  • SAD+R = slave address followed by bit 1 to indicate reading
  • Ii = ith incoming byte of data
  • MAK = master acknowledge
  • NMAK = master no acknowledge
  • SP = stop condition

Implementors§

source§

impl<H, I2C: I2cOps<H, SDA, SCL>, SDA, SCL, CLOCK> WriteRead for I2c<H, I2C, SDA, SCL, CLOCK>

§

type Error = Error