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

📄 can_cfg.h

📁 新能源燃料电池小车系统
💻 H
字号:
#ifndef _CAN_BUS_H_
#define _CAN_BUS_H_

 /************** Configuration of the CAN buffers located in RAM&ROM ***********************
  **********************************************************************************************/
 
 /***CAN FRAME formate***/
  #define EXTEND          1
  #define STAND           0
  #define RemoteFame      1
  #define DataFame        0

/**************  CANVMS  constant******************/ 
  #define CAN0_TXD_NUM    9     //Number of msg used for send out, calibration msgs are not included
  #define CAN0_RXD_NUM    3     //Number of msg used for receive,  calibration msgs are included
  #define CANVMS_TXD      CAN0_TXD_NUM
  #define CANVMS_RXD      CAN0_RXD_NUM
  #define CANVMSFormat    STAND
  #define CANVMSFrame     DataFame
  
/***********MSG from VMS**********/
  #define ID_VMSStatus    0X0301
  #define ID_VMS2FCEHMS   0X0306
  #define ID_DM0          0X05A5

/***********MSG to VMS**********/
  #define ID_FCE2VMSA     0X0371
  #define ID_FCE2VMSB     0X0372
  #define ID_FCE2VMSC     0X0373
  #define ID_FCE2VMSD     0X0374
  #define ID_FCE2VMSE     0X0375
  #define ID_FCE2VMSF     0X0376
  #define ID_DM1          0X0297
  #define ID_DM2          0X06A6
  #define ID_DM3          0X06A8

/***************ID INDEX OF CANVMS buffer**********/ 
  #define FCE2VMSA  0
  #define FCE2VMSB  1
  #define FCE2VMSC  2
  #define FCE2VMSD  3
  #define FCE2VMSE  4
  #define FCE2VMSF  5
  #define FCEDM1    6
  #define FCEDM2    7
  #define FCEDM3    8  
  
  #define VMSStatus 0
  #define VMS2FCE   1 
    
/*************CANVMS config i.e.CAN0 ***********/                                                                       
	#define VALUE_CAN0CTL1  0x87      //87: CAN moulde is enables; select oscillator Clock;nomal mode;wake up filter*/
	#define VALUE_CAN0BTR0  0x03      //canclk=16M/(1+0x03)=4M
	#define VALUE_CAN0BTR1  0x23      //Baudrate=4M/(1+TS1:4+TS2:3)=500k  

	#define VALUE_CAN0IDAC  0x10      // Set four 16 bit Acceptance Filters and mask regersiter ,Mask bit meaning:
	                                 // 1 = Ignore corresponding acceptance code register bit.
	                                 // 0 = Match corresponding acceptance code register and identifier bits.
  #define VALUE_CAN0IDAR0 0x60
	#define VALUE_CAN0IDMR0 0x00
	#define VALUE_CAN0IDAR1 0x20
	#define VALUE_CAN0IDMR1 0x1F     //ID 0X301 ID_VMSStatus is filtered by CAN0IDAC_IDHIT=0 

	#define VALUE_CAN0IDAR2 0x60
	#define VALUE_CAN0IDMR2 0x00 
	#define VALUE_CAN0IDAR3 0xC0
	#define VALUE_CAN0IDMR3 0x1F     //ID 0X306 ID_VMS2FCE_HMS is filtered by CAN0IDAC_IDHIT=1 
	
	#define VALUE_CAN0IDAR4 0xB4
	#define VALUE_CAN0IDMR4 0x00
	#define VALUE_CAN0IDAR5 0xA0
	#define VALUE_CAN0IDMR5 0x1F     //ID 0X5A5 ID_DM0 is filtered by CAN0IDAC_IDHIT=2
	
	#define VALUE_CAN0IDAR6 0x00
	#define VALUE_CAN0IDMR6 0x00
	#define VALUE_CAN0IDAR7 0x20
	#define VALUE_CAN0IDMR7 0x1F     //not used just for back up		CAN0IDAC_IDHIT=3;
 
/*************CANFCE   constant******************/
  #define CAN1_RXD_NUM    6
  #define CAN1_TXD_NUM    5
  #define CANFCE_TXD      CAN1_TXD_NUM
  #define CANFCE_RXD      CAN1_RXD_NUM

  #define CANFCEFormat    STAND
  #define CANFCEFrame     DataFame

/***************MSG from CVM**********/
  #define ID_M1Msg0       0X0101
  #define ID_M2Msg0       0X0102
  #define ID_M3Msg0       0X0103
  #define ID_M4Msg0       0X0104
 
/***************MSG from PC**********/
  #define ID_FCSCmd       0X0301
  #define ID_CaliSet      0X0302
  
/***************MSG to PC**********/
  #define ID_FCEP         0X0205		
  #define ID_StCaMsg      0X0206
  #define ID_StAnMsg      0X0207
  #define ID_StCTMsg      0X0208
  #define ID_StSTMsg      0X0209
  
  
/***************ID INDEX OF CANFCE buffer**********/
  #define FCEP            0
  #define StCaMsg         1
  #define StAnMsg         2
  #define StCTMsg         3
  #define StSTMsg         4
  
  #define M1Msg           0
  #define M2Msg           1
  #define M3Msg           2
  #define M4Msg           3
  #define FCSCmd          4
  #define CaliCmd         5
  

/**********************registers intial configuration of the  msCAN1*********************/
/**********************set the baudrate is 125k for CANFCE*******************************/
/*************CANFCE config***********/  
  #define VALUE_CAN1CTL1  0x87      //87: CAN moulde is enables; select oscillator Clock;nomal mode;wake up filter
	#define VALUE_CAN1BTR0  0x07      //canclk=16M/(1+0x07)=2M
	#define VALUE_CAN1BTR1  0x49      //Baudrate=2M/(1+TS1:10+TS2:5)=125k  
  
	#define VALUE_CAN1IDAC  0x10	   //Set four 16 bit Acceptance Filters and mask regersiter ,Mask bit meaning:
	                                 //1 = Ignore corresponding acceptance code register bit.
	                                 //0 = Match corresponding acceptance code register and identifier bits.

  #define VALUE_CAN1IDAR0 0x20
	#define VALUE_CAN1IDMR0 0x00
	#define VALUE_CAN1IDAR1 0x20
	#define VALUE_CAN1IDMR1 0xFF     //filter acceptance ID 0X101&0x103 is filtered by 	CAN0IDAC_IDHIT=0; 	
  
  #define VALUE_CAN1IDAR2 0x00
	#define VALUE_CAN1IDMR2 0x00
	#define VALUE_CAN1IDAR3 0x00
	#define VALUE_CAN1IDMR3 0x1F     //filter acceptance ID 0X102 is filtered by 	CAN0IDAC_IDHIT=1;
	
	#define VALUE_CAN1IDAR4 0x00
	#define VALUE_CAN1IDMR4 0x00
	#define VALUE_CAN1IDAR5 0x00
	#define VALUE_CAN1IDMR5 0x1F    //filter acceptance ID 0X104 is filtered by 	CAN0IDAC_IDHIT=2;
  
  #define VALUE_CAN1IDAR6 0x60
	#define VALUE_CAN1IDMR6 0x00
	#define VALUE_CAN1IDAR7 0x20
	#define VALUE_CAN1IDMR7 0x7F    //filter acceptance ID 0X301&0X302 is filtered by CAN0IDAC_IDHIT=3;    

  /********************CANFCE Trigger Type**********************/
  #define NoTrigger     0
  #define SingleTrigger 1
  #define PeriodTrigger 2
  
  
  /********************ErrorCode******************
     DTC1=Error Rank+SubSystem code
    Error Rank use bit5-7
    Subsystem code is 00001B(P1)
  ************************************************/
  #define NoFault           0xFF    //No Error  
  #define MinorFault        0x81		//100B+00001B
  #define GeneralFault		  0x61		//011B+00001B
  #define SeriousFault			0x41		//010B+00001B
  #define DangerousFault		0x21		//001B+00001B 
  
  /*****************Danger Fault Code************/
  /*****************Emgency shutdown************/
  #define Cd_HL_D 		      401			 //Hydrogen leak danger
  #define Cd_OC_D		        402			 //Over Current danger
  #define Cd_OP_D           403			 //Over Pressure or detP danger
    
  /*****************Serious Fault Code************/
  /*****************Requiring Stop  ************/ 
  #define Cd_SN_F           423				//fault of CANFCE
  #define Cd_CP_F           441				//fault of air compressor
  #define Cd_WP_F           442				//fault of water pump
  #define Cd_CVM_F				  443				//fault of cell voltage monitor
  #define Cd_WPS_F          444				//fault of water pressure sensor
  #define Cd_CS_F           446       //fault of current sensor
  #define Cd_VS_F           447       //fault of voltage sensor
  #define Cd_MN_F           448				//maybe it is fault of CANVMS 
  #define Cd_LCV_F          450 			//fault of cell for overlow voltage
  #define Cd_OT_F 				  451				//over high water temp.
  #define Cd_LP_F           452				//over low operation pressure
  #define Cd_OC_F           453       //over stack current
  #define Cd_HL_F						454       //fault of Hydrogen leakage
  #define Cd_OV_F           455       //over high voltage of stack
  #define Cd_HM_F           456       //fault of air humidifier
  #define Cd_OP_F           481       //over high operation pressure
  
  /*****************General Fault Code************/
  /*****************Requir to reduce output*******/ 
  #define Cd_WT_E           483       //error of water temp. sensor	 ?if use 443 then there will be redundancy
  #define Cd_OP_E           482  			//over high operation pressure
  #define Cd_OT_E           484       //over high water temp
  #define Cd_OC_E           485       //over current of stack
  #define Cd_OV_E           486 			//over low stack voltage
  #define Cd_HP_E           487       //fault of hydrogen pump
  #define Cd_SP_E           488       //fault of pressure sensor
  /*****************Minor Fault Code ************/
  /*****************Just register alarm**********/  
  #define Cd_HP_A           521       //over high inlet hydrogen pressure
  #define Cd_WS_A           522       //over low coolant position
  
  /*****************************************************************/
  /**************___Threshold used in the programme__**************/
  /*****************************************************************/
  
  /****************Threshold for Air Pressure in mbar*******************/
  #define PA_H_Alarm        550       //high pressure alarm
  #define PA_H_Error        600			  //high pressure error
  #define PA_H_Danger       700				//high pressure danger
  
  #define PA_L_Alarm        300  			//low pressure alarm
  #define PA_L_Error        200				//low pressure error
  #define PA_L_Danger       100    		//low pressure danger
  
  /****************Threshold for Hydrogen Pressure in mbar*******************/
  #define PH_H_Alarm        550       //high pressure alarm
  #define PH_H_Error        600			  //high pressure error
  #define PH_H_Danger       700				//high pressure danger
  
  #define PH_L_Alarm        300  			//low pressure alarm
  #define PH_L_Error        200				//low pressure error
  #define PH_L_Danger       100    		//low pressure danger  
  
  /****************Threshold for Water Pressure in mbar*******************/
  #define PW_H_Alarm        550       //high pressure alarm
  #define PW_H_Error        600			  //high pressure error
  #define PW_H_Danger       700				//high pressure danger
  
  #define PW_L_Alarm        300  			//low pressure alarm
  #define PW_L_Error        200				//low pressure error
  #define PW_L_Danger       100    		//low pressure danger   
  
  /****************Threshold for detPressure in mbar*******************/
  #define PGG_H_Alarm       150       //high pressure alarm
  #define PGG_H_Error       200			  //high pressure error
  #define PGG_H_Danger      300				//high pressure danger
  
  #define PWG_H_Alarm       500       //high pressure alarm
  #define PWG_H_Error       700			  //high pressure error
  #define PWG_H_Danger      800				//high pressure danger


#pragma CODE_SEG __NEAR_SEG NON_BANKED /* Interrupt section for this module. Placement will be in NON_BANKED area. */
#pragma TRAP_PROC

interrupt void CAN1_Tx_isr(void);
interrupt void CAN1_Rx_isr(void);
interrupt void CAN1_Err_isr(void);
interrupt void CAN1_Wake_isr(void);
interrupt void CAN0_Tx_isr(void);
interrupt void CAN0_Rx_isr(void);
interrupt void CAN0_Err_isr(void);
interrupt void CAN0_Wake_isr(void); 

#pragma CODE_SEG DEFAULT
void CANBUSInit(void);
void CAN0Init(void);
void CAN1Init(void);
void CANMsgCfg(void);
void CANVMS_Load(void);
void CANFCE_Load(void);
void CANVMSTrans(void);
void CANFCETrans(void);
void CANVMS_DownLoad(CAN_Message temp);
void CANFCE_DownLoad(CAN_Message temp);
void FCECmdDeal(void);
void VMSCmdDeal(void);



#endif  
  
  

⌨️ 快捷键说明

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