The FT4222H is a High/Full Speed USB2.0-to-Quad SPI/I2C device controller. This project provides (incomplete) python binding to LibFT4222 (user guide). It provides a similar api than LibFT4222 does.
The complete documentation can be found here
importft4222importft4222.I2CMaster# list devicesnbDev=ft4222.createDeviceInfoList()
foriinrange(nbDev):
print(ft4222.getDeviceInfoDetail(i, False))
# open device with default description 'FT4222 A'dev=ft4222.openByDescription('FT4222 A')
# do a i2c transfers where full control is requiredslave=1# address# read one byte, don't stopdata=dev.i2cMaster_ReadEx(slave, ft4222.I2CMaster.Flag.REPEATED_START, 1)[0]
# read another 5 bytesdata+=dev.i2cMaster_ReadEx(slave, ft4222.I2CMaster.Flag.NONE, 5)
# another byte, than stopdata+=dev.i2cMaster_ReadEx(slave, ft4222.I2CMaster.Flag.STOP, 1)importtimeimportft4222fromft4222.GPIOimportDir, Port, Output# open device with default description 'FT4222 A'dev=ft4222.openByDescription('FT4222 A')
# use GPIO2 as gpio (not suspend out)dev.setSuspendOut(False)
# use GPIO3 as gpio (not wakeup)dev.setWakeUpInterrupt(False)
# init GPIO2 as outputdev.gpio_Init(gpio2=Dir.OUTPUT)
# generate a square wave signal with GPIO2whileTrue:
dev.gpio_Write(Port.P2, output)
output=notoutputtime.sleep(0.1)Under Linux, the usb device is normally not accessibly by a normal user, therefor
a udev rule is required. Create or extend /etc/udev/rules.d/99-ftdi.rules to
contain the following text:
# FTDI's ft4222 USB-I2C Adapter
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="601c", GROUP="plugdev", MODE="0666"