Datasheet
SAM9263 [DATASHEET]
Atmel-6249N-ATARM-SAM9263-Datasheet_14-Mar-16
636
When a message is received, the corresponding handler can be invoked using CAN_MFIDx register and there is
no need to check masked bits:
unsigned int MFID0_register;
MFID0_register = Get_CAN_MFID0_Register();
// Get_CAN_MFID0_Register() returns the value of the CAN_MFID0 register
pHandler[MFID0_register]();
36.6.2.2 Receive Mailbox
When the CAN module receives a message, it looks for the first available mailbox with the lowest number and
compares the received message ID with the mailbox ID. If such a mailbox is found, then the message is stored in
its data registers. Depending on the configuration, the mailbox is disabled as long as the message has not been
acknowledged by the application (Receive only), or, if new messages with the same ID are received, then they
overwrite the previous ones (Receive with overwrite).
It is also possible to configure a mailbox in Consumer Mode. In this mode, after each transfer request, a remote
frame is automatically sent. The first answer received is stored in the corresponding mailbox data registers.
Several mailboxes can be chained to receive a buffer. They must be configured with the same ID in Receive Mode,
except for the last one, which can be configured in Receive with Overwrite Mode. The last mailbox can be used to
detect a buffer overflow.
36.6.2.3 Transmit Mailbox
When transmitting a message, the message length and data are written to the transmit mailbox with the correct
identifier. For each transmit mailbox, a priority is assigned. The controller automatically sends the message with
the highest priority first (set with the field PRIOR in CAN_MMRx).
It is also possible to configure a mailbox in Producer Mode. In this mode, when a remote frame is received, the
mailbox data are sent automatically. By enabling this mode, a producer can be done using only one mailbox
instead of two: one to detect the remote frame and one to send the answer.
Mailbox Object Type Description
Receive
The first message received is stored in mailbox data registers. Data remain available until the next transfer
request.
Receive with overwrite
The last message received is stored in mailbox data register. The next message always overwrites the
previous one. The application has to check whether a new message has not overwritten the current one
while reading the data registers.
Consumer
A remote frame is sent by the mailbox. The answer received is stored in mailbox data register. This extends
Receive mailbox features. Data remain available until the next transfer request.
Mailbox Object Type Description
Transmit
The message stored in the mailbox data registers will try to win the bus arbitration immediately or later
according to or not the Time Management Unit configuration (see Section 36.6.3).
The application is notified that the message has been sent or aborted.
Producer
The message prepared in the mailbox data registers will be sent after receiving the next remote frame. This
extends transmit mailbox features.