?? can_cfg.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 + -