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.SPIMaster import Mode, Clock, Cpha, Cpol, 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.5.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d135246fa9ae2d60f8aefaef13ff75b386401272c01f663faba2c9e92cb6eef0 |
|
MD5 | 49130a9cb9178c12340c67923c9bbc61 |
|
BLAKE2b-256 | 400f7fdf95e9dd21e40036eecadaea5e00fb048938cad10e028fa8867c05f437 |
Hashes for ft4222-1.5.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6418285eac5dc00f72264ea84ca8943d30d754a1a3612dd449fb52724c09593a |
|
MD5 | d46ba0c746b476597766cdc41a139777 |
|
BLAKE2b-256 | 31cb64fe0f95d2d20196bbd934d4f33abd09d911c93cb2f971685c5867115a48 |
Hashes for ft4222-1.5.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed72646ad47e4a3a3e71b468b4b7be636355662cdfef715c877d8ebba2c03ede |
|
MD5 | 4585a802cf9fb8cd5aab63cbcad444a0 |
|
BLAKE2b-256 | 9a422045bd0dec858cf6372f77534e44966c1528feeb534b324e435e93455f64 |
Hashes for ft4222-1.5.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd27f3581b77511a25184c38abad2673cd96bc0247d572aedd28f96e7f9af946 |
|
MD5 | a6dabe0a708242e3d7d9f22b49782c2c |
|
BLAKE2b-256 | 405fbb7df37bca57cf19797e75872340d379fe9c376fd6af2c0793fa88a78b5e |
Hashes for ft4222-1.5.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fc58234fc378cc014c396646032ac710b2d76c50d33d7136e72ee023f3c25e4 |
|
MD5 | e06a113e24ed20227a309de793463a86 |
|
BLAKE2b-256 | c4fe506d98f650543837c09844ed21398af20e9a941511bbf25b8c02cbdf5029 |
Hashes for ft4222-1.5.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a35ca0476b4d4169578cbaa077342a674f9f53a68dcba73dbf5aed4131d1a309 |
|
MD5 | 6f4147bf5f287a3eb98b003dc990ae0e |
|
BLAKE2b-256 | 691cb0154b73eb6f3b99c1c18397f35b49074e923175b830de59d1d4f3bc7e1a |
Hashes for ft4222-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99c8e85c777664c0d595e7f0d4c7f64b284d94cf2e47194d0fb8c50e39771fd4 |
|
MD5 | c1d164743cac4a401118502458cbdb95 |
|
BLAKE2b-256 | 162f551077209215dca10928320192d1aa2de92a7e1e1311fd02419799d9108f |
Hashes for ft4222-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70eeeef4bdc83f23917955b0b5fb030a1033d5109ecd8bb81c4645a7c5cf8be4 |
|
MD5 | dccb8cb1d1c7140740977bcb9259b537 |
|
BLAKE2b-256 | 62a0da883e62a29baa004b2594a212df21198f996187e165a0d3aa9c7646fb8a |
Hashes for ft4222-1.5.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aad3bcb8c41bb03ad49d5d2564b67c1c59d804508dc9b9782055a5a48f86df26 |
|
MD5 | 78fb99a46c3b7887c7aca9291909c4ac |
|
BLAKE2b-256 | 36436c11589b2b13beb8d2be53dc485c4a0a40225aa644292a0d7f77570995f6 |
Hashes for ft4222-1.5.1-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9122d402aca5ff857d848b3dc4e0f2bf103fbae92d85ffa174b4870dd3dc458b |
|
MD5 | a90d3c625a55c32a8b183a8a22ba9389 |
|
BLAKE2b-256 | a949e959012c42f21461b3c4e61b9bec1fb9e77b914b52102e857972d90e0330 |
Hashes for ft4222-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 519d02fe1f8aef755449a3e19fefb9504069dadb4924b789063fc9d6df4efc0e |
|
MD5 | 901261e9ffeecbce077e27f44ff67741 |
|
BLAKE2b-256 | 8f8d7b8439b827aeaf5474663a99616e24f1d1263046a93de6951a53e947da2d |
Hashes for ft4222-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d06e43e1262d548acbbfab3823bfcab05e7a8dd1d9418b6afa74ddd1dd4313f |
|
MD5 | 255a9403a95879294747584be641bfbd |
|
BLAKE2b-256 | a702f88cbd1e256cc0e73b9c35f05f5be6a0720aa9d6b900aaf6ea6334f53ab3 |
Hashes for ft4222-1.5.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 770610021975902191c784d0401eea9721dff50b4e0fe5ba42469678018e7223 |
|
MD5 | c7cf5a88ccfd22973fba58f357a7f787 |
|
BLAKE2b-256 | 246bb6107135024ebb41d689884643e1a9ca8520e38be194198a856cf5efc43b |
Hashes for ft4222-1.5.1-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9349bbbe60d6e1b0150c99b7362be7db957a5baa30a825828a3f8bfa116051e2 |
|
MD5 | f300b847020ac6c334c9ffb6faf2dd5c |
|
BLAKE2b-256 | aed8f7d855c47d909e75214e2140817c4ce6b364ae151ac2922d2d963e7a653f |
Hashes for ft4222-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d1d6c14fce2b4e0281a0173c56751c2f3d2503243b3679a4f2615ec5813c9db |
|
MD5 | f2902d292ab6257f5db3ecfb378b0b7d |
|
BLAKE2b-256 | 0ff0f99e882c8fbb94ea99e3694e3e4fcb71af7b54295ea20f1ce2c228cc1c61 |
Hashes for ft4222-1.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a081705431653ed227ce9fdbfc866d5adcd31b3f03cfa5101a8f1aafa2779e3b |
|
MD5 | 38d2a583d4120dd0774b6d217c9a9cba |
|
BLAKE2b-256 | e93bb0171e5a11e53a94064e28a82bc116ef238944b5d930575fd81d6dbbb1bd |
Hashes for ft4222-1.5.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d4d98174d809a3cfd44ad549a80b78f03065002de57109a35bcff0492707b4b |
|
MD5 | e4ef518d49a770fc043765ca1f57e8f2 |
|
BLAKE2b-256 | cc9d889af812015068ca80cec1812f3d2d7dda2f069777292fe6ecc9b84fa32f |
Hashes for ft4222-1.5.1-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d118c8b8ea673294575f10b76bc588c1a03af678aec30d224f698c639ca2cc9c |
|
MD5 | 42b3690238c465e4b7e073d9f50e6b4f |
|
BLAKE2b-256 | 83c340ecf00595565a6e2b889f02805e8e3bd47d5a3e26a5f1e907977cba358b |
Hashes for ft4222-1.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5c8504bf93f63d4f3faa391fffc6c744ea945d5da01a62df6edc36a9aa0bf29 |
|
MD5 | 4d49c91bd95bc15e355e356d307660cc |
|
BLAKE2b-256 | a0053da020371db0bf64952eff3261157e8f4ce5a80f19f92340c004acb16f4a |
Hashes for ft4222-1.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 854f22cd7fe3c4fc79d3406ca8a41632108e0c791ae7982f8dcf9a6ce1db569e |
|
MD5 | d42f91b5bcad68d73e61679386697b5d |
|
BLAKE2b-256 | 10f35b9557c05b3568b3bd90202475c4b6a4b54386a52f7d491d2ddcd3ccad8e |
Hashes for ft4222-1.5.1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5be7a1d396ffd25cfb18109b70edc7ca7cd6fcb35b0e2354a7aa3da133327e6b |
|
MD5 | cd8f48c67abb551bd7ec557fa862c6a4 |
|
BLAKE2b-256 | 5ba77cc0f233d26fcd92757775433361699f1d46e6aabaa922bf9903503d9a37 |
Hashes for ft4222-1.5.1-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d28857e6524f05eb012090a48b3f977ed6879582a7fd3b30673b1d5bfc3f2a63 |
|
MD5 | ee9de3358c57ffb3fd47241d5b96d014 |
|
BLAKE2b-256 | ee6a2e5d238496e1747aa858e839dcb524320338b4c537cacb20f9ba38534ceb |
Hashes for ft4222-1.5.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e63d0d766e3366e38179af84b018c7cc92798307e1eef76c5e2f8d710d3c07bb |
|
MD5 | 415d3a5863ee6be01238bd1914964420 |
|
BLAKE2b-256 | c884271db9666fe76f0c34787051bc1c5c4922328a6c3af3bb8eb5f784e963dc |
Hashes for ft4222-1.5.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44aa804d0560961e3c3bb3dfd06008fc5458a9cbce73f8d0759d21b133d289bb |
|
MD5 | 217b4e8edf35a0269e024247c9eeab97 |
|
BLAKE2b-256 | ec1a44a887bb91747e0be6c83c97eec78a53e8f5c7b59a220d3a864e2d3c76e6 |
Hashes for ft4222-1.5.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10198381bc9565016c204f8456c5957eb3ad64dfe26999b982947367453cecdc |
|
MD5 | d762fd5ac00a15c307d4545fa8487747 |
|
BLAKE2b-256 | 7b68236b9af99cdd781fb0c6f3abf6a8f0eab72665f19721483849f057c68d9c |
Hashes for ft4222-1.5.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa4b719ac3a92aef2520d52669b9eb87c728c39a0b44157e5422d5efa8f66d21 |
|
MD5 | 0c041c0b061d03a81f6fda5184437ce3 |
|
BLAKE2b-256 | be13408bf5f550b0d45c245a30f74518124205f6f16280dd607d4678339ad886 |