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.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e28c40870c23f920720509d009a34e0b6c11d9eaa830cd95d264419bed76038 |
|
MD5 | 1021f9a267a9f309d2542b974396eaef |
|
BLAKE2b-256 | 1d151abe4f5842b320fce988c8ab85aac3eaf886bf27f8072b0f8c69c88780ef |
Hashes for ft4222-1.8.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc9a7106efb857b07c3fc3d31174612f016f4242b7626a29c8ca2dacc93c9289 |
|
MD5 | b30186c4b6fd6bc13bc4f4ec1b5d93f5 |
|
BLAKE2b-256 | dbf37ba76d74ab3a7a13cf01b834e6923b5ca0b104d74ff2e5ea15e6f27f4be9 |
Hashes for ft4222-1.8.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 713d3f605ef36d2e7ef2ffdb6261afbe97d913500e90d9e92adbe4d29607c3e8 |
|
MD5 | 466fd2a79622dec35b09c619ab9a1cc2 |
|
BLAKE2b-256 | 316af4e25d6b3c77d52393ff5895a635a51cb9298f22f533f72730a190d59d61 |
Hashes for ft4222-1.8.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99ac53a58e96cea1711f8c9caeaf64afbac102c3b8eb94a5938ba97863d7b920 |
|
MD5 | e934b53e6a0a6b6288553e48bb484364 |
|
BLAKE2b-256 | b88dbd307b4dca6b093c9dfe4a06e90750a69e55a45f711625a1abca27ba4de8 |
Hashes for ft4222-1.8.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c5738e8c0bea94f409a2902045ecc0fa1c4806c887dc688aa6d02f49514ee59 |
|
MD5 | 39c4e124ac499d9ffb8b979028bb240d |
|
BLAKE2b-256 | a9218ac7db1c0886bcb5575f9583b0c6dbf02fc66fc6edbc209cf8dc2bc608c1 |
Hashes for ft4222-1.8.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 508840d99664952bc4c203e0aa8cf81fa0e8943257e0f9a5711ae155ac65a3f9 |
|
MD5 | 280a38bc43dfde7e14925fd314cac126 |
|
BLAKE2b-256 | ed9b8766566fa64634527882aa4a2dca865393d9eed4441aae08fb8181d55ac0 |
Hashes for ft4222-1.8.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1bea55d5417fe632b3998d7e5d309b6270e1596fc2712c60781de113273ea9dc |
|
MD5 | 385cf846b953592ed75b878b169f358c |
|
BLAKE2b-256 | edd382b3be272ef9e5c1429af080bf847304416eb108c5adc6d5eae7a57d4fb7 |
Hashes for ft4222-1.8.0-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | afbc4e5f9e916d07e8a24bcf5e59b337cfc3aa62639025863a1addd137b0c9c1 |
|
MD5 | db4cef22b269693ffdce0b3bd9005e81 |
|
BLAKE2b-256 | 0130cb35737f31edb431f0a02487e475f6867c400f8cd5d5f1c3493c12731519 |
Hashes for ft4222-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 300330a38d7c50db135c22e450f00479890ff5d31eb9cd13c72a00ca0d09a040 |
|
MD5 | bb964ba88823711e685e61ce293e588e |
|
BLAKE2b-256 | cc308fac205d0b44fa9c78fdec08b262ec4f8e2220f7e0676a72f40275d5df77 |
Hashes for ft4222-1.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc6706aefe6675986499ddb7d9485056d49b99f6b7de72517e5f04b92b0b01b8 |
|
MD5 | 6fd3d30ae31b443ab8b7fd9aa7596173 |
|
BLAKE2b-256 | c31405536a1192a276577b466a92606609313e875aedd6076d7eb11282754b80 |
Hashes for ft4222-1.8.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4844d8c3cac266cafd5f71466ec8ec6c48bdb5695aed20c8584405d936ad9afb |
|
MD5 | 70a331ea26e96d8b705bed4660108e3b |
|
BLAKE2b-256 | 82158c17879b3a5dee9db56940ae8544b1a4d344e5a0ea552de1021ed3cd87bb |
Hashes for ft4222-1.8.0-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e6763518cb85e7343422ed4350633415438b3c425232f32c8d8413c5ad9b7c2 |
|
MD5 | fd218f1319dd7b4d55c05ba3265ef293 |
|
BLAKE2b-256 | 78aecab65def21188d7fae84f08527047921ed23392f6c1d6830bf07c13973ed |
Hashes for ft4222-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2a05efd6630d1d67667debb49963f50ee45d0abbe3108471eeacca1fecf7da9 |
|
MD5 | 6ed4d5763025e611f445926f24d7b8ef |
|
BLAKE2b-256 | 3408d1e2b3cdbe68506305033c507bba1655a54f3bbc6cb485882d9974da2d29 |
Hashes for ft4222-1.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e0aa26c9346b7d46a6f76978b8fc2af5c01db2a4e00a1790cb3953433784417 |
|
MD5 | d8f74e95baa8a3f11fe58762c88404c3 |
|
BLAKE2b-256 | dd53a73eeb5ec7da5a29895e9b88752a8150ff28489c23e4093ecc2a1d402963 |
Hashes for ft4222-1.8.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e2ea1afabea6ad6f5fd4595d4e29909059296ab6938116f5eef013b194994f06 |
|
MD5 | b72ea5a08c9bcb807431ecfe3c02c37b |
|
BLAKE2b-256 | 87594a9bd3c7fb8badd6f325a21da2a1b0205106f19feefcb39c1c8afb7ccde0 |
Hashes for ft4222-1.8.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b8a5e12d43a0171405c49ddb1b0d115f1baeda70c41ea79a873c59e9d0120ba |
|
MD5 | 01a0be8720a87523d35131a7368cf7ab |
|
BLAKE2b-256 | 42f37ed585338a4f03049057f4a5ed8e69662f9d0bafb56fcfa28f9e2f6b59ef |
Hashes for ft4222-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f57ec4d0c59ab65a2b0e53187c4b2a8f2b812e5959b6e7a6275d31a2766a030 |
|
MD5 | a26f25e57fc403719968cd8e96fdd45d |
|
BLAKE2b-256 | 2438515182b15a663bed9c29bdd77d55e5332c84a7223100ea1c1b3f1ea05c0a |
Hashes for ft4222-1.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1221c7a717cf477826f458bb09cd2ab54403fb500ccfa8b073dbcf68f1483843 |
|
MD5 | aca0ab6aac8909ab7ffbb06c32893ad7 |
|
BLAKE2b-256 | 49cf18b871de0ea737a9d7b6d60cf96fe3ee531a37aa8a6fd7b505938236874e |
Hashes for ft4222-1.8.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee570d429d19ff2b6431eb975f1b14db38b1c1eaf142265b4ba32780ba81ee1c |
|
MD5 | d8c50cb422a76704b494d0addec11afc |
|
BLAKE2b-256 | 168ef026e26da1e33b55077c04142a42c5170d3395e654720ed3868f706621f9 |
Hashes for ft4222-1.8.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a388fce90732956a177dd3dac021b167566ddc639eeacb292dbdaa2b7805ec9 |
|
MD5 | 7c8e94e5528fcd5f400242bb1acb8710 |
|
BLAKE2b-256 | 6583be1e1f46cda1070fb62a033ad43a5ca23f8c69480a47d011da0d395bc945 |
Hashes for ft4222-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a7cde39d5079fe7232491f0007ea1e14361a21d862d6ddd2a3d00d6c2eaba1e |
|
MD5 | 195f426af184bc229cd2b14b9216eee5 |
|
BLAKE2b-256 | f786e4ca9df939f684de19e54daa7bdfdb1374333459200b3863a202b8af07cf |
Hashes for ft4222-1.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96fd2f3101b8a6dbe2b5281d23d916f791042f37f78d269b6a52ef080cf6d844 |
|
MD5 | 04988e4a297ac358e143fc50386ac907 |
|
BLAKE2b-256 | 5773e148fe496e63c55224075f2ca5df7966b30d1a5bb5e8b6b53416437bba29 |
Hashes for ft4222-1.8.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f60320a224cdf858bed5d35a0a0d094f1de53c48b176d2df01d0b1e0dcec3a15 |
|
MD5 | 4b13b0223581e89ce482a02d7b60c435 |
|
BLAKE2b-256 | 6987b4b1258f8ff287b4b080a4654bd1a9bd1cdac76fc94a1712c007607737ac |
Hashes for ft4222-1.8.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4d54f15681ad8bf1fa3396df9b4e9053bb0ff8c757a2a0752cf079274400905 |
|
MD5 | 54538b5c212a29664a862ce62c72d841 |
|
BLAKE2b-256 | 419db79436e5e0fe66e09b92b9c9a7a6ef9a7c7952bd388c5008537b4703d3b4 |
Hashes for ft4222-1.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 584de10bbc2116a861260fb0d538fd69bbd3e1dfcb6d837976668df255bde91b |
|
MD5 | bdfce142432e995d7daa82c93065825f |
|
BLAKE2b-256 | 148eb5f75babf11f2cd56606248649380adc932481ec5989aa5f6d1563c9821a |
Hashes for ft4222-1.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7ff209abe616d926beb9173a380e403ed0b1a429e84b5caf9e8dbb6b067176b |
|
MD5 | 045d8c65451fed8dec06c225f8499379 |
|
BLAKE2b-256 | 40e8c4c48dc0eef7dd9d395c9f5685c748560a438fea749988da200ef8918601 |
Hashes for ft4222-1.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23a55e581fe9c7bc345d03c5f1d79ffb4b44010c13d69da9b3850714fadd71ec |
|
MD5 | 5dcb85a7b4e626ce215c0751cd2286fd |
|
BLAKE2b-256 | a045479ba11906889f378304c8524228af4fb908fb0a55aa47ad571530f84bbb |
Hashes for ft4222-1.8.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a95c9f0ddb71aab1f5af047c44407a42787cb031fc99d2fd2dfb90f8c01755e9 |
|
MD5 | 7b2ed025c808a1a5c5a3f858ca8a2bdd |
|
BLAKE2b-256 | 6bcd2d50457ddb0b25f2aa437b94bb77eccf0024d3d0c6eb71983e324e0a4a9e |