Datasheet
MCP2515
DS20001801J-page 26 2003-2019 Microchip Technology Inc.
FIGURE 4-3: RECEIVE FLOWCHART
Set RXBF0
Start
Detect
Start of
Message?
Valid
Message
Received?
Generate
Error
Meets
a Filter Criteria
Is
RX0IF (CANINTF)
Go to Start
Move Message into RXB0
Set FILHIT[2:0] (RXB1CTRL[2:0])
Is
RX1IF (CANINTF[3])
Move Message into RXB1
Set RX1IF (CANINTF[3]) = 1
Yes
No
Generate
Interrupt on
INT
Yes
Yes
No
No
Yes
Yes
No
No
Yes
Yes
Frame
No
Yes
No
Begin Loading Message into
Message Assembly Buffer (MAB)
According to which Filter Criteria
was Met
Set FILHIT0 (RXB0CTRL[0])
According to Which Filter Criteria
Set CANSTAT[3:0] according to
which receive buffer the
message was loaded into
Is
BUKT (RXB0CTRL[2])
Generate Overflow Error:
Set RX1OVR (EFLG[7])
Is
ERRIE (CANINTE[5])
No
Go to Start
Yes
No
Are
B0BFM (BFPCTRL[0]) = 1
B0BFE (BFPCTRL[2]) = 1?
and
Pin = 0
No
Set RXBF1
Pin = 0
No
Yes
Yes
RX0IE (CANINTE[0])
RX1IE (CANINTE[1])
RXB1
RXB0
Set RX0OVR (EFLG[6])
Generate Overflow Error:
Set RX0IF (CANINTF[0]) = 1
Are
B1BFM (BFPCTRL[1]) = 1
B1BFE (BF1CTRL[3]) = 1?
and
Meets
a Filter Criteria
for RXB1?
for RXB0?
No
Yes
Generate
Interrupt on
INT
Determines if the Receive
register is empty and able
to accept a new message.
Determines if RXB0 can roll
over into RXB1 if it is full.
= 0?
= 1?
= 1?
= 1?
= 0?
= 1?