38.8.1.1 Reading a Receive Message Object
Before reading a receive message object, the application must ensure that the RX FIFO is not empty by reading the CxFIFOSTAy register. The RX FIFO is not empty if TFNRFNIF is set.
The RX FIFO user address (CxFIFOUAy) points to the RAM of the next receive message object to read. R0 of the receive message object is read first, followed by R1, R2 and so on.
After the receive message object is read from RAM, the RX FIFO needs to be incremented by setting the UINC bit (CxFIFOCONy[8]). This will make the CAN Protocol module increment to the tail of the FIFO and update CxFIFOUAy.
Now the application can read the next message from the RX FIFO.
Byte | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | |||||
0 | SID[7:0] | ||||||||||||
1 | EID[4:0] | SID[10:8] | |||||||||||
2 | EID[12:5] | ||||||||||||
3 | - | - | - | EID[17:13] | |||||||||
4 | FILHIT[4:0] | - | - | ESI | |||||||||
5 | - | - | RTR | IDE | DLC[3:0] | ||||||||
6 | - | - | - | - | - | - | - | - | |||||
7 | - | - | - | - | - | - | - | - | |||||
8 | Receive Data Byte 0 | ||||||||||||
9 | Receive Data Byte 1 | ||||||||||||
10 | Receive Data Byte 2 | ||||||||||||
11 | Receive Data Byte 3 | ||||||||||||
12 | Receive Data Byte 4 | ||||||||||||
13 | Receive Data Byte 5 | ||||||||||||
14 | Receive Data Byte 6 | ||||||||||||
15 | Receive Data Byte 7 | ||||||||||||
………………………………………………………………………………………………………………………………………………… | |||||||||||||
m-3 | Receive Data Byte n-3 | ||||||||||||
m-2 | Receive Data Byte n-2 | ||||||||||||
m-1 | Receive Data Byte n-1 | ||||||||||||
m | Receive Data Byte n |
SID[10:0]: Standard Identifier bits
EID[17:0]: Extended Identifier bits
RTR: Remote Transmission Request bit
IDE: Identifier Extension bit - distinguishes between base and extended format.
DLC[3:0]: Data Length Code bits
RXMSGTS[31:0]: Receive Message Timestamp bits
- Receive Message Object: Data Bytes 0-n; payload size is configured individually with the PLSIZE[2:0] bits.
- RXMSGTSx only exists in objects where RXTSEN is set.