Difference between FLEXCAN_DRV_ConfigRxMb and FLEXCAN_DRV_ConfigRxFifo

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Difference between FLEXCAN_DRV_ConfigRxMb and FLEXCAN_DRV_ConfigRxFifo

1,460 Views
liuyanwei8914
Contributor I

Hi,

    I have some doubts about the FlexCAN function FLEXCAN_DRV_ConfigRxMb and FLEXCAN_DRVConfig Rx Fifo. 

If I only get two messages, I can use FLEXCAN_DRV_ConfigRxMb, for example:

void CANCONfig(void)
{
      //初始化CAN0
      FLEXCAN_DRV_Init(INST_CANCOM0, &canCom0_State, &canCom0_InitConfig0);
      //配置0x218帧
      FLEXCAN_DRV_ConfigRxMb(INST_CANCOM0, RX_MAILBOX_0, &Data_Std_Info, 0x218);
      FLEXCAN_DRV_SetRxIndividualMask(INST_CANCOM0,FLEXCAN_MSG_ID_STD,RX_MAILBOX_0,0x00000u);
      //配置0x121帧
      FLEXCAN_DRV_ConfigRxMb(INST_CANCOM0, RX_MAILBOX_1, &Data_Std_Info, 0x121);
      FLEXCAN_DRV_SetRxIndividualMask(INST_CANCOM0,FLEXCAN_MSG_ID_STD,RX_MAILBOX_1,0x00000u);
      FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_0, &RecvMsg0);
      FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_1, &RecvMsg1);
      //安装中断函数
      FLEXCAN_DRV_InstallEventCallback(INST_CANCOM0, CAN0RxCallBack, NULL);
}

The callback function is as follow:

void CAN0RxCallBack(uint8_t instance, flexcan_event_type_t eventType,
uint32_t buffIdx, flexcan_state_t *flexcanState)
{
      if(eventType == FLEXCAN_EVENT_RX_COMPLETE) {
         uint32_t TempId;
         if(instance == INST_CANCOM0) {
         FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_0, &RecvMsg0);
         FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_1, &RecvMsg1);
         V_Vehicle_Speed = ((RecvMsg0.data[1]<<5)+((RecvMsg0.data[2]&0xF8)>>3))*0.05625;
         Signal1 = RecvMsg1.data[0];
         Signal2 = RecvMsg1.data[2];
}
}
}

      But if I want get 70 messages, I can not use FLEXCAN_DRV_ConfigRxMb, because Rx_MailBox do not have so much, then I must use the FLEXCAN_DRV_ConfigRxFifo ,is it right? 

Labels (1)
0 Kudos
Reply
1 Reply

1,382 Views
Omar_Anguiano
NXP TechSupport
NXP TechSupport

Hello, 言伟 刘

 

Could you specify the part number you are using?

 

Best regards,

Omar

0 Kudos
Reply