#include "Rscan.h" #include "GPIO.h" #include "dr7f701441.dvf.h" #include "RTE_CAN.h" #include "CAN_Communication_Matrix.h" #include "CAN_Lib.h" //#include "CAN_Signal_Tx.h" #include "AlarmGeneralFilie.h" #include "Diag_ID_Def.h" #include "DoCAN_ISO15765.h" #include "PowerManagement.h" #include "UDS_Common.h" #include "Watchdog.h" static uint16_t Can_Init_Lock = 0U; void Can_Lock_Clr(void) { Can_Init_Lock = 0u; } /***Middle***/ void Can_Init(void) { /* filter 变量声明 */ uint32_t IDFilterNum; uint8_t CH0_IDFilterNum; uint32_t CANLLCCh0NMIDRange[2]; uint32_t CANLLCCh0MsgIDList[ID_TOTAL_MAX + 2u]; uint32_t CANLLCCh0OwnIDList[4]; uint32_t i; CANFD_Filter_Init_st_t CANLLCCh0Filter; if (Can_Init_Lock != 0x55AAu) { /* Sys_Startup_Init */ /*50304*/ /* Channel0 Filter Data */ CANLLCCh0NMIDRange[0] = 0x680UL; CANLLCCh0NMIDRange[1] = 0x6FFUL; CANLLCCh0MsgIDList[0] = DIAG_ID_Rx_PHY; CANLLCCh0MsgIDList[1] = DIAG_ID_Rx_FUN; for (i = 2u; i < (ID_TOTAL_MAX + 2u); i++) { CANLLCCh0MsgIDList[i] = CAN_MSG_CONST_ARRAY[i - 2].MSG_Identifier; } CANLLCCh0OwnIDList[0] = 0x26DUL; CANLLCCh0OwnIDList[1] = 0x330UL; CANLLCCh0OwnIDList[2] = 0x331UL; CANLLCCh0OwnIDList[3] = 0x332UL; /* Channel0 Filter Data configeration */ CANLLCCh0Filter.NM0StdFilter.CfgType = CANFD_FILTER_ID_RANGE; CANLLCCh0Filter.NM0StdFilter.IDNum = (DIM(CANLLCCh0NMIDRange) / 2U); CANLLCCh0Filter.NM0StdFilter.pIDs = CANLLCCh0NMIDRange; CANLLCCh0Filter.NM0ExtFilter.CfgType = CANFD_FILTER_N_A; CANLLCCh0Filter.Msg0StdFilter.CfgType = CANFD_FILTER_ID_LIST; CANLLCCh0Filter.Msg0StdFilter.IDNum = ID_TOTAL_MAX + 2u; CANLLCCh0Filter.Msg0StdFilter.pIDs = CANLLCCh0MsgIDList; CANLLCCh0Filter.Msg0ExtFilter.CfgType = CANFD_FILTER_N_A; CANLLCCh0Filter.Diag0StdFilter.CfgType = CANFD_FILTER_ID_LIST; CANLLCCh0Filter.Diag0StdFilter.IDNum = DIM(CANLLCCh0OwnIDList); CANLLCCh0Filter.Diag0StdFilter.pIDs = CANLLCCh0OwnIDList; CANLLCCh0Filter.Diag0ExtFilter.CfgType = CANFD_FILTER_N_A; CH0_IDFilterNum = CANLLCCh0Filter.NM0StdFilter.IDNum; CH0_IDFilterNum = CH0_IDFilterNum + CANLLCCh0Filter.Msg0StdFilter.IDNum; CH0_IDFilterNum = CH0_IDFilterNum + CANLLCCh0Filter.Diag0StdFilter.IDNum; IDFilterNum = (uint32_t)(CH0_IDFilterNum & 0xFFUL); IDFilterNum |= (uint32_t)((0 & 0xFFUL) << 8U); IDFilterNum |= (uint32_t)((0 & 0xFFUL) << 16U); CANLLCCh0Filter.pfCAN0DataIndCb = Can_Read_Msg; RSCAN0_CH_Init(&CANLLCCh0Filter, IDFilterNum); Can_Init_Lock = 0x55AAu; } GPIO_OUT_PORT00_PIN00 = 0U; //RSCAN0_CH0_STB } void Can_DeInit(void) { } uint8_t Can_Write(_CAN_Msg *Msg) { switch (Msg->MsgPro) { case 0: RSCAN0_SendCH0_TxBuf0(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 1: RSCAN0_SendCH0_TxBuf1(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 2: RSCAN0_SendCH0_TxBuf2(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 3: RSCAN0_SendCH0_TxBuf3(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 4: RSCAN0_SendCH0_TxBuf4(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 5: RSCAN0_SendCH0_TxBuf5(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 6: RSCAN0_SendCH0_TxBuf6(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 7: RSCAN0_SendCH0_TxBuf7(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 8: RSCAN0_SendCH0_TxBuf8(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 9: RSCAN0_SendCH0_TxBuf9(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 10: RSCAN0_SendCH0_TxBuf10(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 11: RSCAN0_SendCH0_TxBuf11(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 12: RSCAN0_SendCH0_TxBuf12(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 13: RSCAN0_SendCH0_TxBuf13(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 14: RSCAN0_SendCH0_TxBuf14(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; case 15: RSCAN0_SendCH0_TxBuf15(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg); break; default: CAN_CH0_Data_Request(Msg->MsgID, Msg->MsgStd, Msg->MsgRTR, Msg->MsgDLC, Msg->Msg); break; } return 0; } void Can_Sleep_Fun(void) { } void Can_SleepController_Fun(void) { } void Can_Wakeup_Fun(void) { } void Can_Uds_Abort(void) { CANFD_SetTX_Abort(); } void Can_Abort_All(void) { } /*****Lower*******/ void Can_Read_Msg(uint32_t m_id, uint8_t m_dlc, uint8_t m_Msg[]) { ReceivedMsg(m_id, m_dlc); Co_Can_Buff_Set(Co_Can_ConvertSubID(m_id), m_dlc, m_Msg); if ((m_id == DIAG_ID_Rx_FUN) || (m_id == DIAG_ID_Rx_PHY)) { DoCAN_L_Data_Indication(m_id, m_dlc, m_Msg); } } void Can_Confirm(uint32_t Identifier, uint8_t TransferStatus) { } void CAN_BUSOFF_Recover(void) { CH0_BusOff_Recovery(); }