Skip to content

Instantly share code, notes, and snippets.

@mcbridejc
Created August 25, 2019 05:26
Show Gist options
  • Save mcbridejc/a3067be68b8bb38f2a85eb51574f7954 to your computer and use it in GitHub Desktop.
Save mcbridejc/a3067be68b8bb38f2a85eb51574f7954 to your computer and use it in GitHub Desktop.
Generate a clock from FTDI MPSSE
from pyftdi.ftdi import Ftdi
# Generate a clock output from the D1 pin of an FTDI device that support MPSSE mode (e.g. 232H or 2232H, among others)
# The clock runs continuously, assuming nothing is connected to D4 that will pull it low
# Which device and which port to use for dual port devices (e.g. 2232H)
# See https://eblot.github.io/pyftdi/urlscheme.html
device_url = "ftdi://ftdi:2232h/1"
# Target frequency
# Achievable frequency depends on the particular part number, and available clock div settings
frequency = 10e6
TCK_BIT = 0x01
actual_frequency = f.open_mpsse_from_url(device_url, initial=0xFF, direction=TCK_BIT, frequency=frequency)
f.write_data(array('B', (Ftdi.DISABLE_CLK_3PHASE, Ftdi.DISABLE_CLK_ADAPTIVE)))
f.write_data(array('B', (Ftdi.CLK_WAIT_ON_LOW,)))
print("Achieved frequency is %f" % actual_frequency)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment