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