Functional Description
23.3.15.10 Requesting New Data for a Receive Object
By means of a remote frame, the CPU may request another CAN node to provide new data for a receive
object. Setting the TxRqst bit of a receive object will cause the transmission of a remote frame with the
identifier of the receive object. This remote frame triggers the other CAN node to start the transmission of
the matching data frame. If the matching data frame is received before the remote frame could be
transmitted, the TxRqst bit is automatically reset. Setting the TxRqst bit without changing the contents of a
message object requires the value 0x84 in bits [23:16] of the command register.
23.3.15.11 Storing Received Messages in FIFO Buffers
Several message objects may be grouped to form one or more FIFO buffers. Each FIFO buffer configured
to store received messages with a particular (group of) identifier(s). Arbitration and mask registers of the
FIFO buffer’s message objects are identical. The end of buffer (EoB) bits of all but the last of the FIFO
buffer’s message objects are ‘0’; in the last one the EoB bit is ‘1.’
Received messages with identifiers matching to a FIFO buffer are stored into a message object of this
FIFO buffer, starting with the message object with the lowest message number. When a message is
stored into a message object of a FIFO buffer, the NewDat bit of this message object is set. By setting
NewDat while EoB is ‘0’, the message object is locked for further write accesses by the message handler
until the CPU has cleared the NewDat bit.
Messages are stored into a FIFO buffer until the last message object of this FIFO buffer is reached. If
none of the preceding message objects is released by writing NewDat to ‘0,’ all further messages for this
FIFO buffer will be written into the last message object of the FIFO buffer (EoB = ‘1’) and therefore
overwrite previous messages in this message object.
23.3.15.12 Reading From a FIFO Buffer
Several messages may be accumulated in a set of message objects which are concatenated to form a
FIFO buffer before the application program is required (in order to avoid the loss of data) to empty the
buffer.
A FIFO buffer of length N will store –1 plus the last received message since last time it was cleared.
A FIFO buffer is cleared by reading and resetting the NewDat bits of all its message objects, starting at
the FIFO Object with the lowest message number. This should be done in a subroutine following the
example shown in
NOTE:
All message objects of a FIFO buffer need to be read and cleared before the next batch of
messages can be stored. Otherwise, true FIFO functionality can not be guaranteed, since
the message objects of a partly read buffer will be re-filled according to the normal
(descending) priority.
Reading from a FIFO buffer message object and resetting its NewDat bit is handled the same way as
reading from a single message object.
3905
SPRUH73H – October 2011 – Revised April 2013
Controller Area Network (CAN)
Copyright © 2011–2013, Texas Instruments Incorporated