Hello,
The RxFIFO is 6-message deep and the application can read the received messages sequentially, in the order they were received, by repeatedly reading a Message Buffer structure at the output of the FIFO, which is the Message Buffer with the index 0 (zero).
If you install an event callback you can be notified each time a frame was received in the FIFO, or when the number of unread messages within the Rx FIFO is increased to 5 from 4 due to the reception of a new one (Rx FIFO Warning event), or when an incoming message was lost because the Rx FIFO is full (Rx FIFO Overflow event).
When you call FLEXCAN_DRV_RxFifo, RxFIFO interrupts are enabled and if multiple frames match the ID filter table, they will be stored in the internal FIFO structure. The application needs to call FLEXCAN_DRV_RxFifo for each frame stored in the FIFO in order to pop the data from the FIFO into the user buffer. You cannot read all the entries in the FIFO in a single operation.
Please let me know if you have any other questions.
Best regards,
Ana