
DocID13284 Rev 2
447/564
UM0404
CAN modules
Acceptance filtering of received messages
When the arbitration and control field (Iden IDE + RTR + DLC) of an incoming
message is completely shifted into the Rx/Tx Shift Register of the CAN Core, the Message
Handler FSM starts the scanning of the Message RAM for a matching valid Message
Object.
To scan the Message RAM for a matching Message Object, the Acceptance Filtering unit is
loaded with the arbitration bits from the CAN Core shift register. Then the arbitration and
mask fields (including
MsgVal
,
UMask
,
NewDat
and
EoB
) of Message Object 1 are loaded
into the Acceptance Filtering unit and compared with the arbitration field from the shift
register. This is repeated with each following Message Object 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 FSM proceeds
depending on the type of frame (Data Frame or Remote Frame) received.
Reception of data frame
The Message Handler FSM 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 is
implemented to keep the data bytes connected with 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 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.
Reception of remote frame
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’
At the reception of a matching Remote Frame, the
TxRqst
bit of this Message Object is
set. The rest of the Message Object remains unchanged.
2.
Dir
= ‘1’ (direction =
transmit
),
RmtEn
= ‘0’,
UMask
= ‘0’
At the reception of a matching Remote Frame, the
TxRqst
bit of this Message Object
remains unchanged; the Remote Frame is ignored.
3.
Dir
= ‘1’ (direction =
transmit
),
RmtEn
= ‘0’,
UMask
= ‘1’
At the reception of a matching Remote Frame, the
TxRqst
bit of this Message Object is
reset. The arbitration and control field (Iden IDE + RTR + DLC) from the shift
register is stored into the Message Object in the Message RAM and the
NewDat
bit of
this Message Object is set. The data field of the Message Object remains unchanged;
the Remote Frame is treated similar to a received Data Frame.
Receive / transmit priority
The receive/transmit priority for the Message Objects is attached to the message number.
Message Object 1 has the highest priority, while Message Object 32 has the lowest priority.