Hi NXP dev team,
I check the can example code to receive/send can data using below code with SDK:
FLEXCAN_DRV_ConfigRxMb(INST_CANCOM1, RX_MAILBOX0, &dataInfo0, RX_MB_ID0);
FLEXCAN_DRV_Receive(INST_CANCOM1, RX_MAILBOX1, &recvBuff1);
The code works on our board, but in our user scenario we have 3 can id(0x7df, 0x7e0, 0x7e8) to listen, I don't know how to filter the expected can id.
Please help to advice.
Thanks
Jay
Hi Jay,
simply configure more RX MBs for dedicated ID in similar manner you outlined.
Also if not enabling CAN FD you can use RX FIFO for message receiving and you define list of ID to be received in the RX FIFO ID table.
BR, Petr
you can try to modify example code to have
FLEXCAN_DRV_ConfigRxMb(INST_CANCOM1, RX_MAILBOX0, &dataInfo0, RX_MB_ID0);
FLEXCAN_DRV_ConfigRxMb(INST_CANCOM1, RX_MAILBOX1, &dataInfo1, RX_MB_ID1);
FLEXCAN_DRV_ConfigRxMb(INST_CANCOM1, RX_MAILBOX2, &dataInfo2, RX_MB_ID2);
FLEXCAN_DRV_Receive(INST_CANCOM1, RX_MAILBOX0, &recvBuff0);
FLEXCAN_DRV_Receive(INST_CANCOM1, RX_MAILBOX1, &recvBuff1);
FLEXCAN_DRV_Receive(INST_CANCOM1, RX_MAILBOX2, &recvBuff2);
while(1)
{
if(FLEXCAN_DRV_GetTransferStatus(INST_CANCOM1, RX_MAILBOX0) == STATUS_SUCCESS)
{
/* process recvBuff0 as needed */
....
/* Start receiving data in RX_MAILBOX0 again. */
FLEXCAN_DRV_Receive(INST_CANCOM1, RX_MAILBOX0, &recvBuff0);
}
if(FLEXCAN_DRV_GetTransferStatus(INST_CANCOM1, RX_MAILBOX1) == STATUS_SUCCESS)
{
/* process recvBuff1 as needed */
....
/* Start receiving data in RX_MAILBOX1 again. */
FLEXCAN_DRV_Receive(INST_CANCOM1, RX_MAILBOX1, &recvBuff1);
}
if(FLEXCAN_DRV_GetTransferStatus(INST_CANCOM1, RX_MAILBOX2) == STATUS_SUCCESS)
{
/* process recvBuff2 as needed */
....
/* Start receiving data in RX_MAILBOX2 again. */
FLEXCAN_DRV_Receive(INST_CANCOM1, RX_MAILBOX2, &recvBuff2);
}
}
BR, Petr