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.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 346da71d22135c948d60a5d10b4adc64aaa39f2cacc0e12831a2d455a0e5a01f |
|
MD5 | 5e4f6c1c6b4d380fbda9ecb6756844d8 |
|
BLAKE2b-256 | f934008452eeaf48594bc46d155fbce5790e0c58f6e6ed0616af7e4e406fcf96 |
Hashes for ft4222-1.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d32fcfde91e3a956e95621383c1f7d75d8adf9c89e95698aa6bbe22759a3a96 |
|
MD5 | c9afc0c32b0f7edf7da2d7c5698612d7 |
|
BLAKE2b-256 | cc139243fee94d6c6fecb7123fd1e6d575dfc4c1f2e636a0ec1aa13ca4738344 |
Hashes for ft4222-1.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1c9bb771a6b8d6eba60523ad7c3d7702eacd46b332a69b474bd732c189b761c |
|
MD5 | 868a645e439e0143d50da989abc38899 |
|
BLAKE2b-256 | 383b569e19bcbe319002a7f0f9ab7fa07973c2791c71f865768b380c0fc19d61 |
Hashes for ft4222-1.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99c6b1727c4b00d4c53a31a502274b8f72856a3cf0b0f58e2d2b38194136bde5 |
|
MD5 | 26a776613cfd06b372cae079859b0b5f |
|
BLAKE2b-256 | 3b5eee1f1dd7a820e32a0da8cecc054eab9f92e4a13729cadf584efe872ca19e |
Hashes for ft4222-1.7.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d469f76371df9ebe698c6eb73b0c937017fff5de766b9776a832fa8675ca69e |
|
MD5 | 062d1cd081cf9ca550874fef7348ba32 |
|
BLAKE2b-256 | a3595acf0a52e4bc66c54cf815fbfc18a7d523f0afa1ab7290e4e89917b47a8a |
Hashes for ft4222-1.7.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2566881f6b541708d85adc9363d83dc9f3fd5b08eaaa89749803767a73b57e3 |
|
MD5 | 6f9808f0c41988d35a911f9a9bf15917 |
|
BLAKE2b-256 | f9edaff91c8fb1ccd759d54787c088ff668f2494469943db1f36e9bafcf2df37 |
Hashes for ft4222-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74f1f6056636d82f4d4c11de9765f9028bfff024c5af21ac6929e78c16b422a3 |
|
MD5 | 34b6ab07a295a8321999bd88d8d4ca83 |
|
BLAKE2b-256 | 34d58e960f48d17a37a14c9b6e7b58ffb9b0e2c70bf83ece7c37967da82d28f9 |
Hashes for ft4222-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ba40ee36e46e47aa52afca4485263c4cdf7d10f0ef2a47c935269a23f945f5f |
|
MD5 | 772ce08da50a97301b8a4594ba35c42d |
|
BLAKE2b-256 | 9ac376be4eb93e02503e010209f63bd2ae6db55cbd9491cc1b21396a634d8cf4 |
Hashes for ft4222-1.7.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf07e68e87915f89da1bd1480fa79d4945d5adeae073fb6c3a7e3edf4e7baf6e |
|
MD5 | 881316da07bc3a11ae29364ff0f624a9 |
|
BLAKE2b-256 | 7f6b0726aa71bfad4ce507ba29b2fe82c6bebcf2047f6c1cd0c5ed86813aa037 |
Hashes for ft4222-1.7.0-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a6b8a7864a549ffdf26d38f4d4aacccbeb34d5e1113a03660f55abdd01cc14c |
|
MD5 | 220db8eeb0f7a7f1d5d1d6d1bf43b934 |
|
BLAKE2b-256 | 7540a1c0d70a37806f1536244c1ffb1c2ec8f0b5dde84e8bf02d896a33253c1f |
Hashes for ft4222-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d0c7269a8aee2636a14abf3e826ff7138cd0a85dc3d81ddc513f68e381b2f89 |
|
MD5 | ac2c877f897396a763b6536a9a38974d |
|
BLAKE2b-256 | 8c8733a32f0b8578988d4b6b2acf1c6e9659e52ab20264e35371f7f13c86e866 |
Hashes for ft4222-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 791535bfcc7ca20f32f23fb307ee6bdee6e0a1dadac29a176a19f4a98c327a15 |
|
MD5 | 3556a3a3626204748b04d9bd0006edf2 |
|
BLAKE2b-256 | ae3224a0cda2bbf6a7d4f76aad0c8bdb575ed5c289a5e00f46e62859c5200b3d |
Hashes for ft4222-1.7.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 087f3a4faa55566202fb40c277d3fa391dd56ce8f724fb21160390ad86d74cbd |
|
MD5 | 8e8ab0ba9e7a8446d66c86d98645763a |
|
BLAKE2b-256 | d04828884f319aeae717becbc698ccac2f93e74f7451e600240f4804f282f16b |
Hashes for ft4222-1.7.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c550cff5495e72183ba84f22d7881cb5a6f0a9f7707e9c9ccaf694c2d0c337f |
|
MD5 | c24e5f1b6fd2ce5edd7399449fa6f60d |
|
BLAKE2b-256 | ea863f4c2b80a5b7d97a63310a47649749e2e8eb46b7435d5f3367ade9abd08d |
Hashes for ft4222-1.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a084ae9f20175131d71869f9deef7d41232ec1944032b611e927e23517478b3a |
|
MD5 | e0fca39598e8e9152fc64bc39af23088 |
|
BLAKE2b-256 | e2789ea87990e59afa446c04dc56b4bd9032e23a92d33b15a2fb017ff87b1a3b |
Hashes for ft4222-1.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa3d6039f0f08835e5c468f3028abc4b94b7eeac074eba62eaebdbca945a46e4 |
|
MD5 | 7bc12b6769ce32e5c82554b511de723c |
|
BLAKE2b-256 | 4b688d1fc4512297dbdf25d4e229e86814cf5a759190d7a303b9cbc49ca7bc7c |
Hashes for ft4222-1.7.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74f9aa7bdda8f5a4ff8c19e99b34bc4287916a0562ea4900b10d2d2cbfdeb410 |
|
MD5 | 67d1c37e559524e091b17f2ca5222808 |
|
BLAKE2b-256 | 5c198a553626d6532709eddf1b8deb57a8ed06ae7a2f4247b999b8ab3e91dd59 |
Hashes for ft4222-1.7.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8cb0f54ce700273414e25f9ed991ae42f80ac91fdb346c49dd9296325ab485a |
|
MD5 | afa4639824466c29eb139cb0e9e0dedf |
|
BLAKE2b-256 | dff26ebeb83f59bdc6bf7fee1f6b095d5e15ef25322fd55fae19e1da6d8750e5 |
Hashes for ft4222-1.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81e85669ee2b811df558aa3801d614dbb6b040d5cf5af5b304211f214cbf79c1 |
|
MD5 | a544a5445cdadad9ee92cb5d172c0baf |
|
BLAKE2b-256 | 8e3e0d7f12ecd123b011c1c935da2b9e317dc4cf29ff291538d6a801f1be5eb9 |
Hashes for ft4222-1.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f5fec77577d32de8731070a54022c02f80e4606bf3e0af4156c646b981b8287 |
|
MD5 | 666dfd67ba625cc3a2a67afb1a93215e |
|
BLAKE2b-256 | 1dcacce0a4e3b188df913614d0a58d50d671729e573e00174b14c5a9c0385f58 |
Hashes for ft4222-1.7.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc838076e3542f6a9886c304a8391f752eac4005854a79e36f1ef4074d2b4b95 |
|
MD5 | 07f9767d3862412b82264b0f30db082f |
|
BLAKE2b-256 | 232cccd4822fa6517077555e1c282382d3425907e7edd85c9ef3946e73af2e12 |
Hashes for ft4222-1.7.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd6655bee405d5688795b85299942429ae8f666922434eb2bc7e23594565d507 |
|
MD5 | 37b189353171aaa029c2a930f37f5c15 |
|
BLAKE2b-256 | a7f7901de6c142ca8786812a1ab2bc3e131faedb54236581829f819e65f84b9c |
Hashes for ft4222-1.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b57820f0fdc8b516d3a92070b961b861ca97cd1db7773732a7c0bc74912de5c5 |
|
MD5 | cf22a69fa28a71e2e07f1e78d93c956b |
|
BLAKE2b-256 | 3c0d08ae43b93a46f22e566bb0e3a7fdba0d00ab3f4e60c01cc65d64413ee275 |
Hashes for ft4222-1.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aec78460c2cd7848d6ce20d8a008bf771c13a16f6c264d6321be03c86c9d213e |
|
MD5 | 26c6cc1b0e21b7f2382f9d95883cb087 |
|
BLAKE2b-256 | f71e8c623854ded0073b12b35f7d8bb6a931171391ec8c47a23c08c4b258437e |
Hashes for ft4222-1.7.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89500d3cec3de1354b573ae6482e8c6752226f5a776e5a3c91541b69d97fe1c3 |
|
MD5 | 03ff11c58d44fde7cff1e86518bcf905 |
|
BLAKE2b-256 | 62230539a7550001f8e8d4d8162839de3204b5ee183837114b28e625995002d3 |
Hashes for ft4222-1.7.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0edbc0fc71b9bda135f03c14dd54d8fa47fe311e794df6fb90c0a2908eef11c |
|
MD5 | 6ba74978ce27d82a3fe05ff939ddfa29 |
|
BLAKE2b-256 | 96511abff87d394df8137b39c336530c50609175910ed6f363a76f498801fe97 |