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
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 Distribution
Hashes for pyftdi_bitbang-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f25f8b8c0105f9e754e25a3781afaab4f59e76b665a15556b9593bb24e6a0044 |
|
MD5 | 31683df5651ae4958ad93c368131e54e |
|
BLAKE2b-256 | 65c22c5958470a13bd45dd502f2c92883494af92882f5cef9a86cedd655046eb |