Python wrapper around libFT4222.
Project description
python-ft4222
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
Example
I2C Master
import ft4222
import ft4222.I2CMaster
# list devices
nbDev = ft4222.createDeviceInfoList()
for i in range(nbDev):
print(ft4222.getDeviceInfoDetail(i, False))
# open device with default description 'FT4222 A'
dev = ft4222.openByDescription('FT4222 A')
# init i2c master, clock speed 100kHz
dev.i2cMaster_Init(100000)
# do a i2c transfers where full control is required
slave = 1 # address
# read one byte, don't stop
data = dev.i2cMaster_ReadEx(slave, ft4222.I2CMaster.Flag.REPEATED_START, 1)[0]
# read another 5 bytes
data += dev.i2cMaster_ReadEx(slave, ft4222.I2CMaster.Flag.NONE, 5)
# another byte, than stop
data += dev.i2cMaster_ReadEx(slave, ft4222.I2CMaster.Flag.STOP, 1)
GPIO
import time
import ft4222
from ft4222.GPIO import Dir, 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 output
dev.gpio_Init(gpio2 = Dir.OUTPUT)
# generate a square wave signal with GPIO2
while True:
dev.gpio_Write(Port.P2, output)
output = not output
time.sleep(0.1)
SPI Master and GPIO
The gpio used in this example indicate the duration of the whole spi transfer and is not used as chip/slave select.
import ft4222
from ft4222.SPI import Cpha, Cpol
from ft4222.SPIMaster import Mode, Clock, SlaveSelect
from ft4222.GPIO import Port, Dir
from time import sleep
# open 'device' with default description 'FT4222 A'
devA = ft4222.openByDescription('FT4222 A')
# and the second 'device' on the same chip
devB = ft4222.openByDescription('FT4222 B')
# init spi master
devA.spiMaster_Init(Mode.SINGLE, Clock.DIV_8, Cpha.CLK_LEADING, Cpol.IDLE_LOW, SlaveSelect.SS0)
# also use gpio
devB.gpio_Init(gpio0 = Dir.OUTPUT)
# generate data to send
data = bytes([x for x in range(256)]*4)
# set port0 1 (-> note this is *not* the spi chip select, the chip select (SS0) is generated by the spi core)
devB.gpio_Write(Port.P0, 1)
for _ in range(3):
# write data in a single write
devA.spiMaster_SingleWrite(data, True)
# wait a short while
sleep(0.5)
# set port0 0
devB.gpio_Write(Port.P0, 1)
Accessrights
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"
Requirements
Windows
MSVCR100.dll/MSVCP100.dll from Microsoft Visual C++ 2010 Redistributable Package need to be installed. Today, on most systems, these DLLs (or the package) should already be installed.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for ft4222-1.8.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2e9f22bea3683f171fc0da58ccbdd827a430349d8c26113077d4de79a454a87 |
|
MD5 | 9d05104c28668a49a0c6411f96d4cb1f |
|
BLAKE2b-256 | 0b0d021cfc572c91502995ffdf160d2e343250601a0fc52b0618a27b53f4bc32 |
Hashes for ft4222-1.8.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c30500df95075877e8e29a58e0648ceb88571cfb33e244d7a51384e42caccac |
|
MD5 | f0052aa4129e2a21c06c3260e5e67231 |
|
BLAKE2b-256 | cb8dcc1c3467c6f06b6a78387f035bacf820f4da77c23b3f4a59e56e3ad2e7f3 |
Hashes for ft4222-1.8.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4ceba4f7b778169c5b14028aeb1f4720295a9754f89222bd5b9a78e4c064b96 |
|
MD5 | d7e2767f174fdcd308590f13e5bceb06 |
|
BLAKE2b-256 | ad15a05f28a554778ebdc3691998592a06ac233cbe13225b222c0a9db2c5d673 |
Hashes for ft4222-1.8.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 549bbe3a18a21f7585877fd3cbb14c46b45eb61b29c0b5039f1fc8655e7fbeca |
|
MD5 | 092de40469610521576624f66de3e704 |
|
BLAKE2b-256 | 33a54a8dc01ff2f04a96c7e856ed863445cf77b5d825a316ac02e96005c3f13d |
Hashes for ft4222-1.8.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef88304a306f42644a04ca6c1abe4d24b69141659bc59db9f8df6be4b347d149 |
|
MD5 | 7082c85811544a7c203ff58a79621e45 |
|
BLAKE2b-256 | 4387964537aea63064339b602816da14c961cf296821e3dd60bcdd210930979d |
Hashes for ft4222-1.8.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d995115e8a94a092584ac9ec10d415eb6956fe275d1ef5e549e20dc578caf20 |
|
MD5 | 079cb297a30bee2d7b4d19b9e61ee9a6 |
|
BLAKE2b-256 | 30d4eeee0231ce6323afc2d764152e31fad385761cc35e1df6777e3e496b1417 |
Hashes for ft4222-1.8.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d666d5b3435ece3db782970288fd7b52fb53964ad8cf07434d32c368103ae07 |
|
MD5 | 6b99b4437b74383aaf9faf4f0816fa12 |
|
BLAKE2b-256 | d3822e8bad2921aac49bd5110cc89f56c318b9a610761c1a0b9ab527cef623a2 |
Hashes for ft4222-1.8.1-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 387b0b7094094a52f069c00fadd58da2666570dc38c2e8b36cf2b4af56a6ab31 |
|
MD5 | 18854904ad6d17f0e443ad365edfe4b9 |
|
BLAKE2b-256 | 1e5388ceeebc5739bcb13306a7f91e21d36e76ae4765241a1fcb40410eacdf9a |
Hashes for ft4222-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99068ada9b2ed785abb15a50ccd78ecc947c0a2b4982e6356c6e910ee2ad9958 |
|
MD5 | 6d2b7a9126b7c330739632d7bfef297b |
|
BLAKE2b-256 | c73a0afada9f084d58029b29bb68c522c39447f7b957d049242b7b0baffb1e40 |
Hashes for ft4222-1.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4cfe1c110e4546384dd9be635c010fa1c6a7f97d2f80b43c7cbda59fcad832cc |
|
MD5 | e205596f663195d71d974512b0ca21ca |
|
BLAKE2b-256 | 9957cfcd272ac0d7a53be01d3ed4095925a375019dde2a48f11b20a202e1de4c |
Hashes for ft4222-1.8.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e88011aa19afefeb5136bdb5af745a74d2a85981b927ee07b7925187d90e9aa2 |
|
MD5 | f9c9e262fa8ccea1d2ed2ef97b60baa5 |
|
BLAKE2b-256 | f8811079df283f689a6b5c03361bb8420c185c7c08b40b522bb4c48f733c34dc |
Hashes for ft4222-1.8.1-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 386b2c98cc95a889809fb509cf0144fd67889ad61d668f55d240300a1e52a9d0 |
|
MD5 | b5d8de002348b763815d9de9d06fdb25 |
|
BLAKE2b-256 | 5a3d131ea00eef4c11505af1bfcfee2d6a2313b47a70557fe9b88280fe49a7b3 |
Hashes for ft4222-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 791cfca70aaf2570892a637d0389fddd88f28d1474cdae810778be45024ea10a |
|
MD5 | d82c72ae2c873c46b22850d0a680c44a |
|
BLAKE2b-256 | e1eadf6ae005c7e150dbc67f1eee6a8312b5831c60b774e3a784c1709ffb39c7 |
Hashes for ft4222-1.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32125b9462945db7b8881bba32e73d7202998572b2a8c27d738163ca4a1e5c2a |
|
MD5 | 383b535aa2c13b226dc9a4075a7f8c23 |
|
BLAKE2b-256 | bf1ae8d4a0c9c6a5e52c9a0fe50355c2bb426cc521d179518ec7e3ed09d6c87e |
Hashes for ft4222-1.8.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | db17d21d0d46e550bf65f50d952a20bf75e6d153de192d4027a70eb347f07026 |
|
MD5 | 0dc2e3ddd5069f52f973041e0b0f5514 |
|
BLAKE2b-256 | 25e1497017a922f5c57038e16ffeafdcc378662934c83d5ce18b8ca03cc7f9a6 |
Hashes for ft4222-1.8.1-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f3c9ea9cc6dded3e8d10de33170236fa32ccf826afc283116eff47565ffe86d |
|
MD5 | d461cd162d34fa25c36d2c2e48af45ee |
|
BLAKE2b-256 | a9bc585d690baed6f2005a181d692963678f73109543c0133cb5a40092097509 |
Hashes for ft4222-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 653f3adc6938f0bca26363c513a80c4188c1811cac8e85e94b4b7c87f3801cd6 |
|
MD5 | b6bdd0aa438ec5408851646c7cd56457 |
|
BLAKE2b-256 | 32a531de634d8a5d5e3cc0f308f3f41a99362be910e03d9e991ea40e76207c95 |
Hashes for ft4222-1.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a604b1a79dc203f8d619153255d154da425f811f64a1c322a173f1d3fbde924 |
|
MD5 | d2a4ebd46e1092f4f5f3c40e688b3f7f |
|
BLAKE2b-256 | ef604f463d4f18610349a5f46233b5b01edc8be47e115a05541881c413e30f5d |
Hashes for ft4222-1.8.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7049d5726b0ff02425d7e4e88ebe77ea143cb3d249bbb6c8ff5110f0abb4d533 |
|
MD5 | a77bb4c5ce6f1de303b40f3c5e104e64 |
|
BLAKE2b-256 | 22b4dccb95e65a43d75200dbbbc669930f23fff8bd7badf1204a9004930fb572 |
Hashes for ft4222-1.8.1-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6b78f6e6a6d16769d080373f6ec22cdceb411f23bf4dec366cc809d813e1d8c |
|
MD5 | 5fd948bf6d3b2acf6eb81ac27f911399 |
|
BLAKE2b-256 | 80d8676f907f06a704a7e371f4b34a2f8ef4b22e2a0551e767bb41e476d6713c |
Hashes for ft4222-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 574bce65a12dc562582c6bd221e4779f9f0ac438bc37e81201e1390022bc4435 |
|
MD5 | 828a10d488339d962c9b8a5411f3581b |
|
BLAKE2b-256 | e8d7240a7c5ad581b18532200eab0edd5c7b0d80d8fc0efcc5b78d08dc71a66b |
Hashes for ft4222-1.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe076965d9ac110ceccfb4bad4ec73187402f5131e3f8444684755503f90db08 |
|
MD5 | f5426b38459257795b5638c0d48ac891 |
|
BLAKE2b-256 | ae4c3d0cc6a1b542935c04fc0f2e3f9acf0a03712ff99899c7d5980f23eb932f |
Hashes for ft4222-1.8.1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04e7c7d0dc0d555598cc1e608fe1cc60945406e511a7ffe4a8e7059b33a6a683 |
|
MD5 | e9e369fae854008261bc014cf22e3396 |
|
BLAKE2b-256 | 23d2619e451d059981d795328db8d47a64ea123808430462bbdd80fae859dd7b |
Hashes for ft4222-1.8.1-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c3e3aeb02376dae37d22b5a8a2453b94ee656bca0667a62086de62395c2f1af |
|
MD5 | ab2eaacd55757c1d0130bddc5f080d15 |
|
BLAKE2b-256 | 1790fbeaad84f4ebaf18c2adba829d8654b7694d2b1b9f8895b7b6681b55a6af |
Hashes for ft4222-1.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 488212b83f5eb067b93fa1cefea5d707631ed6d09396af0074e6564733972c7e |
|
MD5 | 35ad2a490bb287bb65ebb99e33e3e91e |
|
BLAKE2b-256 | 8fcc57cce0f0cf732d0d46213ed54cc94a18e8be29cd428d01c5baecff64eeb7 |
Hashes for ft4222-1.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87c080dc966ad666b0eb03fb06f2e0efd7abd67b1be37ce5424cd34881905aee |
|
MD5 | 2a1b9b23618a52cfa28eb9cb3c33c202 |
|
BLAKE2b-256 | 59c60bc27a9d23a2b38a616b0f088821d7d02d2b69b5b0792cedb4ddbf178eca |
Hashes for ft4222-1.8.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4faf61ef28d7dc48ada862da079ec15470366ece48a1b79b451bb34a4385da9 |
|
MD5 | c3ae3ccc9a4730eaf670860a457fb253 |
|
BLAKE2b-256 | e32eef906f2dafcb5f5f7f5cf380e633f938582b83b83a4ca08555fcaeed90cb |
Hashes for ft4222-1.8.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a21ef854ada66fbfba587f99c9db601f2643d5647bf7f4539928287cf2c566c |
|
MD5 | eef966582cd7aab1ee73a9a17d418632 |
|
BLAKE2b-256 | 66f99f8ee643d60affae143bca268a39711d21478434248342d187df7ecc7338 |