pub struct I2c<Device: MpsseCmdExecutor> { /* private fields */ }
Expand description
FTDI I2C interface.
This is created by calling FtHal::i2c
.
Implementations§
Source§impl<Device, E> I2c<Device>
impl<Device, E> I2c<Device>
Sourcepub fn set_stop_start_len(&mut self, start_stop_cmds: u8)
pub fn set_stop_start_len(&mut self, start_stop_cmds: u8)
Set the length of start and stop conditions.
This is an advanced feature that most people will not need to touch. I2C start and stop conditions are generated with a number of MPSSE commands. This sets the number of MPSSE command generated for each stop and start condition. An increase in the number of MPSSE commands roughtly correlates to an increase in the duration.
§Example
use ftdi_embedded_hal as hal;
let device = libftd2xx::Ft2232h::with_description("Dual RS232-HS A")?;
let hal = hal::FtHal::init_freq(device, 3_000_000)?;
let mut i2c = hal.i2c()?;
i2c.set_stop_start_len(10);
Sourcepub fn set_fast(&mut self, fast: bool)
pub fn set_fast(&mut self, fast: bool)
Enable faster I2C transactions by sending commands in a single write.
This is disabled by default, and currently has no effect when using
version 1 of the embedded-hal
traits.
Normally the I2C methods will send commands with a delay after each
slave ACK to read from the USB device.
Enabling this will send I2C commands without a delay, but slave ACKs
will only be checked at the end of each call to read
, write
, or
write_read
.
Additionally this changes the type of errors that can occur:
- enabled: NAK errors will be reported as
NoAcknowledgeSource::Unknown
. - disabled: NAK errors will be reported as
NoAcknowledgeSource::Address
orNoAcknowledgeSource::Data
.
§Example
use ftdi_embedded_hal as hal;
let device = ftdi::find_by_vid_pid(0x0403, 0x6014)
.interface(ftdi::Interface::A)
.open()?;
let hal = hal::FtHal::init_freq(device, 3_000_000)?;
let mut i2c = hal.i2c()?;
i2c.set_fast(true);