⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lowlevelfuncsbw.h

📁 msp430的jtag程序下载的源代码
💻 H
字号:
/*==========================================================================*\
|                                                                            |
| LowLevelFunc.h                                                             |
|                                                                            |
| Low Level function prototypes, macros, and pin-to-signal assignments       |
| regarding to user's hardware                                               |
|----------------------------------------------------------------------------|
| Project:              MSP430 Replicator                                    |
| Developed using:      IAR Embedded Workbench 3.40B                         |
|----------------------------------------------------------------------------|
| Author:               STO                                                  |
| Version:              1.5                                                  |
| Initial Version:      04-17-02                                             |
| Last Change:          01-21-05                                             |
|----------------------------------------------------------------------------|
| Version history:                                                           |
| 1.0 04/02 FRGR        Initial version.                                     |
| 1.1 04/02 FRGR        Included SPI mode to speed up shifting function by 2.|
|                       (JTAG control now on Port5)                          |
| 1.2 06/02 ALB2        Formatting changes, added comments. Removed code used|
|                       for debug purposes during development.               |
| 1.3 08/02 ALB2        Initial code release with Lit# SLAA149.              |
| 1.4 09/05 SUN1        Software delays redesigned to use TimerA harware;    |
|                       see MsDelay() routine. Added TA constant.            |
| 1.5 01/05 STO			Adapted for SpyBiWire       						 |
|----------------------------------------------------------------------------|
| Designed 2002 by Texas Instruments Germany                                 |
\*==========================================================================*/

/****************************************************************************/
/* Macros and Pin-to-Signal assignments which have to be programmed         */
/* by the user. This implementation assumes use of an MSP430F149 as the host*/
/* controller and the corresponding hardware given in the application       */
/* report TBD Appendix A.                                                   */
/*                                                                          */
/* The following MSP430 example acts as a hint of how to generally          */
/* implement a micro-controller programmer solution for the MSP430 flash-   */
/* based devices.                                                           */
/****************************************************************************/

#include <msp430x14x.h>
#include "JTAGfuncSBW.h"

#ifndef __BYTEWORD__
#define __BYTEWORD__
typedef unsigned int   word;
typedef unsigned char   byte;
#endif

// Constants for runoff status
#define STATUS_ERROR     0      // false
#define STATUS_OK        1      // true
#define STATUS_FUSEBLOWN 2      // GetDevice returns if the security fuse is blown

#define STATUS_ACTIVE    2
#define STATUS_IDLE      3


/****************************************************************************/
/* Define section for user, related to the controller used (here MSP430F149)*/
/****************************************************************************/

#define FREQUENCY   8000        // CPU frequency in kHz


//----------------------------------------------------------------------------
// Pin-to-Signal Assignments
//----------------------------------------------------------------------------

// Constants for JTAG and supply control port pins:
#define JTAGIN       P5IN   // Control ports are on P5.x
#define JTAGOUT      P5OUT
#define JTAGDIR      P5DIR
#define JTAGSEL      P5SEL
#define TMS          0x01   // P5.0 JTAG TMS input pin
#define TDO          0x04   // P5.2 JTAG TDO output pin
#define TCK          0x08   // P5.3 JTAG TCK input pin
#define TDICTRL2     0x10   // P5.4 switch TDO to TDI
#define TDICTRL1     0x20   // P5.5 connects TDI
#define TEST         0x40   // P5.6 TEST pin (20 & 28-pin devices only)
#define VCCTGT       0x80   // P5.7 Supply voltage of target board


// Constants for Error LED control port:
#define LEDOUT      P1OUT   // LED ports are P1.x
#define LEDDIR      P1DIR
#define LEDSEL      P1SEL
#define LEDRED      0x40    // P1.6 Red LED (ERROR)
#define LEDGREEN    0x80    // P1.7 Green LED (OK)

// Constants for VPP (Fuse blowing voltage) control port:
#define VPPOUT      P3OUT   // VPP ports are P3.x
#define VPPDIR      P3DIR
#define VPPSEL      P3SEL
#define VPPONTEST   0x01    // P3.0 Fuse voltage switched to TEST
#define VPPONTDI    0x02    // P3.1 Fuse voltage switched to TDI

// Constants for Setting up Timer A
#define ONEMS	    0x03E8	// CCR0 delay for 1ms with a 1MHz TA clock

/*----------------------------------------------------------------------------
   Macros for processing the JTAG port and Vpp pins
*/
/*----------------------------------------------------------------------------
   Macros for processing the JTAG port and Vpp pins
*/
#define ScanTDO()        ((JTAGIN   &   TDO))   // assumes TDO to be bit0
#define VPPon(x)         (x == VPP_ON_TEST ? (VPPOUT |= VPPONTEST) : (VPPOUT |= VPPONTDI))
#define VPPoff()         ((VPPOUT)  &= (~(VPPONTDI | VPPONTEST)))

/*----------------------------------------------------------------------------
    Macros to control spy-by-wire-IF
*/
#define    SBWDATO   /*TDI*/ 0x04   // P5.2 JTAG data_out pin in SBW mode
#define    SBWDATI   /*TDO*/ 0x04   // P5.2 JTAG data in pin in SBW mode
#define    SBWCLK    /*TCK*/ 0x08   // P5.3 JTAG clock pin in SBW mode

#define   TMSH    JTAGOUT |= SBWDATO;  JTAGOUT &= ~SBWCLK; JTAGOUT |= SBWCLK; // TMS = 1
#define   TMSL    JTAGOUT &= ~SBWDATO; JTAGOUT &= ~SBWCLK; JTAGOUT |= SBWCLK; // TMS = 0
#define   TMSLDH  JTAGOUT &= ~SBWDATO; JTAGOUT &= ~SBWCLK; JTAGOUT |= SBWDATO; JTAGOUT |= SBWCLK; // TMS = 0, then TCLK(TDI) immediately = 1
#define   TDIH    JTAGOUT |= SBWDATO;  JTAGOUT &= ~SBWCLK; JTAGOUT |= SBWCLK; // TDI = 1
#define   TDIL    JTAGOUT &= ~SBWDATO; JTAGOUT &= ~SBWCLK; JTAGOUT |= SBWCLK; // TDI = 0
#define   TDOsbw  JTAGDIR &= ~SBWDATO; JTAGOUT &= ~SBWCLK; JTAGOUT |= SBWCLK; JTAGDIR |= SBWDATO; // TDO cycle without reading TDO
#define   TDO_RD  JTAGDIR &= ~SBWDATO; JTAGOUT &= ~SBWCLK; _NOP();  tdo_bit = JTAGIN; JTAGOUT |= SBWCLK; JTAGDIR |= SBWDATO; // TDO cycle with TDO read

#define   SetSBWTCK()     (JTAGOUT |=   SBWCLK)
#define   ClrSBWTCK()     (JTAGOUT &=  ~SBWCLK)
#define   SetSBWTDIO()    (JTAGOUT |=   SBWDATO)
#define   ClrSBWTDIO()    (JTAGOUT &=  ~SBWDATO)

/*----------------------------------------------------------------------------
   Definition of global variables
*/
extern byte TCLK_saved;      // holds the last value of TCLK before entering a JTAG sequence

/*----------------------------------------------------------------------------
   Low Level function prototypes
*/
void TMSL_TDIL(void);
void TMSH_TDIL(void);
void TMSL_TDIH(void);
void TMSH_TDIH(void);
void TMSL_TDIH_TDOrd(void);
void TMSL_TDIL_TDOrd(void);
void TMSH_TDIH_TDOrd(void);
void TMSH_TDIL_TDOrd(void);
void TCLKs_sbw(word clks);
void ClrTCLK_sbw(void);
#define ClrTCLK()       ClrTCLK_sbw()
void SetTCLK_sbw(void);
#define SetTCLK()       SetTCLK_sbw()
void TCLKstrobes_sbw(word Amount);
#define TCLKstrobes(n)  TCLKstrobes_sbw(n)
void MsDelay(word milliseconds);      	// millisecond delay loop, uses Timer_A
void InitController(void);
void InitTarget(void);
void ReleaseTarget(void);
word Shift_sbw(word Format, word Data); // used for IR- as well as DR-shift
//void TDOisInput(void);
void ShowStatus(word Status, word Index);
void TriggerPulse(word Mode);         	// optional for test

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -