73 #include <msp430x54x.h>
80 #define SPYBIWIREJTAG_IF 1
81 #define SPYBIWIRE_IF 2
84 #if( INTERFACE == SPYBIWIRE_IF )
85 #define SPYBIWIRE_MODE
93 #define RSTHIGH_JTAG 3
95 #ifndef __DATAFORMATS__
96 #define __DATAFORMATS__
105 #define STATUS_ERROR 0 // false
106 #define STATUS_OK 1 // true
108 #define STATUS_FUSEBLOWN 2
112 #define STATUS_ACTIVE 2
113 #define STATUS_IDLE 3
122 #define TRSLDIR P2OUT
124 #define TRSL_CDIR P2DIR
132 #define TEST_DIR 0x04
140 #define TDOI_DIR 0x40
148 #define SW_PULLUP P1REN
149 #define LED_OUT P1OUT
151 #define LED_DIR P1DIR
155 #define SW_MODE0 0x01
156 #define SW_MODE1 0x02
158 #define SW_VPPEN 0x04
160 #define LED_YELLOW 0x08
162 #define LED_GREEN 0x10
172 #define TVCC_OUT P6OUT
173 #define TVCC_DIR P6DIR
175 #define TVCC_MASK 0xF0
180 #define TVCC_EN_DIR P5DIR
181 #define TVCC_EN_OUT P5OUT
182 #define TVCC_DIS_BIT 1
185 #define LED_yellow_on() ( LED_OUT |= LED_YELLOW )
186 #define LED_yellow_off() ( LED_OUT &= ~LED_YELLOW )
188 #define LED_red_on() ( LED_OUT |= LED_RED )
190 #define LED_red_off() ( LED_OUT &= ~LED_RED )
192 #define LED_green_on() ( LED_OUT |= LED_GREEN )
194 #define LED_green_off() ( LED_OUT &= ~LED_GREEN )
196 #define All_LEDs_off() ( LED_OUT &= ~(LED_GREEN | LED_RED | LED_YELLOW ))
201 #define JTAGOUT P5OUT
204 #define JTAGDIR P5DIR
206 #define JTAGSEL P5SEL
251 #define VPPONTEST 0x04
252 #define VPPONTDI 0x02
264 #define ClrTMS() ((JTAGOUT) &= (~TMS))
265 #define SetTMS() ((JTAGOUT) |= (TMS))
267 #define ClrTDI() ((JTAGOUT) &= (~TDI))
269 #define SetTDI() ((JTAGOUT) |= (TDI))
271 #define ClrTCK() ((JTAGOUT) &= (~TCK))
273 #define SetTCK() ((JTAGOUT) |= (TCK))
275 #define StoreTCLK() ((JTAGOUT & TCLK))
277 #define RestoreTCLK(x) (x == 0 ? (JTAGOUT &= ~TCLK) : (JTAGOUT |= TCLK))
279 #define ScanTDO() ((JTAGIN & TDO))
281 #define VPPon(x) (x == VPP_ON_TEST ? (SetVpp(VPPONTEST)) : (SetVpp(VPPONTDI)))
283 #define VPPoff() (SetVpp(0))
292 #define nNOPS { _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); }
300 #define TMSH JTAGOUT |= SBWDATO; usDelay(400); JTAGOUT &= ~SBWCLK; usDelay(1); JTAGOUT |= SBWCLK; usDelay(1);
301 #define TMSL JTAGOUT &= ~SBWDATO; usDelay(400); JTAGOUT &= ~SBWCLK; usDelay(1); JTAGOUT |= SBWCLK; usDelay(1);
303 #define TDIH JTAGOUT |= SBWDATO; usDelay(400); JTAGOUT &= ~SBWCLK; usDelay(1); JTAGOUT |= SBWCLK; usDelay(1);
305 #define TDIL JTAGOUT &= ~SBWDATO; usDelay(400); JTAGOUT &= ~SBWCLK; usDelay(1); JTAGOUT |= SBWCLK; usDelay(1);
307 #define TDOsbw TRSLDIR |= TDOI_DIR; nNOPS JTAGOUT &= ~SBWCLK; usDelay(1); JTAGOUT |= SBWCLK; usDelay(1); TRSLDIR &= ~TDOI_DIR;
309 #define TDO_RD TRSLDIR |= TDOI_DIR; nNOPS JTAGOUT &= ~SBWCLK; usDelay(1); tdo_bit = JTAGIN; usDelay(1); JTAGOUT |= SBWCLK; TRSLDIR &= ~TDOI_DIR;
325 #define nNOPS { _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); }
328 #define TMSH {JTAGOUT |= SBWDATO; nNOPS ;JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWCLK; }
329 #define TMSL {JTAGOUT &= ~SBWDATO; nNOPS JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWCLK;}
331 #define TMSLDH {JTAGOUT &= ~SBWDATO; nNOPS JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWDATO; JTAGOUT |= SBWCLK;}
336 #define TDIH {JTAGOUT |= SBWDATO; nNOPS JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWCLK;}
338 #define TDIL {JTAGOUT &= ~SBWDATO; nNOPS JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWCLK;}
340 #define TDOsbw {TRSLDIR |= TDOI_DIR; nNOPS JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWCLK; TRSLDIR &= ~TDOI_DIR;}
342 #define TDO_RD {TRSLDIR |= TDOI_DIR; nNOPS JTAGOUT &= ~SBWCLK; nNOPS tdo_bit = JTAGIN; JTAGOUT |= SBWCLK; TRSLDIR &= ~TDOI_DIR;}
346 #define SetSBWTCK() (JTAGOUT |= SBWCLK)
347 #define ClrSBWTCK() (JTAGOUT &= ~SBWCLK)
349 #define SetSBWTDIO() (JTAGOUT |= SBWDATO)
351 #define ClrSBWTDIO() (JTAGOUT &= ~SBWDATO)
356 #if ( INTERFACE == SPYBIWIRE_IF )
361 #define ClrTCLK() ClrTCLK_sbw()
362 #define SetTCLK() SetTCLK_sbw()
366 #define SetRST() (JTAGOUT |= SBWDATO)
367 #define ClrRST() (JTAGOUT &= ~SBWDATO)
369 #define ReleaseRST() ()
371 #define SetTST() (JTAGOUT |= SBWCLK)
373 #define ClrTST() (JTAGOUT &= ~SBWCLK)
379 #define ClrTCLK() ((JTAGOUT) &= ~(TCLK))
380 #define SetTCLK() ((JTAGOUT) |= (TCLK))
384 #define SetRST() ((JTAGOUT) |= (RST))
385 #define ClrRST() ((JTAGOUT) &= (~RST))
387 #define ReleaseRST() ( RST_dir( 0 ))
389 #define SetTST() ((JTAGOUT) |= (TEST))
391 #define ClrTST() ((JTAGOUT) &= (~TEST))
402 typedef unsigned short word;
403 typedef unsigned char byte;
410 void TMSL_TDIL(
void);
411 void TMSH_TDIL(
void);
412 void TMSL_TDIH(
void);
413 void TMSH_TDIH(
void);
414 void TMSL_TDIH_TDOrd(
void);
415 void TMSL_TDIL_TDOrd(
void);
416 void TMSH_TDIH_TDOrd(
void);
417 void TMSH_TDIL_TDOrd(
void);
418 void MsDelay(word milliseconds);
419 void usDelay(word microeconds);
423 unsigned long AllShifts(word Format,
unsigned long Data);
427 void TriggerPulse(word Mode);
433 void SetVpp( word source );
437 word
Get_Vx( word index );
word Get_Vx(word index)
Measure different voltages via ADC12.
void ShowStatus(word Status, word Index)
This function controls the status LEDs depending on the status argument. It stops program in error ca...
void TCK_dir(word dir)
Set the direction for the TCK pin.
void MsDelay(word milliseconds)
Delay function (resolution is 1 ms)
void DrvSignals(void)
Set up I/O pins for JTAG communication.
void TEST_dir(word dir)
Set the direction for the TEST pin.
void usDelay(word microeconds)
Delay function (resolution is ~1 us)
void ClrTCLK_sbw(void)
Clear TCLK in Spy-Bi-Wire mode.
Configurations for the MSP430 FRAM Replicator.
void configure_IO_JTAG(void)
Set JTAG pins to output direction - from REP430F to target.
void IO_3state(void)
Set all JTAG pins to input direction - from target to REP430F.
void Disable_Vpp(void)
Disable fuse blow voltage Vpp.
void InitController(void)
Initialization of the Controller Board.
void TDOI_dir(word dir)
Set the direction for the TDO pin.
void InitTarget(void)
Initialization of the Target Board (switch voltages on, preset JTAG pins)
void TMS_dir(word dir)
Set the direction for the TMS pin.
void TDOisInput(void)
This function switches TDO to Input (used for fuse blowing)
void TCLKstrobes(word Amount)
This function generates Amount strobes with the Flash Timing Generator.
void SetVCoreUp(word level)
Function to set a specific voltage level via the PMM.
void RST_dir(word dir)
Set the direction for the RST pin.
unsigned long AllShifts(word Format, unsigned long Data)
Shift a value into TDI (MSB first) and simultaneously shift out a value from TDO (MSB first)...
void SetVpp(word source)
function to set the fuse blow voltage Vpp
word Get_Ext_Vcc(void)
Determine external VCC.
void SetTargetVcc(word level)
Set target Vcc (supplied from REP430F)
void TDI_dir(word dir)
Set the direction for the TDI pin.
word Get_target_Vcc(void)
Determine target VCC.
void configure_IO_SBW(void)
Set SBW pins to output direction - from REP430F to target.
void ReleaseTarget(void)
Release Target Board (switch voltages off, JTAG pins are HI-Z)
void RlsSignals(void)
Release I/O pins.
void SetTCLK_sbw(void)
Set TCLK in Spy-Bi-Wire mode.
void Enable_Vpp(void)
Enable fuse blow voltage Vpp.