50.8.3.1.3 Chaining Mailboxes

Several mailboxes may be used to receive a buffer split into several messages with the same ID. In this case, the mailbox with the lowest number is serviced first. In the Receive and Receive with Overwrite modes, the CAN_MMRx.PRIOR field has no effect. If Mailbox 0 and Mailbox 5 accept messages with the same ID, the first message is received by Mailbox 0 and the second message is received by Mailbox 5. Mailbox 0 must be configured in Receive mode (i.e., the first message received is considered) and Mailbox 5 must be configured in Receive with Overwrite mode. Mailbox 0 cannot be configured in Receive with Overwrite mode; otherwise, all messages are accepted by this mailbox and Mailbox 5 is never serviced.

If several mailboxes are chained to receive a buffer split into several messages, all mailboxes except the last one (with the highest number) must be configured in Receive mode. The first message received is handled by the first mailbox, the second one is refused by the first mailbox and accepted by the second mailbox, the last message is accepted by the last mailbox and refused by previous ones (see the figure below).

Figure 50-13. Chaining Three Mailboxes to Receive a Buffer Split into Three Messages

If the number of mailboxes is not sufficient (the MMI flag of the last mailbox raises), the user must read each data received on the last mailbox in order to retrieve all the messages of the buffer split (see the figure below).

Figure 50-14. Chaining Three Mailboxes to Receive a Buffer Split into Four Messages