关于FT4222设备
FT4222是一款功能强大的USB到SPI/I2C/GPIO的转接器桥,由芯片制造商FTDI(Future Technology Devices International Ltd.)开发和生产。该模块可以将USB接口转换为SPI,I2C接口或GPIO接口,从而方便地连接和控制外部设备。在QuadSPI master模式下,可以达到53.8Mbps的速率。
产品资料链接:Products/FT4222HQ
软件库及示例下载参考页FT4222H软件示例:
在本文中,介绍树莓派相关,使用libft4222-linux-1.4.4.44版本。
最新版本为:libft4222-linux-1.4.4.170
树莓派安装驱动
树莓派硬件平台:树莓派 3B
系统:ubuntu-22.04.4-preinstalled-desktop-arm64
$cat /etc/os-release
插上UWB Dongle模块,可以看到FT4222设备,信息如下:
$lsusb
ID 0403:601C Future Technology Devices International, Ltd FT4222
关于驱动的安装
1、解压安装文件
$tar zxvf libft4222-1.4.4.44.tgz
解压得到以下目录:
build-arm-v6
build-i386
build-x86_64
examples
libft4222.h
ftd2xx.h
WinTypes.h
install4222.sh
2、运行安装脚本,根据系统硬件将相关库文件拷贝到/usr/local/lib
与/usr/local/include
目录,同时创建与版本无关的符号链接,libft4222.so。
3、安装测试:
cd examples
cc get-version.c -lft4222 -Wl, -rpath,/usr/local/lib
sudo ./a.out
若无设备连接,则返回:No devices connected。
若检测到设备,则返回设备信息:
Python中使用
在Python中使用时,需要加载ft4222库以及ftd2xxx库。
pip install ft4222==1.8.1
pip install ftd2xx==1.3.3
import ft4222
# 获取FT4222 设备信息,FT4222 A为SPI Master
# FT4222 B为GPIO接口(GPIO 0,1,2,3)
number_of_devices = ft4222.createDeviceInfoList()
# 获取设备信息
device_info = ft4222.getDeviceInfoDetail(idx, False)# 获取设备接口
ftdi_spi_interface = ft4222.openByLocation(device_info['locatiton'])# 打印设备信息
print("SPI Interface Information:")
print("Location: " + str(device_info[0]['location']))
print("Serial Number: " + str(device_info[0]['serial']))
print("Description: " + str(device_info[0]['description']))
print("Type: " + str(device_info[0]['type']))
print("Id: " + str(device_info[0]['id']))
print("Index: " + str(device_info[0]['index']))
print("Flags: " + str(device_info[0]['flags']))
print("Handle: " + str(device_info[0]['handle']))
print("")
#print device
print("GPIO Interface Information:")
print("Location: " + str(device_info[1]['location']))
print("Serial Number: " + str(device_info[1]['serial']))
print("Description: " + str(device_info[1]['description']))
print("Type: " + str(device_info[1]['type']))
print("Id: " + str(device_info[1]['id']))
print("Index: " + str(device_info[1]['index']))
print("Flags: " + str(device_info[1]['flags']))
print("Handle: " + str(device_info[1]['handle']))
*注1:非完整示例代码,仅显示基本操作示例。
*注2:在运行python代码时,需要使用sudo权限。
输出信息如下: