Hello,
I'm trying to receive multiple CAN IDs from a mailbox like the code below, but I'm not getting all the IDs.
After initializing FlexCAN, I configured RxMask like the code below .
I don't want to use "Receive Blocking" because it affects my system and the CAN period.
I don't want to use while to "get transfer status" because it crashes my system.
I don't know how to use callback for Rx!
uint32_t MessageId;
flexcan_msgbuff_t recvBuff_1;
uint16_t ID_1;
uint16_t ID_2;
uint16_t ID_3;
FLEXCAN_DRV_SetRxMaskType(INST_CANCOM1, FLEXCAN_RX_MASK_GLOBAL);
FLEXCAN_DRV_SetRxMbGlobalMask(INST_CANCOM1, FLEXCAN_MSG_ID_STD, 0U);
flexcan_data_info_t dataInfo =
{
.data_length = 8U,
.msg_id_type = FLEXCAN_MSG_ID_STD,
.enable_brs = false,
.fd_enable = false,
.fd_padding = 0U
};
FLEXCAN_DRV_ConfigRxMb(INST_CANCOM1,RX_MAILBOX,&dataInfo ,MessageId);
FLEXCAN_DRV_Receive(INST_CANCOM1, RX_MAILBOX, &recvBuff_1);
if(FLEXCAN_DRV_GetTransferStatus(INST_CANCOM1, RX_MAILBOX) ==STATUS_BUSY){};
ID_1 = recvBuff_1.msgId
FLEXCAN_DRV_Receive(INST_CANCOM1, RX_MAILBOX, &recvBuff_2);
if(FLEXCAN_DRV_GetTransferStatus(INST_CANCOM1, RX_MAILBOX) ==STATUS_BUSY){};
ID_2 = recvBuff_2.msgId
FLEXCAN_DRV_Receive(INST_CANCOM1, RX_MAILBOX, &recvBuff_3);
if(FLEXCAN_DRV_GetTransferStatus(INST_CANCOM1, RX_MAILBOX) ==STATUS_BUSY){};
ID_3 = recvBuff_3.msgId
Every time I get one/two id(s) by chance. But I want to receive multiple IDs one after another.
Do you have any ideas?
Thank you in advance.