-
- def spisetup(self):
- """Moved the FET into the SPI application."""
- self.writecmd(1,0x10,0,self.data); #SPI/SETUP
- #self.readcmd();
- def spitrans8(self,byte):
- """Read and write 8 bits by SPI."""
- self.data=[byte];
- self.writecmd(1,0,1,self.data); #SPI exchange
- #self.readcmd();
-
- if self.app!=1 or self.verb!=0:
- print "Error in SPI transaction; app=%02x, verb=%02x" % (self.app, self.verb);
- return ord(self.data[0]);
- def MSP430setup(self):
- """Move the FET into the MSP430 JTAG application."""
- print "Initializing MSP430.";
- self.writecmd(0x11,0x10,0,self.data);
- def CCsetup(self):
- """Move the FET into the CC2430/CC2530 application."""
- print "Initializing Chipcon.";
- self.writecmd(0x30,0x10,0,self.data);
- def CCrd_config(self):
- """Read the config register of a Chipcon."""
- self.writecmd(0x30,0x82,0,self.data);
- return ord(self.data[0]);
- def CCwr_config(self,config):
- """Write the config register of a Chipcon."""
- self.writecmd(0x30,0x81,1,[config&0xFF]);
-
- CCversions={0x0100:"CC1110",
- 0x8500:"CC2430",
- 0x8900:"CC2431",
- 0x8100:"CC2510",
- 0x9100:"CC2511"};
- def CCidentstr(self):
- ident=self.CCident();
- chip=self.CCversions[ident&0xFF00];
- return "%s/r%02x" % (chip, ident&0xFF);
- def CCident(self):
- """Get a chipcon's ID."""
- self.writecmd(0x30,0x8B,0,None);
- chip=ord(self.data[0]);
- rev=ord(self.data[1]);
- return (chip<<8)+rev;
- def CCgetPC(self):
- """Get a chipcon's PC."""
- self.writecmd(0x30,0x83,0,None);
- hi=ord(self.data[0]);
- lo=ord(self.data[1]);
- return (hi<<8)+lo;
- def MSP430peek(self,adr):
- """Read the contents of memory at an address."""
- self.data=[adr&0xff, (adr&0xff00)>>8];
- self.writecmd(0x11,0x02,2,self.data);
- return ord(self.data[0])+(ord(self.data[1])<<8);
- def MSP430poke(self,adr,val):
- """Read the contents of memory at an address."""
- self.data=[adr&0xff, (adr&0xff00)>>8, val&0xff, (val&0xff00)>>8];
- self.writecmd(0x11,0x03,4,self.data);
- return;# ord(self.data[0])+(ord(self.data[1])<<8);
- def MSP430start(self):
- """Start debugging."""
- self.writecmd(0x11,0x20,0,self.data);
- ident=self.MSP430ident();
- print "Target identifies as %04x." % ident;
-
- def CCstart(self):
- """Start debugging."""
- self.writecmd(0x30,0x20,0,self.data);
- ident=self.CCidentstr();
- print "Target identifies as %s." % ident;
- def CCstop(self):
- """Stop debugging."""
- self.writecmd(0x30,0x21,0,self.data);
- def CCstep_instr(self):
- """Step one instruction."""
- self.writecmd(0x30,0x89,0,self.data);
- def MSP430stop(self):
- """Stop debugging."""
- self.writecmd(0x11,0x21,0,self.data);
- def MSP430haltcpu(self):
- """Halt the CPU."""
- self.writecmd(0x11,0xA0,0,self.data);
- def MSP430releasecpu(self):
- """Resume the CPU."""
- self.writecmd(0x11,0xA1,0,self.data);