Message Handling
1564
SPRUHE8E – October 2012 – Revised November 2019
Copyright © 2012–2019, Texas Instruments Incorporated
M3 Controller Area Network (CAN)
23.11.5 Changing a Transmit Object
If the number of implemented message objects is not sufficient to be used as permanent message objects
only, the transmit objects may be managed dynamically. The CPU can write the whole message
(Arbitration,
Control, and Data) into the Interface register. The bits [23:16] of the Command register can be set to 0xB7
for the transfer of the whole message object content into the message object. Neither MsgVal nor TxRqst
have to be reset before this operation.
If a previously requested transmission of this message object is not completed but already in progress, it
will be continued; however it will not be repeated if it is disturbed.
To only update the data bytes of a message to be transmitted, bits [23:16] of the Command register
should be set to 0x87.
NOTE:
After the update of the transmit object, the interface register set will contain a copy of the
actual contents of the object, including the part that had not been updated.
23.11.6 Acceptance Filtering of Received Messages
When the arbitration and control bits (Iden IDE + RTR + DLC) of an incoming message is
completely shifted into the shift register of the CAN Core, the message handler starts to scan of the
message RAM for a matching valid message object:
•
The acceptance filtering unit is loaded with the arbitration bits from the CAN Core shift register.
•
Then the arbitration and mask bits (including MsgVal, UMask, NewDat, and EoB) of Message Object 1
are loaded into the Acceptance Filtering unit and are compared with the arbitration bits from the shift
register. This is repeated for all following message objects until a matching message object is found, or
until the end of the Message RAM is reached.
•
If a match occurs, the scanning is stopped and the message handler proceeds depending on the type
of the frame (data frame or remote frame) received.
23.11.7 Reception of Data Frames
The message handler stores the message from the CAN Core shift register into the respective message
object in the Message RAM. Not only the data bytes, but all arbitration bits and the data length code are
stored into the corresponding message object. This ensures that the data bytes stay associated to the
identifier even if arbitration mask registers are used.
The NewDat bit is set to indicate that new data (not yet seen by the CPU) has been received. The CPU
should reset the NewDat bit when it reads the message object. If at the time of the reception the NewDat
bit was already set, MsgLst is set to indicate that the previous data (supposedly not seen by the CPU) is
lost. If the RxIE bit is set, the IntPnd bit is set, causing the Interrupt register to point to this message
object.
The TxRqst bit of this message object is reset to prevent the transmission of a remote frame, while the
requested data frame has just been received.
23.11.8 Reception of Remote Frames
When a remote frame is received, three different configurations of the matching message object have to
be considered:
1. Dir = '1' (direction = transmit), RmtEn = '1', UMask = '1' or '0'
The TxRqst bit of this message object is set at the reception of a matching remote frame. The rest of
the message object remains unchanged.
2. Dir = '1' (direction = transmit), RmtEn = '0', UMask = '0'
The remote frame is ignored, this message object remains unchanged.
3. Dir = '1' (direction = transmit), RmtEn = '0', UMask = '1'
The remote frame is treated similar to a received data frame. At the reception of a matching remote