/ftd2xx-embedded-hal

Implements the rust embedded-hal traits for FTDI devices.

Primary LanguageRustMIT LicenseMIT

Maintenance crates.io docs.rs Build Status

ftd2xx-embedded-hal

Inspired by ftdi-embedded-hal this is an embedded-hal implementation for the for the FTDI chips using the libftd2xx drivers.

This enables development of embedded device drivers without the use of a microcontroller. The FTDI D2xx devices interface with your PC via USB, and provide a multi-protocol synchronous serial engine to interface with most UART, SPI, and I2C embedded devices.

Note: This is strictly a development tool. The crate contains runtime borrow checks and explicit panics to adapt the FTDI device into the embedded-hal traits.

One-time Setup

Detailed setup instructions can be found in the libftd2xx crate.

Linux Quickstart

Use static linking (enable the "static" feature flag), and add udev rules.

[dependencies.ftd2xx-embedded-hal]
version = "~0.5.1"
features = ["static"]

Windows Quickstart

Use dyanmic linking (no feature flags), and run the vendor setup executable to install the vendor library on your system.

[dependencies.ftd2xx-embedded-hal]
version = "~0.5.1"

Examples

SPI

use embedded_hal::prelude::*;
use ftd2xx_embedded_hal::Ft232hHal;

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

I2C

use embedded_hal::prelude::*;
use ftd2xx_embedded_hal::Ft232hHal;

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

GPIO

use embedded_hal::prelude::*;
use ftd2xx_embedded_hal::Ft232hHal;

let ftdi = Ft232hHal::new()?.init_default()?;
let mut gpio = ftdi.ad6();

Limitations

  • Limited trait support: SPI, I2C, Delay, and OutputPin traits are implemented.
  • Limited device support: FT232H, FT4232H.