728
Chapter 34 CAN Controller
4.CAN Application
ID18, ID17 - ID0 can then be disregarded. When a Data Frame with an 11-bit Identifier is received, ID17 - ID0
will be set to ‘0’.
If the RxIE bit is set, the IntPnd bit will be set when a received Data Frame is accepted and stored in the
Message Object.
The Data Length Code (DLC3-0) is given by the application. When the Message Handler stores a Data Frame
in the Message Object, it will store the received Data Length Code and eight data bytes. If the Data Length
Code is less than 8, the remaining bytes of the Message Object will be overwritten by non specified values.
The Mask Registers (Msk28-0, UMask, MXtd, and MDir bits) may be used (UMask=’1’) to allow groups of
Data Frames with similar identifiers to be accepted. For details see section 4.6 “Reception of Data Frame” on
page 726.. The Dir bit should not be masked in typical applications.
4.12 Handling of Received Messages
The CPU may read a received message any time via the IFx Interface registers, the data consistency is
guaranteed by the Message Handler state machine.
Typically the CPU will write first 0x007F to the Command Mask Register and then the number of the Message
Object to the Command Request Register. That combination will transfer the whole received message from
the Message RAM into the Message Buffer Register. Additionally, the bits NewDat and IntPnd are cleared in
the Message RAM (not in the Message Buffer).
If the Message Object uses masks for acceptance filtering, the arbitration bits show which of the matching
messages have been received.
The actual value of NewDat shows whether a new message has been received since last time this Message
Object was read. The actual value of MsgLst shows whether more than one message has been received
since last time this Message Object was read. MsgLst will not be automatically reset.
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
receive object’s identifier. 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.
4.13 Configuration of a FIFO Buffer
With the exception of the EoB bit, the configuration of Receive Objects belonging to a FIFO Buffer is the same
as the configuration of a (single) Receive Object, see section 4.11 “Configuration of a Receive Object” on
page 727.
To concatenate two or more Message Objects into a FIFO Buffer, the identifiers and masks (if used) of these
Message Objects have to be programmed to matching values. Due to the implicit priority of the Message
Objects, the Message Object with the lowest number will be the first Message Object of the FIFO Buffer. The
EoB bit of all Message Objects of a FIFO Buffer except the last have to be programmed to zero. The EoB bits
of the last Message Object of a FIFO Buffer is set to one, configuring it as the End of the Block.
4.14 Reception of Messages with FIFO Buffers
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 written the NewDat bit back to 0.
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 and therefore overwrite previous messages.