Struct FtHal

Source
pub struct FtHal<Device: FtdiCommon, INITIALIZED> { /* private fields */ }
Expand description

FTxxx device.

Implementations§

Source§

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

Source

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

Create a new FTxxx structure.

§Example
use ftd2xx_embedded_hal as hal;

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

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

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()?;
Source

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

Open a Ftxxx device by its device description.

§Example
use libftd2xx::Ft4232h;

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

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

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()?;
Source

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

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()
})?;
Source§

impl<Device: FtdiCommon> FtHal<Device, Initialized>

Source

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

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()?;
Source

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

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()?;
Source

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

Aquire the digital output pin 0 for the FT232H.

§Panics

Panics if the pin is already in-use.

Source

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

Aquire the digital output pin 1 for the FT232H.

§Panics

Panics if the pin is already in-use.

Source

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

Aquire the digital output pin 2 for the FT232H.

§Panics

Panics if the pin is already in-use.

Source

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

Aquire the digital output pin 3 for the FT232H.

§Panics

Panics if the pin is already in-use.

Source

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

Aquire the digital output pin 4 for the FT232H.

§Panics

Panics if the pin is already in-use.

Source

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

Aquire the digital output pin 5 for the FT232H.

§Panics

Panics if the pin is already in-use.

Source

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

Aquire the digital output pin 6 for the FT232H.

§Panics

Panics if the pin is already in-use.

Source

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

Aquire the digital output pin 7 for the FT232H.

§Panics

Panics if the pin is already in-use.

Trait Implementations§

Source§

impl<Device: Debug + FtdiCommon, INITIALIZED: Debug> Debug for FtHal<Device, INITIALIZED>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<Device: FtdiCommon> From<Device> for FtHal<Device, Uninitialized>

Source§

fn from(ft: Device) -> Self

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> !Freeze for FtHal<Device, INITIALIZED>

§

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

§

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

§

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

§

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

§

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

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.