CAN FD v2.0
75
PG223 December 5, 2018
Chapter 3:
Designing with the Core
RX – Host Actions
1. The Host prepares one or more receive buffers for message reception as follows:
a. If a Buffer is Inactive:
- Write the required ID into the ID field of the Receive Buffer_i element in the
block RAM.
- Write the corresponding Mask register for the Receive Buffer_i element in the
block RAM.
b. If a Buffer is in Active/Full/Invalid state and the Host wants to change its ID/Mask:
- Change the buffer state to Inactive.
- Write the required ID into the ID field of the Receive Buffer_i element in the
block RAM.
- Write the corresponding Mask register for the Receive Buffer_i element in the
block RAM.
2. Enable interrupt generation as required.
3. Change the buffer status from
Inactive
to
Active
. The Host can change Inactive to
Active status for many buffers in one write to the RCS register.
4. Wait for interrupt, or poll the RCS registers to know the buffer status.
5. The Host can read messages from the RX block RAM which has
Full
status. After the
read, the Host can change the buffer status back to Active (if you wish to continue with
the same ID/Mask) or Inactive (if you wish to reprogram the ID/Mask).
Note:
The CAN FD can read the ID field of the Full buffer for the
current
match process so the
Host should not change the Buffer ID when status is Full.
6. If required, the Host can discard the message without reading by changing the status
from Full to Active/Inactive.
Note:
Whenever a new message is received successfully and written in any of the receive buffers, the
RXOK
bit is set in the ISR register and the
RXLRM_BI
field captures the mailbox index where the
message was stored. There is a provision to get interrupt for any selective buffer or buffers. In case
of overflow, the
RXOFLW
bit is set in the ISR. The
RXOFLW_BI
field in the ISR register captures the
overflow index corresponding to the last overflow event and maintains it until the
RXOFLW
bit is
cleared.
RX – Core Actions
1. The CAN FD searches Active buffers starting from the lowest index to match the
incoming message ID. When no match is found in Active Empty buffers but a match is
found in a Full buffer, the overflow condition is generated and the matching buffer index
is captured in the ISR. When there is also no match in the full buffers, the message is
discarded without indication.