#hid #usb-hid #i2c #ftdi #usb #uart #usb-device

ft260hid

用于控制 FT260 USB-I2C/UART 桥接 IC 的库

1 个不稳定版本

0.1.0 2024 年 5 月 19 日

#1146硬件支持

自定义许可

74KB
2K SLoC

ft260hid

此非官方库用于控制由 FTDI 制造的 FT260 USB-I2C/UART 桥接 IC。
该库主要依赖于 "hidapi" crate。

关于 FT260

此 USB 设备没有虚拟 COM 端口。而是具有 HID 接口。
例如,HID 输入/输出报告被转换为 FT260 与其外部设备之间的 I2C/UART 通信。

示例

单元测试在评估板 UMFT260EV1A 上执行。

GPIO

use ft260hid::device;
use ft260hid::io::gpio::{Dir, Group, Pin, Val};
// . . .
    let dev = device::open(0).unwrap();
    let gpio = dev.gpio();
    gpio.enable_pin(Group::Gpio_0_1);
    gpio.set_dir(Pin::Gpio0, Dir::Out);
    gpio.write(Pin::Gpio0, Val::Low);
    gpio.set_dir(Pin::Gpio1, Dir::In);
    gpio.set_pull_up(Pin::Gpio1);

I2C

I2C EEPROM (AT24C02D_SOT23) 安装在 UMFT260EV1A 板上,可用于单元测试。

use ft260hid::device;
use ft260hid::io::i2c;
// . . .
/// I2C address of EEPROM on UMFT260EV1A
const EEPROM_ADDRESS: u8 = 0x50;
/// page size of EEPROM
const EEPROM_PAGE_SIZE: usize = 8;
// . . .
    let dev = device::open(0).unwrap();
    let mut i2c = dev.i2c();
    i2c.init(i2c::KBPS_DEFAULT);
    // address value to read EEPROM page out
    let addr = [0u8];
    let mut data_read = [0u8; EEPROM_PAGE_SIZE];
    i2c.write_read(EEPROM_ADDRESS,
                &addr,
                1,
                &mut buf,
                EEPROM_PAGE_SIZE,
                i2c::DURATION_WAIT_DEFAULT
            );

UART

UMFT260EV1A 上的 TXD-RXD 引脚在单元测试中被短接。

use ft260hid::device;
use ft260hid::io::uart;
// . . .
    // interface number is `1` !!
    let dev = device::open(1).unwrap();
    let mut uart = dev.uart();
    uart.init();
    uart.set_config(&uart::Config::default());
    // UART TX
    let mut buf_tx = [0u8; 256];
    let size_sent = uart.write(&buf_tx, len).unwrap();
    // RX data in FIFO
    let size_to_read = uart.size_to_read();
    // UART RX
    let mut buf_rx = [0u8; 256];
    let size_rec = uart.read(&mut buf_rx, size_to_read, uart::DURATION_WAIT_DEFAULT).unwrap();

依赖项

~2–13MB
~109K SLoC