When I used multiple CAN channels of MPC5748G in FreeRTOS, in the execution
FLEXCAN_DRV_RxFifo(INST_CANCOM2,&recvBuff);
Or FLEXCAN_DRV_Receive(INST_CANCOM2,RX_MAILBOX2,&recvBuff); Until we have this problem:
Enter into
IVOR1_Vector:
e_b IVOR1_Handler
Part of the program is as follows:
#if CAN1_EN
FLEXCAN_DRV_Init(INST_CANCOM1, &canCom1_State, &canCom1_InitConfig0); //CAN0
FLEXCAN_DRV_ConfigRxMb(INST_CANCOM1, RX_MAILBOX, &RXdataInfo1, RX_MSG_ID);
FLEXCAN_DRV_ConfigTxMb(INST_CANCOM1, TX_MAILBOX, &TXdataInfo1, TX_MSG_ID);
if(! canCom1_InitConfig0.fd_enable)
{
FLEXCAN_DRV_ConfigRxFifo(INST_CANCOM1,FLEXCAN_RX_FIFO_ID_FORMAT_A,&RX_id_table1);
}
FLEXCAN_DRV_InstallEventCallback(INST_CANCOM1,CAN_CallBackHandle,NULL);
if(canCom1_InitConfig0.fd_enable)
{
FLEXCAN_DRV_Receive(INST_CANCOM1,RX_MAILBOX,&recvBuff);
}
else
{
FLEXCAN_DRV_RxFifo(INST_CANCOM1,&recvBuff);
}
#endif
#if CAN2_EN
FLEXCAN_DRV_Init(INST_CANCOM2, &canCom2_State, &canCom2_InitConfig0); //CAN1
FLEXCAN_DRV_ConfigRxMb(INST_CANCOM2, RX_MAILBOX2, &RXdataInfo2, RX_MSG_ID);
FLEXCAN_DRV_ConfigTxMb(INST_CANCOM2, TX_MAILBOX, &TXdataInfo2, TX_MSG_ID);
if(! canCom2_InitConfig0.fd_enable)
{
FLEXCAN_DRV_ConfigRxFifo(INST_CANCOM2,FLEXCAN_RX_FIFO_ID_FORMAT_A,&RX_id_table2);
}
FLEXCAN_DRV_InstallEventCallback(INST_CANCOM2,CAN_CallBackHandle,NULL);
if(canCom2_InitConfig0.fd_enable)
{
FLEXCAN_DRV_Receive(INST_CANCOM2,RX_MAILBOX2,&recvBuff);
}
else
{
FLEXCAN_DRV_RxFifo(INST_CANCOM2,&recvBuff);
}
MPC5748G-GW-RDB