12个重大版本发布

0.22.0 2024年5月7日
0.21.1 2024年3月27日
0.21.0 2024年1月10日
0.20.0 2023年12月14日
0.10.0 2021年11月9日

#60 in 嵌入式开发

Download history 27/week @ 2024-04-29 265/week @ 2024-05-06 53/week @ 2024-05-13 46/week @ 2024-05-20 29/week @ 2024-05-27 61/week @ 2024-06-03 54/week @ 2024-06-10 120/week @ 2024-06-17 76/week @ 2024-06-24 263/week @ 2024-07-01 71/week @ 2024-07-08 50/week @ 2024-07-15 47/week @ 2024-07-22 220/week @ 2024-07-29 75/week @ 2024-08-05 60/week @ 2024-08-12

406 每月下载次数
用于 8 个crate(6个直接使用)

MIT 和可能 LGPL-2.1 AND MIT

89KB
1.5K SLoC

Maintenance crates.io docs.rs Build Status

ftdi-embedded-hal

这是FTDI芯片的embedded-hal实现,可以用于包括libftd2xxftdi-rs在内的各种驱动程序。

这允许在不使用微控制器的情况下开发嵌入式设备驱动程序。FTDI设备通过USB与PC接口,并提供一个多协议同步串行引擎,以与大多数GPIO、SPI、I2C嵌入式设备接口。

注意:这是一个严格的开发工具。该crate包含运行时借用检查和显式panic,以将FTDI设备适配到embedded-hal traits。

快速入门

  • 启用"libftd2xx-static"功能标志以使用与libftd2xx驱动程序的静态链接。
  • 仅限Linux用户:添加udev规则
[dependencies.ftdi-embedded-hal]
version = "0.22.0"
features = ["libftd2xx", "libftd2xx-static"]

限制

  • 有限的trait支持:实现了SPI、I2C、Delay、InputPin和OutputPin traits。
  • 有限的设备支持:FT232H、FT2232H、FT4232H。
  • 有限的SPI模式支持:MODE0、MODE2。

示例

SPI

引脚设置

  • D0 - SCK
  • D1 - SDO (MOSI)
  • D2 - SDI (MISO)
  • D3..D7 - 可用于CS

使用ftdi-rs驱动程序与SPI设备通信

use ftdi_embedded_hal as hal;

let device = ftdi::find_by_vid_pid(0x0403, 0x6010)
    .interface(ftdi::Interface::A)
    .open()?;

let hal = hal::FtHal::init_freq(device, 3_000_000)?;
let spi = hal.spi()?;

使用libftd2xx驱动程序与SPI设备通信

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 spi = hal.spi()?;

I2C

使用ftdi-rs驱动程序与I2C设备通信

use ftdi_embedded_hal as hal;

let device = ftdi::find_by_vid_pid(0x0403, 0x6010)
    .interface(ftdi::Interface::A)
    .open()?;

let hal = hal::FtHal::init_freq(device, 400_000)?;
let i2c = hal.i2c()?;

使用libftd2xx驱动程序与I2C设备通信

use ftdi_embedded_hal as hal;

let device = libftd2xx::Ft232h::with_description("Single RS232-HS")?;

let hal = hal::FtHal::init_freq(device, 400_000)?;
let i2c = hal.i2c()?;

GPIO

使用libftd2xx驱动程序控制GPIO引脚

use ftdi_embedded_hal as hal;

let device = libftd2xx::Ft232h::with_description("Single RS232-HS")?;

let hal = hal::FtHal::init_default(device)?;
let gpio = hal.ad6();

使用ftdi-rs驱动程序控制GPIO引脚

use ftdi_embedded_hal as hal;

let device = ftdi::find_by_vid_pid(0x0403, 0x6010)
    .interface(ftdi::Interface::A)
    .open()?;

let hal = hal::FtHal::init_default(device)?;
let gpio = hal.ad6();

更多示例

依赖项

~0.2–1.7MB
~20K SLoC