def __init__(self, serial=None, index=None): self.ftdic = ftdi.ftdi_context() self.ftdi = ftdi self.sensors = dict() self.hw_sw = dict() self.hw_sw["DC"] = nvouten self.hw_sw["SW0"] = sws[0] self.hw_sw["SW1"] = sws[1] self.hw_sw["ALERT"] = alert self.hw_sw["GPIO0"] = gpios[0] self.hw_sw["GPIO1"] = gpios[1] self.hw_sw["GPIO2"] = gpios[2] self.hw_sw["GPIO3"] = gpios[3] self.switches = dict() try: ret = ftdi.ftdi_init(self.ftdic) if ret < 0: raise Exception ret = ftdi.ftdi_usb_open_desc_index(self.ftdic, 0x0403, 0x06010, "PMC-17 v1.0", serial, index if index else 0) if ret < 0: raise Exception("Could not open device", ftdi.ftdi_get_error_string(self.ftdic)) ret = ftdi.ftdi_set_interface(self.ftdic, ftdi.INTERFACE_A) if ret < 0: raise Exception self.hw = i2c_ftdi.i2c_ftdi(self.ftdic, scl, sda_out, sda_in, 400000, initial_output) self.i2c = i2c.i2c(self.hw) except Exception as e: ftdi.ftdi_deinit(self.ftdic) raise
def __init__(self): # open channel A self.ft_ctx = ftdi.ftdi_context() if ftdi.ftdi_init(self.ft_ctx) < 0: raise RuntimeError("ftdi_init failed") ftdi.ftdi_set_interface(self.ft_ctx, ftdi.INTERFACE_A) if ftdi.ftdi_usb_open(self.ft_ctx, 0x0403, 0x6010) != 0: raise RuntimeError(ftdi.ftdi_get_error_string(self.ft_ctx)) try: # open and purge channel B ft_ctx_b = ftdi.ftdi_context() if ftdi.ftdi_init(ft_ctx_b) < 0: raise RuntimeError("ftdi_init failed") ftdi.ftdi_set_interface(ft_ctx_b, ftdi.INTERFACE_B) if ftdi.ftdi_usb_open(ft_ctx_b, 0x0403, 0x6010) != 0: raise RuntimeError(ftdi.ftdi_get_error_string(ft_ctx_b)) # purge buffers if ftdi.ftdi_usb_purge_buffers(ft_ctx_b) != 0: raise RuntimeError(ftdi.ftdi_get_error_string(ft_ctx_b)) # close channel B ftdi.ftdi_usb_close(ft_ctx_b) ftdi.ftdi_deinit(ft_ctx_b) except RuntimeError: self.close() raise # setup FIFO mode try: self.ft_ctx.usb_read_timeout = 5000000 self.ft_ctx.usb_write_timeout = 5000000 ftdi.ftdi_read_data_set_chunksize(self.ft_ctx, self.READ_CHUNKSIZE) ftdi.ftdi_write_data_set_chunksize(self.ft_ctx, self.WRITE_CHUNKSIZE) if ftdi.ftdi_usb_reset(self.ft_ctx) != 0: raise RuntimeError("Reset failed") time.sleep(100e-3) if ftdi.ftdi_set_bitmode(self.ft_ctx, 0, ftdi.BITMODE_SYNCFF) != 0: raise RuntimeError("Setting FIFO mode failed") if ftdi.ftdi_set_latency_timer(self.ft_ctx, 1) != 0: raise RuntimeError("Setting latency failed") except RuntimeError: self.close() raise
def __init__(self): # open channel A self.ft_ctx = ftdi.ftdi_context() if ftdi.ftdi_init(self.ft_ctx) < 0: raise RuntimeError("ftdi_init failed") ftdi.ftdi_set_interface(self.ft_ctx, ftdi.INTERFACE_A) if ftdi.ftdi_usb_open(self.ft_ctx, 0x0403, 0x6010) != 0: raise RuntimeError(ftdi.ftdi_get_error_string(self.ft_ctx)) try: # open and purge channel B ft_ctx_b = ftdi.ftdi_context() if ftdi.ftdi_init(ft_ctx_b) < 0: raise RuntimeError("ftdi_init failed") ftdi.ftdi_set_interface(ft_ctx_b, ftdi.INTERFACE_B) if ftdi.ftdi_usb_open(ft_ctx_b, 0x0403, 0x6010) != 0: raise RuntimeError(ftdi.ftdi_get_error_string(ft_ctx_b)) # purge buffers if ftdi.ftdi_usb_purge_buffers(ft_ctx_b) != 0: raise RuntimeError(ftdi.ftdi_get_error_string(ft_ctx_b)) # close channel B ftdi.ftdi_usb_close(ft_ctx_b) ftdi.ftdi_deinit(ft_ctx_b) except RuntimeError: self.close() raise # setup FIFO mode try: self.ft_ctx.usb_read_timeout = 5000000; self.ft_ctx.usb_write_timeout = 5000000; ftdi.ftdi_read_data_set_chunksize(self.ft_ctx, self.READ_CHUNKSIZE) ftdi.ftdi_write_data_set_chunksize(self.ft_ctx, self.WRITE_CHUNKSIZE) if ftdi.ftdi_usb_reset(self.ft_ctx) != 0: raise RuntimeError("Reset failed") time.sleep(100e-3) if ftdi.ftdi_set_bitmode(self.ft_ctx, 0, ftdi.BITMODE_SYNCFF) != 0: raise RuntimeError("Setting FIFO mode failed") if ftdi.ftdi_set_latency_timer(self.ft_ctx, 1) != 0: raise RuntimeError("Setting latency failed") except RuntimeError: self.close() raise
#!/usr/bin/python import ftdi import time F = ftdi.ftdi_context() ftdi.ftdi_init(F) ftdi.ftdi_usb_open(F, 0x0403, 0x6011) ftdi.ftdi_set_interface(F, ftdi.INTERFACE_B) ftdi.ftdi_set_bitmode(F, 0x08, ftdi.BITMODE_BITBANG) ftdi.ftdi_write_data(F, '\x00', 1) ftdi.ftdi_usb_close(F)
def jtag_lengthen(): ftdi.ftdi_set_interface(F, ftdi.INTERFACE_D) ftdi.ftdi_set_bitmode(F, 0x08, ftdi.BITMODE_BITBANG) ftdi.ftdi_write_data(F, '\x00', 1)
def power_button_assert(): ftdi.ftdi_set_interface(F, ftdi.INTERFACE_D) ftdi.ftdi_set_bitmode(F, 0x40, ftdi.BITMODE_BITBANG) ftdi.ftdi_write_data(F, '\x40', 1) time.sleep(4) ftdi.ftdi_write_data(F, '\x00', 1)
def power_force_off(): ftdi.ftdi_set_interface(F, ftdi.INTERFACE_D) ftdi.ftdi_set_bitmode(F, 0x30, ftdi.BITMODE_BITBANG) ftdi.ftdi_write_data(F, '\x30', 1)
def ppc_halt_off(): ftdi.ftdi_set_interface(F, ftdi.INTERFACE_B) ftdi.ftdi_set_bitmode(F, 0x00, ftdi.BITMODE_BITBANG) ftdi.ftdi_write_data(F, '\x00', 1)