void CAN_ISR(uint8 instance, Flexcan_Ip_EventType eventType, uint32 buffIdx,
const Flexcan_Ip_StateType *flexcanState)
{
(void)flexcanState;
(void)instance;
switch(eventType)
{
case FLEXCAN_EVENT_RX_COMPLETE:
printf("FLEXCAN_EVENT_RX_COMPLETE\n");
if(buffIdx == MB_Idx_1)
{
/*Receives a CAN frame into a configured message buffer.*/
//FLEXCAN_DRV_Receive(INST_CANCOM1,MB_Idx_1,&recvMsg);
FlexCAN_Ip_Receive(INST_FLEXCAN_0, MB_Idx_1, &rxData, FALSE);
FlexCAN_Ip_Send(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, MSG_ID_1, rxData.data);
}
if(buffIdx == MB_Idx_2)
{
/*Receive a CAN frame into a configured message buffer.*/
//FLEXCAN_DRV_Receive(INST_CANCOM1,MB_Idx_2,&recvMsg);
FlexCAN_Ip_Receive(INST_FLEXCAN_0, MB_Idx_2, &rxData, FALSE);
FlexCAN_Ip_Send(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, MSG_ID_2, rxData.data);
}
break;
case FLEXCAN_EVENT_RXFIFO_COMPLETE:
break;
case FLEXCAN_EVENT_TX_COMPLETE:
printf("FLEXCAN_EVENT_TX_COMPLETE\n");
break;
default:
break;
}
}
void INIT_CAN()
{
IntCtrl_Ip_EnableIrq(CAN0_ORed_0_31_MB_IRQn);
IntCtrl_Ip_InstallHandler(CAN0_ORed_0_31_MB_IRQn, CAN0_ORED_0_31_MB_IRQHandler, NULL_PTR);
FlexCAN_Ip_Init(INST_FLEXCAN_0, &FlexCAN_State0, &FlexCAN_Config0);
FlexCAN_Ip_SetStopMode(INST_FLEXCAN_0);
#if Individual_Mask
/*Set RX masking type as RX global mask or RX individual mask.*/
FlexCAN_Ip_SetRxMaskType_Privileged(INST_FLEXCAN_0, FLEXCAN_RX_MASK_INDIVIDUAL);
/*Configure a Rx Message Buffer.*/
FlexCAN_Ip_ConfigRxMb(INST_FLEXCAN_0, MB_Idx_1, &rx_info, 0x400);
/*Receives a CAN frame into a configured message buffer.*/
FlexCAN_Ip_Receive(INST_FLEXCAN_0, MB_Idx_1, &rxData, FALSE););
/*Set Rx individual mask as the 11-bit standar mask or the 29-bit extended mask.*/
FlexCAN_Ip_SetRxIndividualMask_Privileged(INST_FLEXCAN_0, MB_Idx_2, 0x780 << 18);
#endif
#if Global_Mask
/*Set RX masking type as RX global mask or RX individual mask.*/
FlexCAN_Ip_SetRxMaskType(INST_FLEXCAN_0, FLEXCAN_RX_MASK_GLOBAL);
/*Configure a Rx Message Buffer.*/
FlexCAN_Ip_ConfigRxMb(INST_FLEXCAN_0, MB_Idx_1, &rx_info, 0x300);
/*Receives a CAN frame into a configured message buffer.*/
FlexCAN_Ip_Receive(INST_FLEXCAN_0, MB_Idx_1, &rxData, FALSE);
/*Configure a Rx Message Buffer.*/
FlexCAN_Ip_ConfigRxMb(INST_FLEXCAN_0, MB_Idx_2, &rx_info, 0x400);
/*Receives a CAN frame into a configured message buffer.*/
FlexCAN_Ip_Receive(INST_FLEXCAN_0, MB_Idx_2, &rxData, FALSE);
/*Set Rx Message Buffer global mask as the 11-bit standard mask or the 29-bit extended mask.*/
FlexCAN_Ip_SetRxMbGlobalMask(INST_FLEXCAN_0, 0x700 << 18);
#endif
FlexCAN_Ip_SetStartMode(INST_FLEXCAN_0);
}