Datasheet
651
SAM9263 [DATASHEET]
Atmel-6249N-ATARM-SAM9263-Datasheet_14-Mar-16
36.7.3.5 Transmission Handling
A mailbox is in Transmit Mode once the MOT field in the CAN_MMRx has been configured. Message ID and
Message Acceptance mask must be set before Receive Mode is enabled.
After Transmit Mode is enabled, the MRDY flag in the CAN_MSR is automatically set until the first command is
sent. When the MRDY flag is set, the software application can prepare a message to be sent by writing to the
CAN_MDx registers. The message is sent once the software asks for a transfer command setting the MTCR bit
and the message data length in the CAN_MCRx.
The MRDY flag remains at zero as long as the message has not been sent or aborted. It is important to note that
no access to the mailbox data register is allowed while the MRDY flag is cleared. An interrupt is pending for the
mailbox while the MRDY flag is set. This interrupt can be masked depending on the mailbox flag in the CAN_IMR
global register.
It is also possible to send a remote frame setting the MRTR bit instead of setting the MDLC field. The answer to
the remote frame is handled by another reception mailbox. In this case, the device acts as a consumer but with the
help of two mailboxes. It is possible to handle the remote frame emission and the answer reception using only one
mailbox configured in Consumer Mode. Refer to the section “Remote Frame Handling” on page 652.
Several messages can try to win the bus arbitration in the same time. The message with the highest priority is sent
first. Several transfer request commands can be generated at the same time by setting MBx bits in the CAN_TCR.
The priority is set in the PRIOR field of the CAN_MMRx. Priority 0 is the highest priority, priority 15 is the lowest
priority. Thus it is possible to use a part of the message ID to set the PRIOR field. If two mailboxes have the same
priority, the message of the mailbox with the lowest number is sent first. Thus if mailbox 0 and mailbox 5 have the
same priority and have a message to send at the same time, then the message of the mailbox 0 is sent first.
Setting the MACR bit in the CAN_MCRx aborts the transmission. Transmission for several mailboxes can be
aborted by writing MBx fields in the CAN_ACR. If the message is being sent when the abort command is set, then
the application is notified by the MRDY bit set and not the MABT in the CAN_MSRx. Otherwise, if the message
has not been sent, then the MRDY and the MABT are set in the CAN_MSR.
When the bus arbitration is lost by a mailbox message, the CAN controller tries to win the next bus arbitration with
the same message if this one still has the highest priority. Messages to be sent are re-tried automatically until they
win the bus arbitration. This feature can be disabled by setting the bit DRPT in the CAN_MR. In this case if the
message was not sent the first time it was transmitted to the CAN transceiver, it is automatically aborted. The
MABT flag is set in the CAN_MSRx until the next transfer command.
Figure 36-15 shows three MBx message attempts being made (MRDY of MBx set to 0).
The first MBx message is sent, the second is aborted and the last one is trying to be aborted but too late because
it has already been transmitted to the CAN transceiver.