Features

Devices

  • All FTDI device ports (UART, MPSSE) can be used simultaneously.

    • However, it is not yet possible to use both GPIO and MPSSE modes on the same port at once

  • Several FTDI adapters can be accessed simultaneously from the same Python runtime instance.

Supported features

UART

Serial port, up to 12 Mbps. PyFtdi includes a pyserial emulation layer that offers transparent access to the FTDI serial ports through a pyserial- compliant API. The serialext directory contains a minimal serial terminal demonstrating the use of this extension, and a dispatcher automatically selecting the serial backend (pyserial, PyFtdi), based on the serial port name.

SPI master

Supported devices:

Mode

CPol

CPha

Status

0

0

0

Supported on all MPSSE devices

1

0

1

Supported on -H series (FT232H/FT2232H/FT4232H)

2

1

0

Not supported (FTDI HW limitation)

3

1

1

Supported on -H series (FT232H/FT2232H/FT4232H)

PyFtdi can be used with pyspiflash module that demonstrates how to use the FTDI SPI master with a pure-Python serial flash device driver for several common devices.

Half-duplex (write or read) and full-duplex (synchronous write and read) communication modes are supported.

GPIOs can be used while SPI mode is enabled.

I2C master

Supported devices: FT232H, FT2232H, FT4232H

For now, only 7-bit addresses are supported.

GPIOs cannot be used while I2C mode is enabled (not yet implemented).

The pyftdi/bin/i2cscan.py script helps to discover which I2C devices are connected to the FTDI I2C bus.

Initial clock stretching support has been added and should be considered as experimental.

JTAG

JTAG is under development and is not fully supported yet.

Status

This project is still in beta development stage.

However, PyFtdi is being forked from a closed-source software implementation that has been successfully used for over several years - including serial @ 3Mbps, spi and jtag protocols. PyFtdi is developed as an open-source solution.