--- /dev/null
+#!/usr/bin/env python
+
+import time
+import struct
+
+from myhdl import bin as b
+
+import mpsse
+import usbio
+
+
+
+class AtoiSPI0(mpsse.MPSSE):
+ def __init__(self, freq):
+ super(AtoiSPI0, self).__init__()
+ self.Open(0x0403, 0x6011, mpsse.SPI0, int(freq),
+ interface=mpsse.IFACE_A)
+ self.SetCS('flash')
+
+ def SetCS(self, name):
+ """Setup the chip-select pins for a given 'name'."""
+ if name == 'flash':
+ self.context.pidle = self.context.pstop = 0x08
+ self.context.pstart = 0x00
+ elif name == 'dac':
+ self.context.pidle = self.context.pstop = 0x08
+ self.context.pstart = 0x10
+ elif name == 'adc':
+ self.context.pidle = self.context.pstop = 0x08
+ self.context.pstart = 0x20
+ elif name == 'convst':
+ self.context.pidle = self.context.pstop = 0x08
+ self.context.pstart = 0x30
+ else:
+ raise Exception, 'Unknown CS name: %s' % name
+
+
+class AtoiI2C(mpsse.MPSSE):
+ def __init__(self, freq):
+ super(AtoiI2C, self).__init__()
+ self.Open(0x0403, 0x6011, mpsse.I2C, int(freq),
+ interface=mpsse.IFACE_B)
+
+ def _tostring(self, c):
+ r = c
+ if not isinstance(c, str):
+ if isinstance(c, (tuple, list)):
+ r = r''.join(map(chr, c))
+ else:
+ raise TypeError, 'Cannot convert type %s to raw string.' % type(c)
+ return r
+
+ def write(self, c):
+ outdata = self._tostring(c)
+
+ n = 0
+ i = len(outdata)-1
+ s = []
+ for d in outdata:
+ r = struct.unpack('>B', d)[0]
+ s.append(b(r, 8))
+ n += r << (i*8)
+ i -= 1
+ #print ' '.join(s)
+
+
+ self.Start()
+ self.Write(outdata)
+ self.Stop()
+
+ def read(self, c, n):
+ outdata = self._tostring(c)
+ self.Start()
+ self.Write(outdata)
+ r = self.Read(n)
+ self.Stop()
+ return r
+
+
+spi = AtoiSPI0(1e5)
+spi.SetLoopback(0)
+
+
+i2c = AtoiI2C(10e3)
+
+
+ibias = usbio.AD524x(i2c, 0)
+vatoi = usbio.AD524x(i2c, 2)
+v430 = usbio.AD524x(i2c, 3)
+
+