Datasheet
918
SAM9X25 [DATASHEET]
11054E–ATARM–10-Mar-2014
Figure 41-17.Producer Handling
Consumer Configuration
A mailbox is in Consumer Mode once the MOT field in the CAN_MMRx register has been configured. Message ID and
Message Acceptance masks must be set before Receive Mode is enabled.
After Consumer Mode is enabled, the MRDY flag in the CAN_MSR register is automatically cleared until the first transfer
request command. The software application sends a remote frame by setting the MTCR bit in the CAN_MCRx register or
the MBx bit in the global CAN_TCR register.
The application is notified of the answer by the MRDY flag set in the
CAN_MSRx register. The application can read the data contents in the CAN_MDHx and CAN_MDLx registers. An
interrupt is pending for the mailbox while the MRDY flag is set. This interrupt can be masked according to the mailbox
flag in the CAN_IMR global register.
The MRTR bit in the CAN_MCRx register has no effect. This field is used only when using Transmit Mode.
After a remote frame has been sent, the consumer mailbox functions as a reception mailbox. The first message received
is stored in the mailbox data registers. If other messages intended for this mailbox have been sent while the MRDY flag
is set in the CAN_MSRx register, they will be lost. The application is notified by reading the MMI field in the CAN_MSRx
register. The read operation automatically clears the MMI flag.
If several messages are answered by the Producer, the CAN controller may have one mailbox in consumer
configuration, zero or several mailboxes in Receive Mode and one mailbox in Receive with Overwrite Mode. In this case,
the consumer mailbox must have a lower number than the Receive with Overwrite mailbox. The transfer command can
be triggered for all mailboxes at the same time by setting several MBx fields in the CAN_TCR register.
Figure 41-18.Consumer Handling
MTCR
(CAN_MCRx)
MRDY
(CAN_MSRx)
CAN BUS
Remote Frame Message 1
Message 1
Message 2
(CAN_MDLx
CAN_MDHx)
MMI
(CAN_MSRx)
Remote Frame Remote Frame
Message 2
Reading CAN_MSRx
MTCR
(CAN_MCRx)
MRDY
(CAN_MSRx)
CAN BUS
Remote Frame
Message x
Message y
Message y
(CAN_MDLx
CAN_MDHx)
MMI
(CAN_MSRx)
Remote Frame
Message x