Struct ftd2xx_embedded_hal::FtHal[][src]

pub struct FtHal<Device, INITIALIZED> { /* fields omitted */ }

FTxxx device.

Implementations

impl<Device: FtdiCommon + TryFrom<Ftdi, Error = DeviceTypeError> + FtdiMpsse> FtHal<Device, Uninitialized>[src]

pub fn new() -> Result<FtHal<Device, Uninitialized>, DeviceTypeError>[src]

Create a new FTxxx structure.

Example

use ftd2xx_embedded_hal as hal;

let ftdi = hal::Ft232hHal::new()?.init_default()?;

pub fn with_serial_number(
    sn: &str
) -> Result<FtHal<Device, Uninitialized>, DeviceTypeError>
[src]

Create a new FTxxx structure from a serial number.

Example

use ftd2xx_embedded_hal as hal;

let ftdi = hal::Ft232hHal::with_serial_number("FT6ASGXH")?.init_default()?;

pub fn with_description(
    description: &str
) -> Result<FtHal<Device, Uninitialized>, DeviceTypeError>
[src]

Open a Ftxxx device by its device description.

Example

use libftd2xx::Ft4232h;

Ft4232h::with_description("FT4232H-56Q MiniModule A")?;

pub fn init_default(self) -> Result<FtHal<Device, Initialized>, TimeoutError>[src]

Initialize the FTDI MPSSE with sane defaults.

Default values:

  • Reset the FTDI device.
  • 4k USB transfer size.
  • 1s USB read timeout.
  • 1s USB write timeout.
  • 16ms latency timer.
  • 100kHz clock frequency.

Example

use ftd2xx_embedded_hal as hal;
use hal::{Ft232hHal, Initialized, Uninitialized};

let ftdi: Ft232hHal<Uninitialized> = hal::Ft232hHal::new()?;
let ftdi: Ft232hHal<Initialized> = ftdi.init_default()?;

pub fn init(
    self,
    mpsse_settings: &MpsseSettings
) -> Result<FtHal<Device, Initialized>, TimeoutError>
[src]

Initialize the FTDI MPSSE with custom values.

Note: The mask field of MpsseSettings is ignored for this function.

Note: The clock frequency will be 2/3 of the specified value when in I2C mode.

Panics

Panics if the clock_frequency field of MpsseSettings is None.

Example

use ftd2xx_embedded_hal as hal;
use hal::libftd2xx::MpsseSettings;
use hal::{Ft232hHal, Initialized, Uninitialized};

let ftdi: Ft232hHal<Uninitialized> = hal::Ft232hHal::new()?;
let ftdi: Ft232hHal<Initialized> = ftdi.init(&MpsseSettings {
    clock_frequency: Some(500_000),
    ..MpsseSettings::default()
})?;

impl<Device: FtdiCommon> FtHal<Device, Initialized>[src]

pub fn spi(&self) -> Result<Spi<'_, Device>, TimeoutError>[src]

Aquire the SPI peripheral for the FT232H.

Pin assignments:

  • AD0 => SCK
  • AD1 => MOSI
  • AD2 => MISO

Panics

Panics if pin 0, 1, or 2 are already in use.

Example

use ftd2xx_embedded_hal as hal;

let ftdi = hal::Ft232hHal::new()?.init_default()?;
let mut spi = ftdi.spi()?;

pub fn i2c(&self) -> Result<I2c<'_, Device>, TimeoutError>[src]

Aquire the I2C peripheral for the FT232H.

Pin assignments:

  • AD0 => SCL
  • AD1 => SDA
  • AD2 => SDA

Yes, AD1 and AD2 are both SDA. These pins must be shorted together for I2C operation.

Panics

Panics if pin 0, 1, or 2 are already in use.

Example

use ftd2xx_embedded_hal as hal;

let ftdi = hal::Ft232hHal::new()?.init_default()?;
let mut i2c = ftdi.i2c()?;

pub fn ad0(&self) -> OutputPin<'_, Device>[src]

Aquire the digital output pin 0 for the FT232H.

Panics

Panics if the pin is already in-use.

pub fn ad1(&self) -> OutputPin<'_, Device>[src]

Aquire the digital output pin 1 for the FT232H.

Panics

Panics if the pin is already in-use.

pub fn ad2(&self) -> OutputPin<'_, Device>[src]

Aquire the digital output pin 2 for the FT232H.

Panics

Panics if the pin is already in-use.

pub fn ad3(&self) -> OutputPin<'_, Device>[src]

Aquire the digital output pin 3 for the FT232H.

Panics

Panics if the pin is already in-use.

pub fn ad4(&self) -> OutputPin<'_, Device>[src]

Aquire the digital output pin 4 for the FT232H.

Panics

Panics if the pin is already in-use.

pub fn ad5(&self) -> OutputPin<'_, Device>[src]

Aquire the digital output pin 5 for the FT232H.

Panics

Panics if the pin is already in-use.

pub fn ad6(&self) -> OutputPin<'_, Device>[src]

Aquire the digital output pin 6 for the FT232H.

Panics

Panics if the pin is already in-use.

pub fn ad7(&self) -> OutputPin<'_, Device>[src]

Aquire the digital output pin 7 for the FT232H.

Panics

Panics if the pin is already in-use.

Trait Implementations

impl<Device: Debug, INITIALIZED: Debug> Debug for FtHal<Device, INITIALIZED>[src]

impl<Device: FtdiCommon> From<Device> for FtHal<Device, Uninitialized>[src]

fn from(ft: Device) -> Self[src]

Create a new FT232H structure from a specific FT232H device.

Examples

Selecting a device with a specific serial number.

use ftd2xx_embedded_hal as hal;
use hal::libftd2xx::Ft232h;
use hal::Ft232hHal;

let ft = Ft232h::with_serial_number("FT59UO4C")?;
let ftdi = Ft232hHal::from(ft).init_default()?;

Selecting a device with a specific description.

use ftd2xx_embedded_hal as hal;
use hal::libftd2xx::Ft232h;
use hal::FtHal;

let ft = Ft232h::with_description("My device description")?;
let ftdi = FtHal::from(ft).init_default()?;

Auto Trait Implementations

impl<Device, INITIALIZED> RefUnwindSafe for FtHal<Device, INITIALIZED> where
    INITIALIZED: RefUnwindSafe

impl<Device, INITIALIZED> Send for FtHal<Device, INITIALIZED> where
    Device: Send,
    INITIALIZED: Send

impl<Device, INITIALIZED> Sync for FtHal<Device, INITIALIZED> where
    Device: Send,
    INITIALIZED: Sync

impl<Device, INITIALIZED> Unpin for FtHal<Device, INITIALIZED> where
    Device: Unpin,
    INITIALIZED: Unpin

impl<Device, INITIALIZED> UnwindSafe for FtHal<Device, INITIALIZED> where
    INITIALIZED: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.