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, Cpol.IDLE_LOW, Cpha.CLK_LEADING, 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.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a16ca00027dec92080994031d2a342966e618ea0f4d860c550d6b4b89d534aba |
|
MD5 | 5539bfa28361f70ca645ea98f3172bc6 |
|
BLAKE2b-256 | 4d5852aa58f9997b948e5b144807c1beeb96bbcf417cae0b1594bcea1e5b1458 |
Hashes for ft4222-1.9.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c41137e64fde5f43263d738c113238196ef16a42e2aa7960d1451e4bed3281f9 |
|
MD5 | c89fe988b8d9877d3c6a77fcbdd747d2 |
|
BLAKE2b-256 | 38af6ec8ce90dba2d3bb3b59c226b9956effe345e3e3b16bed4e0c191ebd5237 |
Hashes for ft4222-1.9.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d795f77c2481a6565ca4726038db0abd6503f5db3ef2d0f52da74f7e1a12edd |
|
MD5 | 16ad3c1f8fc2f85a6073faf5ed1f1af1 |
|
BLAKE2b-256 | 8e13e8f9dc0361adf11c4bbd3c234e465d9c90ff9ff09e7c6fa797cab636ea74 |
Hashes for ft4222-1.9.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea756d097863a9afde576ba8a496f702abc1584743c56b17a002d13ac2f0fe99 |
|
MD5 | a7c4d2ee8eafe7d313a38d08b60022d6 |
|
BLAKE2b-256 | 8ffaf0b68cf74d9e380e7f47e112cb6aca111ffe232db1c6a05c32c82a440754 |
Hashes for ft4222-1.9.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d06d3ca1f5208abafaa7106854c12d142bbde6f1ca5212590b8859bf9908301a |
|
MD5 | 2aa89117ee0a911199ef6054e1139341 |
|
BLAKE2b-256 | bc59ee5704cd77117d7adc2faf8ce4aa9c212cdcbb860dbe0a63c4fd3c5ec695 |
Hashes for ft4222-1.9.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80b7a7b2f7937e8442a6d73aa231676bd6b497cd82a1f02b8a5a29dd28deff8b |
|
MD5 | af61face2d6915e8a5c990d452e1ca1e |
|
BLAKE2b-256 | fa0e7a63ffcc87d622f187c86d2ca829e091b4c9ed561a8fb577f4bd2ea51070 |
Hashes for ft4222-1.9.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dbed0608ae6a2cf0f9c9dafc05ca7b657bfdab991472c9b35707762058ad30db |
|
MD5 | 6f32ebe93c079ca8c5dd7aa14c522af1 |
|
BLAKE2b-256 | 85ac9b38cf65ad4b433d9b5698e100854bdc904144db6d5787f6618c03112a38 |
Hashes for ft4222-1.9.0-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ff367ff0c769f05113a89c35df14461663f40ad6a58b5290a2fddac38d0b2af |
|
MD5 | a116c9141cbffdd2daf046fe4abc9d6f |
|
BLAKE2b-256 | 361c75360917a397946ea696ab62471b1bace04dd5342e43a920eca7cd7bfb35 |
Hashes for ft4222-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e49945cde97ea5f0b4084c5a5564c5774c3c1ed3e6c31b5324740c21237494d |
|
MD5 | ab66976cd772b786eecee97000db9a1c |
|
BLAKE2b-256 | d4ab162017aa38b48b3cd7ace3a11fffd1ea769546811d970131c43da916c1e0 |
Hashes for ft4222-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 385b39d7b1727800161e86340067d31b58fbe3252e68c0f2aa707d85d2da1d70 |
|
MD5 | a80ea83d6a6a40ac77130d70244ce16a |
|
BLAKE2b-256 | 9fe0fe746d6c0e931c6cc17cfae1e3c9cf4cf9c0e7a58a12aa111861fb283886 |
Hashes for ft4222-1.9.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b23c825b1ec494c79d5276c6a34dc978695dcdd0c198dfa6b763f40d9c87a00a |
|
MD5 | dba63cfc329236d7de7cf6f233e8ad2e |
|
BLAKE2b-256 | 0f98562e4886af61cf79f6d037cdc13c14d4ec951a9c0b17acd7be48e5c3c3a6 |
Hashes for ft4222-1.9.0-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed7fcc12957bc6041e6064b3cf782181703a8ded5335f85f3392d2a9cd47abaa |
|
MD5 | 0434890070c93a2ebb1fe00277fe7a71 |
|
BLAKE2b-256 | a8f830432e957d4b814927ebc9fa1daa2398ab671823ca0994a135eff443c654 |
Hashes for ft4222-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d019dd0c170de8772bf444a0a06468a5401411aac303400949612a6636cd9533 |
|
MD5 | 5d3c0e5b5a4a85afaef2c5a17ee3a601 |
|
BLAKE2b-256 | aea7c503f40b84d3f51c142cf1b3939ff006650946a664ee0753e6d0e5c26122 |
Hashes for ft4222-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f07513c6d0f1f55c198051c8a9f5a58585bfe57d5ea5f9470d9ac149d981e2b4 |
|
MD5 | 107ec3f4325761556e4561622e2dc42a |
|
BLAKE2b-256 | 88d034bf3d5f6578627ee482ea5e893ceaa50152b7f81a187156dfec311d5c66 |
Hashes for ft4222-1.9.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd291d6542a2bcb29ab35eba67291680a666ee88ece66d38ab5922dea7f41259 |
|
MD5 | 0b76f02253e8e308a6ff20616240b9a9 |
|
BLAKE2b-256 | e08f8c157df1979253f83b1ec3fade017ed963736d6eb400a4fdaa2a7d044cdc |
Hashes for ft4222-1.9.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77fe7d5eb9b53f1d05b9a0d6f6ea1b62a55b95330b48aa24c9f6c8157220fc2f |
|
MD5 | e469e02a097ee21bf81c6eddfc882556 |
|
BLAKE2b-256 | be3c6fd5caaefc194fd5db5cd2d402e4f0aa47027a4f61ca24144c04cf99fa89 |
Hashes for ft4222-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b25b30f6b81afab04b763a93b604593d6f1e97b7737c40d41949fa8e61ffda17 |
|
MD5 | df17dd0c30bc9bcf956b829bbb0ba94e |
|
BLAKE2b-256 | a564e41ea2a6880a9455764bc692bcc73335edb3e428fcd3dc92e5303999155b |
Hashes for ft4222-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2381aab272200046ee61ec97d2a657d3f03eed2e8270141d5c5617c9ad7cb659 |
|
MD5 | 639457d418d34cfad92a5ac3d276c23f |
|
BLAKE2b-256 | fc475c7a9e110b4683e7b889c2a65afc8cd86682e58a7808e709aa69cee89245 |
Hashes for ft4222-1.9.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5375836b967b905146238b2e067936a017a5ec51a8932d950476c1c06b9da87b |
|
MD5 | 72d5fe7def9b3480d1c594a520e24e4a |
|
BLAKE2b-256 | 7f9fd6f6151cd224ee75d41bad3a7f0ef490c3f35d5be2bc67d765365e1f3977 |
Hashes for ft4222-1.9.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0858024c615c495a015fddb81df449f3f7763a6defb44e426afb23ae80faf4d1 |
|
MD5 | 2808178f9583e350f91c8268cefce032 |
|
BLAKE2b-256 | b4f6e710b9a2f10a04d833e2d192283b716bc48e3c46ca729b63ba7ee46e41b2 |
Hashes for ft4222-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c2b0c4ba7c621d7a65708fbfa981f7ed34c966e089e7965d6040f318a43221d |
|
MD5 | a9d8c210de4ce2e1809830e3d6c64724 |
|
BLAKE2b-256 | a7018e126939b9b9c5809d88efa69dbdafe849aa7bda00266594cd69ae8b17f3 |
Hashes for ft4222-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bb3be2ac0d21e7063aad1c10615bc29369132bb9d5f800fc385ea805ef16583 |
|
MD5 | c06136b5162fb20ba79cec97557aeccd |
|
BLAKE2b-256 | 4c002be946c4564b82f9589f2411305f255275eea087200802884ca419ee727b |
Hashes for ft4222-1.9.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7da01c5e872fd8b82cbb159697b83f31ae5b2516f90615fc3a66026dd3aed5c0 |
|
MD5 | c46534010cf728eaffde7407181153e9 |
|
BLAKE2b-256 | dba9e4561124a9ba9dae9168d7b122611506e61f1c27feb7016dce125117b639 |
Hashes for ft4222-1.9.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0bfabe4e46aaa2e5aa88ef77bb75b755ca2f3633eb9cd34654a8a6b30a151559 |
|
MD5 | af8dbbf7301654208c419493c5800f19 |
|
BLAKE2b-256 | e877bab6f8a3ffef5eaad7b79021d893d1e39c7196c4a146313f595c8f370ae0 |
Hashes for ft4222-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34d9eca521648135c48058b0c6bfd3de34a0dd05783f387da79201117d8a26f8 |
|
MD5 | 35788d7c8170d46161cc3bbcfeb6c7b1 |
|
BLAKE2b-256 | f6fbf417a85eb984ff35ecb6ce20b6466acafba75d1dafe8b68d9f087666e385 |
Hashes for ft4222-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d47d1a06899cc5832e509246816c3b20eba549e3d02789e138dd51f7e1a28060 |
|
MD5 | 3e4c244934eb37f73126ccbdd55562e0 |
|
BLAKE2b-256 | 286764ae8002d640ed90e849e1f8e6006f22de20dbd0101de4391419d810fe9b |
Hashes for ft4222-1.9.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ec049a5ce706438edfadb03e21f4892464a9ec47269b62eabbfc782c0923884 |
|
MD5 | 0b672648c9b6c10fcd008a9ced918fc6 |
|
BLAKE2b-256 | 78f815d844707dbb4ff5928d7331dd9b1ac825855605d9f786c254d9972783f0 |
Hashes for ft4222-1.9.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06222c41efa7a3ebe615ee2fece4a8a8e363335ac1f0afa5d318084d223dda7c |
|
MD5 | 7b9d8bfa65b44d8b03ebb1eacd2b2cd2 |
|
BLAKE2b-256 | bb268e4f8da9bb194e6d9c7b1ab5b2eb7c4b10ae6e2215ad83820a64bfe90a17 |