Datasheet
635
SAM9263 [DATASHEET]
Atmel-6249N-ATARM-SAM9263-Datasheet_14-Mar-16
dynamically reconfigured later so that the mailbox can handle a new message family. Several mailboxes can be
configured with the same ID.
Each mailbox can be configured in receive or in transmit mode independently. The mailbox object type is defined
in the MOT field of the CAN_MMRx.
36.6.2.1 Message Acceptance Procedure
If the MIDE field in the CAN_MIDx register is set, the mailbox can handle the extended format identifier; otherwise,
the mailbox handles the standard format identifier. Once a new message is received, its ID is masked with the
CAN_MAMx value and compared with the CAN_MIDx value. If accepted, the message ID is copied to the
CAN_MIDx register.
Figure 36-3. Message Acceptance Procedure
If a mailbox is dedicated to receiving several messages (a family of messages) with different IDs, the acceptance
mask defined in the CAN_MAMx register must mask the variable part of the ID family. Once a message is
received, the application must decode the masked bits in the CAN_MIDx. To speed up the decoding, masked bits
are grouped in the family ID register (CAN_MFIDx).
For example, if the following message IDs are handled by the same mailbox:
ID0 101000100100010010000100 0 11 00b
ID1 101000100100010010000100 0 11 01b
ID2 101000100100010010000100 0 11 10b
ID3 101000100100010010000100 0 11 11b
ID4 101000100100010010000100 1 11 00b
ID5 101000100100010010000100 1 11 01b
ID6 101000100100010010000100 1 11 10b
ID7 101000100100010010000100 1 11 11b
The CAN_MIDx and CAN_MAMx of Mailbox x must be initialized to the corresponding values:
CAN_MIDx = 001 101000100100010010000100 x 11 xxb
CAN_MAMx = 001 111111111111111111111111 0 11 00b
If Mailbox x receives a message with ID6, then CAN_MIDx and CAN_MFIDx are set:
CAN_MIDx = 001 101000100100010010000100 1 11 10b
CAN_MFIDx = 00000000000000000000000000000110b
If the application associates a handler for each message ID, it may define an array of pointers to functions:
void (*pHandler[8])(void);
CAN_MIDx
CAN_MAMx
Message Received
& &
==
Message Accepted
Message Refused
No
Yes
CAN_MFIDx