11.2.3.3 Receive Buffer Linking

Several receive buffers can be linked together to form a receive buffer array which acts almost like a receive FIFO. For a set of receive buffers to be linked together, the following conditions must be met:

  • All buffers of the same array must have the same message filter setting (AMR and ACR are identical).
  • The last buffer of an array may not have its link flag set.

When a receive buffer already contains a message (MsgAv = 1) and a new message arrives for this buffer, this message is discarded (rs_msg_loss Interrupt). To avoid this situation, several receive buffers can be linked together. When the CAN controller receives a new message, the receive message handler searches for a valid receive buffer. If one is found that is already full (MsgAv = 1) and the link flag is set (LF = 1); the search for a valid receive buffer continues. If no other buffer is found, the rx_msg_loss interrupt is set and the message is discarded.

It is possible to build several message arrays. Each of these arrays must use the same AMR and ACR. The receive buffer locations do not need to be contiguous.