Skip to main content

Bit-bang protocol support for PyFtdi

Project description

pyftdi-bitbang

Bit-bang protocol support for PyFtdi.

This package adds SPI protocol support for FT232 devices without MPSSE (e.g. FT232RL) by using the bit-bang mode based on asynchronous or synchronous GPIO driver.

Usage

Refer to tests/ for code examples.

The library supports the following baud rates:

  • in async mode: 57600..921600; only standard baud rates can be used (115200, 230400, etc.)
  • in sync mode: 500..2000000; try to stick with "even" rates (aligned to thousands)

SPI

The library provides a subclass of SpiController called BitBangSpiController which can be used as a drop-in replacement. It doesn't support features like CPOL/CPHA but should be enough for most applications.

Creating the object requires a GPIO controller: GpioAsyncController for fully software-driven bit writing, or GpioSyncController to use a (much faster) transaction-based GPIO control.

Example of reading SPI flash ID:

from pyftdi.gpio import GpioSyncController
from pyftdibb.spi import BitBangSpiController

gpio = GpioSyncController()
spi = BitBangSpiController(gpio=gpio)
spi.configure("ftdi:///1", frequency=1_000_000)
port = spi.get_port(cs=0)
# half-duplex mode
flash_id = port.exchange(b"\x9F", readlen=3, duplex=False)
# full-duplex mode (no benefit here, just an example)
flash_id = port.exchange(b"\x9F", readlen=4, duplex=True)
flash_id = flash_id[1:]

Example usage with PySpiFlash:

from pyftdi.gpio import GpioSyncController
from pyftdibb.spi import BitBangSpiController
from spiflash.serialflash import SerialFlashManager

gpio = GpioSyncController()
spi = BitBangSpiController(gpio=gpio)
spi.configure("ftdi:///1", frequency=1_000_000)
flash = SerialFlashManager.get_from_controller(spi)
data = flash.read(0, 0x1000)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyftdi_bitbang-1.0.0.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

pyftdi_bitbang-1.0.0-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file pyftdi_bitbang-1.0.0.tar.gz.

File metadata

  • Download URL: pyftdi_bitbang-1.0.0.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.13 Linux/6.2.0-1016-azure

File hashes

Hashes for pyftdi_bitbang-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4473124d934009160a803636f326615e5b8a6f45ef25d989ccd12db39fd56ab3
MD5 abca19391dcb82ad78a1db2c0b35763f
BLAKE2b-256 871b3716ac9b0c8103cf40034ad9ce0afe98e3eeaf79fdba9a7fe06b9503d166

See more details on using hashes here.

File details

Details for the file pyftdi_bitbang-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pyftdi_bitbang-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.13 Linux/6.2.0-1016-azure

File hashes

Hashes for pyftdi_bitbang-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f25f8b8c0105f9e754e25a3781afaab4f59e76b665a15556b9593bb24e6a0044
MD5 31683df5651ae4958ad93c368131e54e
BLAKE2b-256 65c22c5958470a13bd45dd502f2c92883494af92882f5cef9a86cedd655046eb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page