#include #include "..\lib\UPAC5000.h" #include "..\lib\XWCAN.h" #include /*If the UserCANInt() function is not used, please don't remove it.*/ void UserCANInt(int CANPort,char CANInt){ if(CANPort ==0x0) { if (CANInt==0x01) /*avoid complier warning*/ { } } } void main(void) { int ret; unsigned char MsgMode,MsgRTR,MsgDataLen,MsgData[8]; unsigned long MsgID,MsgUpperTimeStamp,MsgLowerTimeStamp;//,MsgCnt=0; InitLib(); /********************************************************/ /* Initial all LEDs */ /********************************************************/ CL1Off(); CL2Off(); CL3Off(); /*******************************************************/ /* initialize and configure the CAN controller */ /*******************************************************/ ret=XWCANInit(0,2,125000UL,0,0,0x00000000UL,0xffffffffUL); /* XCANInit function Parameter descriptions 0 : for CAN port selection 2 : for transmission interrupt 125000UL : for CAN baud 0 : for BT0 of user defined baud 0 : for BT1 of user defined baud 0x00000000UL : for AccCode of CAN message filter 0xffffffffUL : for AccMask of CAN message filter */ switch (ret){ /*Check if configuration is OK*/ case CAN_ResetError: Print("Reset Error!\n\r"); return; case CAN_SetACRError: Print("\n\rSet ACR Error!"); return; case CAN_SetAMRError: Print("\n\rSet AMR Error!"); return; case CAN_SetBaudRateError: Print("\n\rSet Baud Rate Error!"); return; case CAN_BaudNotSupport: Print("\n\rBaud Rate Not Support!"); return; case CAN_ConfigError: Print("\n\rConfiguration Failure!"); return; default: if (ret >0){ Print("Default=%d\n\r",ret); return; } } /********************************************************/ /* Enable Irq */ /********************************************************/ CAN_CreateBuffer(0,1,1000); //Create TX Buffer CAN_InstallIrq(0); Print("Press any key to exit the program.\n\r"); MsgData[0]=0x12; MsgData[1]=0x23; MsgData[2]=0x34; MsgData[3]=0x45; MsgData[4]=0x56; MsgData[5]=0x67; MsgData[6]=0x78; MsgData[7]=0x89; while(1){ /********************************************************/ /* Send CAN messages to CAN bus */ /********************************************************/ ret=SendCANMsg(0,1,0x12345678UL,0,8,MsgData); /* SendCANMsg function parameter descirptions: 0 : for CAN Port selection 1 : for Send message with 29-bit ID 0x12345678UL : for CAN message ID 0 : for CAN message RTR 8 : for CAN message data length MsgData : for CAN message output data */ if (ret){ switch(ret){ case CAN_DataLengthError: Print("Transmission Data Length Error!\n"); break; case CAN_TransmitIncomplete: Print("Transmission is incomplete!\n"); break; case CAN_TransmitBufferLocked: Print("CAN controller transmit Buffer is locked!\n"); break; } break; } DelayMs(500); ret=SendCANMsg(0,0,0x12345678UL,0,8,MsgData); /* SendCANMsg function parameter descirptions: 0 : for CAN Port selection 0 : for Send message with 11-bit ID 0x12345678UL : for CAN message ID (only 0x278 ID value will be send out) 0 : for CAN message RTR 8 : for CAN message data length MsgData : for CAN message output data */ if (ret){ switch(ret){ case CAN_DataLengthError: Print("Transmission Data Length Error!\n"); break; case CAN_TransmitIncomplete: Print("Transmission is incomplete!\n"); break; case CAN_TransmitBufferLocked: Print("CAN controller transmit Buffer is locked!\n"); break; } break; } DelayMs(500); if (Kbhit()){ /*if press any key, exit the program*/ Print("Exit this program!\n"); break; } } CAN_Restore(0); /* CAN_Restore function parameter descirptions: 0 : for CAN Port selection */ }