class GoodFETEM260(GoodFETSPI):
EM260APP=0x01;
+ seq=0;
+ def EM260trans(self,data):
+ """Exchange data by EM260 SPI. (Slightly nonstandard.)"""
+ self.data=data;
+ self.writecmd(0x01,0x82,len(data),data);
+
+ try:
+ reply=ord(self.data[0]);
+ if(reply==0x00):
+ print "Warning: EM260 rebooted.";
+ return self.EM260trans(data);
+ if(reply==0x02):
+ print "Error: Aborted Transaction.";
+ #return self.EM260trans(data);
+ if(reply==0x03):
+ print "Error: Missing Frame Terminator.";
+ #return self.data;
+ except:
+ print "Error in EM260trans.";
+ return self.data;
+
+
def peek8(self,adr):
"""Read a byte from the given address."""
- data=self.SPItrans([0xfe,0x01,0x00,
+ data=self.EM260trans([0xfe,0x01,self.seq,0x00,
0x49,
- 0xA7,0,0,0,0,0,0,0,0]);
- return ord(data[7]);
- def poke8(self,adr, byte):
- """Poke a byte to the given address."""
+ 0xA7]);
+ s="";
+ for foo in data:
+ s=s+"%02x " % ord(foo);
+ print s;
+
+ return ord(data[0]);
def info(self):
"""Read the info bytes."""
- data=self.SPItrans([0x0B,0xA7,
- 0xFF,
- 0xFF,0xFF,0xFF, #00 02 A7
- 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0
- ]);
+ version=self.EM260spiversion();
+ print "Version %2i" % (version &0x7F);
+ def EM260spiversion(self):
+ """Read the SPI version number from EM260."""
+ data=self.EM260trans([0x0A,0xA7]);
+ version=ord(data[0]);
+
+ if version==0x00:
+ return self.EM260spiversion();
+ if version==0x02:
+ return self.EM260spiversion();
+ if not version&0x80:
+ print "Version misread.";
+ return 0;
+ return version;
+
+ def EM260spistatus(self):
+ """Read the info bytes."""
+ data=self.EM260trans([0x0B,0xA7]);
+ s="";
for foo in data:
- print "%02x" % ord(foo);
+ s=s+"%02x " % ord(foo);
+ print s;
+