📄 dsp_ecan.h
字号:
//###########################################################################
//
// FILE: AbrDectMain.h
//
// TITLE: Pre-definitions of main function.
//
// DESCRIPTION:
// All the pre-definitions of main function are defined in
// this file. DELAY_US(A) is a delay function with 1us unit.
//
//###########################################################################
/*-----------------------------------------------------------------------------
Specify the clock rate of the CPU (SYSCLKOUT) in nS.
Take into account the input clock frequency and the PLL multiplier
selected in step 1.
Use one of the values provided, or define your own.
The trailing L is required tells the compiler to treat
the number as a 64-bit value.
Only one statement should be uncommented.
Example: CLKIN is a 30MHz crystal.
In step 1 the user specified PLLCR = 0xA for a
150Mhz CPU clock (SYSCLKOUT = 150MHz).
In this case, the CPU_RATE will be 6.667L
Uncomment the line: #define CPU_RATE 6.667L
Or the user specified PLLCR = 0x8 for a
120Mhz CPU clock (SYSCLKOUT = 120MHz).
In this case, the CPU_RATE will be 8.333L
Uncomment the line: #define CPU_RATE 8.333L
-----------------------------------------------------------------------------*/
//#define CPUFREQUENCY150MHZ
//#define CPUFREQUENCY135MHZ
//#define CPUFREQUENCY120MHZ
//----------------------------------------------------------------------------
#ifdef CPUFREQUENCY150MHZ
//----------------------------------------------------------------------------
// CPU is running in 150MHz
// CLKIN = OSCLK*4, HSPCLK = CLKIN = 150MHz; LSPCLK = CLKIN/4 = 37.5MHz
// 1010b: CLKIN = OSCLK*5 1001b: CLKIN = OSCLK*3.5; 1000b: CLKIN = OSCLK*4
#define PLLSCALE 0x000A
#define CPU_RATE 6.667L // for a 150MHz CPU clock speed (SYSCLKOUT)
// CPU Timers
// 150MHz: 150000(1ms)
#define T0PERIOD 150000 // For CPU Timer0
// EV Timers definition
// EV Timer1,2,3,4's clock(EVTCLK) = HSPCLK/1
// 100us Interrupt (0x3a97(15000)
#define EVT1PERIOD 0x3A97 // For EV Timer1
#define EVT2PERIOD 18749 // For EV Timer2 1ms (Sample rate for ADC)
#define EVT3PERIOD 0x3A97 // For EV Timer3
#define EVT4PERIOD 0x3A97 // For EV Timer4
// SCI definition
// Baud = LSPCLK/((BRR + 1)*8); BRR = LSPCLK/(Baud*8) - 1
// Baud Rate = 921600; BRR = 0x0004 (SCIHBAUDA = 0x00; SCILBAUDA = 0x04)
// Baud Rate = 230400; BRR = 0x0013 (SCIHBAUDA = 0x00; SCILBAUDA = 0x13)
// Baud Rate = 115200; BRR = 0x0027 (SCIHBAUDA = 0x00; SCILBAUDA = 0x27)
// Baud Rate = 57600 ; BRR = 0x0041 (SCIHBAUDA = 0x00; SCILBAUDA = 0x41)
// Baud Rate = 56000 ; BRR = 0x0042 (SCIHBAUDA = 0x00; SCILBAUDA = 0x42)
// Baud Rate = 19200 ; BRR = 0x00C2 (SCIHBAUDA = 0x00; SCILBAUDA = 0xC2)
// Baud Rate = 9600 ; BRR = 0x01E7 (SCIHBAUDA = 0x01; SCILBAUDA = 0xE7)
// For SCIA
#define SCIABAUDH 0x00
#define SCIABAUDL 0x27
// For SCIB
#define SCIBBAUDH 0x00
#define SCIBBAUDL 0x27
// End definition for CPU Frequency 150MHz
//----------------------------------------------------------------------------
#else
//----------------------------------------------------------------------------
// CPU is running in 120MHz
// CLKIN = OSCLK*4, HSPCLK = CLKIN = 120MHz; LSPCLK = CLKIN/4 = 30MHz
#define PLLSCALE 0x0008
#define CPU_RATE 8.333L // for a 120MHz CPU clock speed (SYSCLKOUT)
// CPU Timers
// 120MHz: 120000(1ms)
#define T0PERIOD 120000 // For CPU Timer0
// EV Timers definition
// EV Timer1,3,4's clock(EVTCLK) = HSPCLK/1
// 100us Interrupt 0x2EDF(12000)
// EV Timer2's clock(EVTCLK) = HSPCLK/8=15MHz
#define EVT1PERIOD 0x2EDF // For EV Timer1 0.1ms
#define EVT2PERIOD 14999 // For EV Timer2 1ms (Sample rate for ADC)
#define T2PR_L1 23438
#define T2PR_L2 11719
#define T2PR_L3 7813
#define T2PR_L4 5860
#define T2PR_L5 4688
#define T2PR_L6 3907
#define T2PR_L7 3349
#define T2PR_L8 2930
#define T2PR_L9 2605
#define T2PR_L10 2344
#define EVT3PERIOD 0x2EDF // For EV Timer3
// EVT4CLK = HSPCLK/128 = 0.9375MHz
#define EVT4PERIOD 0xD055 // Peroid about 50ms
//#define EVT4PERIOD 18750 // Peroid about 20ms
// SCI definition
// Baud = LSPCLK/((BRR + 1)*8); BRR = LSPCLK/(Baud*8) - 1
// Baud Rate = 921600; BRR = 0x0003 (SCIHBAUDA = 0x00; SCILBAUDA = 0x03)
// Baud Rate = 460800; BRR = 0x0007 (SCIHBAUDA = 0x00; SCILBAUDA = 0x07)
// Baud Rate = 230400; BRR = 0x000F (SCIHBAUDA = 0x00; SCILBAUDA = 0x0F)
// Baud Rate = 115200; BRR = 0x001F (SCIHBAUDA = 0x00; SCILBAUDA = 0x1F)
// Baud Rate = 9600 ; BRR = 0x0185 (SCIHBAUDA = 0x01; SCILBAUDA = 0x85)
// For SCIA
#define SCIABAUDH 0x00
#define SCIABAUDL 0x07
// For SCIB
#define SCIBBAUDH 0x00
#define SCIBBAUDL 0x1F
// End definition for CPU Frequency 120MHz
//----------------------------------------------------------------------------
#endif // End ifdef
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
// DO NOT MODIFY THIS LINE. The time is Aus.
#define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L)
extern void DSP28x_usDelay(unsigned long Count);
//===========================================================================
//The zone of system initializations definition
//===========================================================================
extern void InitSysCtrl( void );
extern void KickDog( void );
extern void InitExtRam( void );
extern void DisableDog( void );
extern void EnableDog( void );
extern void GpioInit( void );
extern void EvInit( void );
extern void SciInit( void );
extern void XintfInit( void );
extern void XintInit( void );
extern void AdcInit( void );
extern void VarsInit( void );
extern void SelfDetection(void);
//===========================================================================
//The zone of CPU Times and EV module definition
//===========================================================================
//---------------------------------------------------------------------------
// Function prototypes and external definitions:
#define INTERVAL 200
#define STARTGPT2 T2CON |= BIT6
#define ENDGPT2 T2CON &= 0xFFBF
#define STARTGPT4 T4CON |= BIT6
#define ENDGPT4 T4CON &= 0xFFBF
extern void ConfigCpuTimers( void );
extern void TimersStart( void );
extern void TimersStop( void );
//===========================================================================
//The zone of Adc definition
//===========================================================================
//---------------------------------------------------------------------------
// Function prototypes and external definitions:
#define ADC_usDELAY 8000L
#define ADC_usDELAY2 20L
// ADC start parameters
// #define AVG 100 // Average sample limit
// #define ZOFFSET 0x00 // Average Zero offset
#define BUFSIZE 1000 // Sample buffer size
// #define REALBUFSIZE 1024
// ADC sampling rate
#define SAMRATE_L1 640
#define SAMRATE_L2 1280
#define SAMRATE_L3 1920
#define SAMRATE_L4 2560
#define SAMRATE_L5 3200
#define SAMRATE_L6 3840
#define SAMRATE_L7 4480
#define SAMRATE_L8 5120
#define SAMRATE_L9 5760
#define SAMRATE_L10 6400
// ADC sampling data buffer
struct DATA
{
uint16 CNumth; // The data of k-th carriage
uint16 WNumth; // The data of k-th wheel
uint16 WNum; // The number of sample data
uint16 AbrSig[3]; // The tread abrasion signal of wheel
int WS1Data[BUFSIZE]; // Channel A0, A4, B0, B4
int WS2Data[BUFSIZE]; // Channel A1, A5, B1, B5
int WS3Data[BUFSIZE]; // Channel A2, A6, B2, B6
};
struct SAMPLE_DATA_TABLE
{
// Referenced power source
uint16 Sref1SampleData; // Channel B3
uint16 Sref2SampleData; // Channel B7
uint16 Sref3SampleData; // Channel A3
// Sample Rate
uint16 SampleRate1; //1, 2 for sense 1
uint16 SampleRate2;
uint16 SampleRate3; //3, 4 for sense 2
uint16 SampleRate4;
// SD[0]~SD[7] for Group 1 (bogie)
// SD[0]: Left of former of wheelset 1; SD[1]: Left of later of wheelset 1
// SD[2]: Right of former of wheelset 1; SD[3]: Right of later of wheelset 1
// SD[4]: Left of former of wheelset 2; SD[5]: Left of later of wheelset 2
// SD[6]: Right of former of wheelset 2; SD[7]: Right of later of wheelset 2
// SD[8]~SD[15] for Group 2 (bogie)
// SD[8]: Left of former of wheelset 3; SD[9]: Left of later of wheelset 3
// SD[10]: Right of former of wheelset 3; SD[11]: Right of later of wheelset 3
// SD[12]: Left of former of wheelset 4; SD[13]: Left of later of wheelset 4
// SD[14]: Right of former of wheelset 4; SD[15]: Right of later of wheelset 4
struct DATA Sd[16];
};
extern struct SAMPLE_DATA_TABLE Sdt;
//===========================================================================
//The zone of Sci definition
//===========================================================================
//---------------------------------------------------------------------------
// Function prototypes and external definitions:
#define SENDBUFSIZE 2068
#define STARTSCIA SCIFFTXA |= BIT13
#define ENDSCIA SCIFFTXA &= 0xDFFF
#define INTRAIN 0x11
#define OUTTRAIN 0x22
#define NOTRAIN 0x33
#define RUNNING 0x44
void UartSend(void);
void SendDataFrame(unsigned char SenNumth, unsigned int WheelNum,
unsigned int SampleRate, unsigned int SampleNum, int *Data);
void SendSampleDataEnd(unsigned char SenNumth, unsigned int WheelNumth);
void SendErrorStatus(unsigned char ErrorTyping, unsigned int WheelNumth);
void SendTrainStatus(unsigned char Status);
void SendDataGroup1(unsigned char LSenNumth);//, unsigned char RSenNumth);
void SendDataGroup2(unsigned char LSenNumth);//, unsigned char RSenNumth);
void SendDataGroup3(unsigned char LSenNumth);//, unsigned char RSenNumth);
void SendDataGroup4(unsigned char LSenNumth);//, unsigned char RSenNumth);
void SendDataGroup5(unsigned char LSenNumth, unsigned char RSenNumth);
void SendDataGroup6(unsigned char LSenNumth, unsigned char RSenNumth);
void SendDataGroup7(unsigned char LSenNumth, unsigned char RSenNumth);
void SendDataGroup8(unsigned char LSenNumth, unsigned char RSenNumth);
void SendAbrasion(unsigned int WheelNum, unsigned char SenseNum,
int AbrDeep, int sp_status);
//===========================================================================
//The other definition
//===========================================================================
//---------------------------------------------------------------------------
// Function prototypes and external definitions:
#define SCALE2 2
#define SCALE3 3
#define SCALE4 4
#define SCALE5 5
#define WHEELINTERVAL 2500L
void TrainGone(void);
//===========================================================================
//The zone of error definition
//===========================================================================
//---------------------------------------------------------------------------
// Function prototypes and external definitions:
#define ERROR_L1 1
#define ERROR_L2 2
#define ERROR_L3 3
#define ERROR_L4 4
#define ERROR_L5 5
// void Error(unsigned char ErrorType, unsigned int WheelNumth);
//===========================================================================
//The zone of signal processing module definition
//===========================================================================
void Fir16Init(void);
void ASigPro(unsigned int sam_num, int *input);
struct ASP
{
int ab_value;
int sp_status;
int flange;
};
//extern struct ASP a_sp;
//===========================================================================
// NO MORE!
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -