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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4473124d934009160a803636f326615e5b8a6f45ef25d989ccd12db39fd56ab3 |
|
MD5 | abca19391dcb82ad78a1db2c0b35763f |
|
BLAKE2b-256 | 871b3716ac9b0c8103cf40034ad9ce0afe98e3eeaf79fdba9a7fe06b9503d166 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f25f8b8c0105f9e754e25a3781afaab4f59e76b665a15556b9593bb24e6a0044 |
|
MD5 | 31683df5651ae4958ad93c368131e54e |
|
BLAKE2b-256 | 65c22c5958470a13bd45dd502f2c92883494af92882f5cef9a86cedd655046eb |