Hello,
if you want to receive more than 32 messages via CAN and use the FlexCAN driver you can either do this by using a message box and setting an appropriate mask in order to receive more than one message ID with that message box. Or you can use the RX FIFO and set an appropriate ID table.
However, it seems like as soon as a message is received, the interrupt handler of the FlexCAN driver is called and the data from the message box or RX FIFO gets copied to the given buffer variable.
After this, the FlexCAN driver is not able to receive another message, unless the
FLEXCAN_DRV_RxFifo
or the
FLEXCAN_DRV_Receive
function is called again, which if you want to receive adjacent messages has to be done by the callback function of said interrupt handler.
In this case, what is the difference between the message box and the RX FIFO if the FIFO is not able to receive another message before calling the receive function again?