def SPI_SRAM_23K256_Init(ftdic): # Write Status byte to disable HOLD function cmd = [ftdi.SET_BITS_LOW, 0x00, 0x0B, 0x34, 0x01, 0x00, 0x01, 0x01, ftdi.SET_BITS_LOW, 0x08, 0x0B] cmdstring = "" cmdstringview = "" for i in range(len(cmd)): cmdstring += chr(cmd[i]) cmdstringview += '0x%02X,' % (cmd[i]) ret = ftdi.write_data( ftdic, cmdstring, len(cmdstring) ) if (DEBUG_LEVEL > 1): print "\nSending:", cmdstringview, "ret=", ret # Read Status bytes cmd = [ftdi.SET_BITS_LOW, 0x00, 0x0B, 0x34, 0x01, 0x00, 0x05, 0xFF, ftdi.SET_BITS_LOW, 0x08, 0x0B] cmdstring = "" cmdstringview = "" for i in range(len(cmd)): cmdstring += chr(cmd[i]) cmdstringview += '0x%02X,' % (cmd[i]) ret = ftdi.write_data( ftdic, cmdstring, len(cmdstring) ) if (DEBUG_LEVEL > 1): print "\nSending:", cmdstringview, "ret=", ret, "\n" ret, data = ftdi.read_data(ftdic, 4) st = "" for i in range(ret): st += '0x%02X,' % ord(data[i]) if (DEBUG_LEVEL > 0): print "Status Byte = 0x%02X" % ord(data[3]), "\n"
def SPI_SRAM_23K256_Init(ftdic): # Write Status byte to disable HOLD function cmd = [ ftdi.SET_BITS_LOW, 0x00, 0x0B, 0x34, 0x01, 0x00, 0x01, 0x01, ftdi.SET_BITS_LOW, 0x08, 0x0B ] cmdstring = "" cmdstringview = "" for i in range(len(cmd)): cmdstring += chr(cmd[i]) cmdstringview += '0x%02X,' % (cmd[i]) ret = ftdi.write_data(ftdic, cmdstring, len(cmdstring)) if (DEBUG_LEVEL > 1): print "\nSending:", cmdstringview, "ret=", ret # Read Status bytes cmd = [ ftdi.SET_BITS_LOW, 0x00, 0x0B, 0x34, 0x01, 0x00, 0x05, 0xFF, ftdi.SET_BITS_LOW, 0x08, 0x0B ] cmdstring = "" cmdstringview = "" for i in range(len(cmd)): cmdstring += chr(cmd[i]) cmdstringview += '0x%02X,' % (cmd[i]) ret = ftdi.write_data(ftdic, cmdstring, len(cmdstring)) if (DEBUG_LEVEL > 1): print "\nSending:", cmdstringview, "ret=", ret, "\n" ret, data = ftdi.read_data(ftdic, 4) st = "" for i in range(ret): st += '0x%02X,' % ord(data[i]) if (DEBUG_LEVEL > 0): print "Status Byte = 0x%02X" % ord(data[3]), "\n"
def SPI_SRAM_23K256_Read_Byte(ftdic, address): cmd = [ ftdi.SET_BITS_LOW, 0x00, 0x0B, 0x34, 0x03, 0x00, 0x03, int(0x00FF & (address >> 8)), int(0x00FF & address), 0xFF, ftdi.SET_BITS_LOW, 0x08, 0x0B ] cmdstring = "" cmdstringview = "" for i in range(len(cmd)): cmdstring += chr(cmd[i]) cmdstringview += '0x%02X,' % (cmd[i]) ret = ftdi.write_data(ftdic, cmdstring, len(cmdstring)) if (DEBUG_LEVEL > 1): print "\nSending:", cmdstringview, "ret=", ret, "\n" ret, data = ftdi.read_data(ftdic, 4) if (DEBUG_LEVEL > 1): st = "" for i in range(ret): st += '0x%02X,' % ord(data[i]) print "Received:", st, "ret=", ret, "\n" if (DEBUG_LEVEL > 0): print "Data at address 0x%04X" % address, "= 0x%02X" % ord( data[3]), "\n" return ord(data[3])
def SPI_SRAM_23K256_Write_Byte(ftdic, address, databyte): cmd = [ftdi.SET_BITS_LOW, 0x00, 0x0B, 0x34, 0x03, 0x00, 0x02, int(0x00FF & (address >> 8)), int(0x00FF & address), int(databyte), ftdi.SET_BITS_LOW, 0x08, 0x0B] cmdstring = "" cmdstringview = "" for i in range(len(cmd)): cmdstring += chr(cmd[i]) cmdstringview += '0x%02X,' % (cmd[i]) ret = ftdi.write_data( ftdic, cmdstring, len(cmdstring) ) if (DEBUG_LEVEL > 1): print "\nSending:", cmdstringview, "ret=", ret, "\n" ret, data = ftdi.read_data(ftdic, 4) if (DEBUG_LEVEL > 1): st = "" for i in range(ret): st += '0x%02X,' % ord(data[i]) print "Received:", st, "ret=", ret, "\n" if (DEBUG_LEVEL > 0): print "Data written to address 0x%04X" % address, "= 0x%02X" % int(databyte), "\n"
ret = ftdi.set_bitmode( ftdic, 0xFF, ftdi.BITMODE_RESET ) if ret < 0: print 'Cannot reset MPSSE' os._exit( 1 ) time.sleep( 0.1 ) ret = ftdi.set_bitmode( ftdic, 0xFF, ftdi.BITMODE_MPSSE ) if ret < 0: print 'Cannot enable MPSSE Mode' os._exit( 1 ) # enable Clock-Divider which will set SK to 6MHz cmd = [ftdi.EN_DIV_5] chrcmd = "" for i in range(len(cmd)): chrcmd += chr(cmd[i]) print "Clock Divisor Disable ret =", ftdi.write_data( ftdic, chrcmd, len(chrcmd) ), "\n" # set clock divisor to 0 so that SK stays at 6MHz cmd = [ftdi.TCK_DIVISOR, 0x00, 0x00] chrcmd = "" for i in range(len(cmd)): chrcmd += chr(cmd[i]) print "Clock Divisor ret =", ftdi.write_data( ftdic, chrcmd, len(chrcmd) ), "\n" # set up IO lines for SPI # Val = 0x08 = 0b00001000 --> 0,0,0,0,CS=1,DI=0,DO=0,SK=0 # Dir = 0x0B = 0b00001011 --> 0,0,0,0,CS=out,DI=in,DO=out,SK=out cmd = [ftdi.SET_BITS_LOW, 0x08, 0x0B] chrcmd = "" for i in range(len(cmd)): chrcmd += chr(cmd[i])
i += 1 # open usb ret = ftdi.usb_open(ftdic, 0x0403, 0x6001) if ret < 0: print 'unable to open ftdi device: %d (%s)' % ( ret, ftdi.get_error_string(ftdic)) os._exit(1) # bitbang ret = ftdi.set_bitmode(ftdic, 0xff, ftdi.BITMODE_BITBANG) if ret < 0: print 'Cannot enable bitbang' os._exit(1) print 'turning everything on' ftdi.write_data(ftdic, chr(0xff), 1) time.sleep(1) print 'turning everything off\n' ftdi.write_data(ftdic, chr(0x00), 1) time.sleep(1) for i in range(8): val = 2**i print 'enabling bit #%d (0x%02x)' % (i, val) ftdi.write_data(ftdic, chr(val), 1) time.sleep(1) ftdi.disable_bitbang(ftdic) print '' # read pins ret, pins = ftdi.read_pins(ftdic) print 'pins:',
ret = ftdi.set_bitmode(ftdic, 0xFF, ftdi.BITMODE_RESET) if ret < 0: print 'Cannot reset MPSSE' os._exit(1) time.sleep(0.1) ret = ftdi.set_bitmode(ftdic, 0xFF, ftdi.BITMODE_MPSSE) if ret < 0: print 'Cannot enable MPSSE Mode' os._exit(1) # enable Clock-Divider which will set SK to 6MHz cmd = [ftdi.EN_DIV_5] chrcmd = "" for i in range(len(cmd)): chrcmd += chr(cmd[i]) print "Clock Divisor Disable ret =", ftdi.write_data( ftdic, chrcmd, len(chrcmd)), "\n" # set clock divisor to 0 so that SK stays at 6MHz cmd = [ftdi.TCK_DIVISOR, 0x00, 0x00] chrcmd = "" for i in range(len(cmd)): chrcmd += chr(cmd[i]) print "Clock Divisor ret =", ftdi.write_data(ftdic, chrcmd, len(chrcmd)), "\n" # set up IO lines for SPI # Val = 0x08 = 0b00001000 --> 0,0,0,0,CS=1,DI=0,DO=0,SK=0 # Dir = 0x0B = 0b00001011 --> 0,0,0,0,CS=out,DI=in,DO=out,SK=out cmd = [ftdi.SET_BITS_LOW, 0x08, 0x0B] chrcmd = "" for i in range(len(cmd)):
i += 1 # open usb ret = ftdi.usb_open( ftdic, 0x0403, 0x6001 ) if ret < 0: print 'unable to open ftdi device: %d (%s)' % ( ret, ftdi.get_error_string( ftdic ) ) os._exit( 1 ) # bitbang ret = ftdi.set_bitmode( ftdic, 0xff, ftdi.BITMODE_BITBANG ) if ret < 0: print 'Cannot enable bitbang' os._exit( 1 ) print 'turning everything on' ftdi.write_data( ftdic, chr(0xff), 1 ) time.sleep( 1 ) print 'turning everything off\n' ftdi.write_data( ftdic, chr(0x00), 1 ) time.sleep( 1 ) for i in range( 8 ): val = 2**i print 'enabling bit #%d (0x%02x)' % (i, val) ftdi.write_data( ftdic, chr(val), 1 ) time.sleep ( 1 ) ftdi.disable_bitbang( ftdic ) print '' # read pins ret, pins = ftdi.read_pins( ftdic )