MCP2515
FIGURE 4-3:
RECEIVE FLOW FLOWCHART
Start
Detect
Start of
No
Message?
Yes
Begin Loading Message into
Message Assembly Buffer (MAB)
Valid
Message
Received?
Generate
Error
Frame
No
Yes
Meets
a filter criteria
for RXB0?
Meets
a filter criteria
for RXB1?
No
Yes
Yes
No
Go to Start
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.
Is
Is
No
Yes
CANINTF.RX0IF = 0?
RXB0CTRL.BUKT = 1?
No
Yes
Is
No
Generate Overflow Error:
Set EFLG.RX0OVR
Generate Overflow Error:
Set EFLG.RX1OVR
Move message into RXB0
CANINTF.RX1IF = 0?
Set CANINTF.RX0IF = 1
Yes
Move message into RXB1
No
Is
Set RXB0CTRL.FILHIT <0>
according to which filter criteria
CANINTE.ERRIE = 1?
Set CANINTF.RX1IF = 1
Yes
Set RXB0CTRL.FILHIT <2:0>
according to which filter criteria
was met
Generate
Interrupt on INT
Go to Start
Yes
Yes
Generate
Interrupt on INT
CANINTE.RX1IE = 1?
CANINTE.RX0IE = 1?
RXB0
RXB1
Set CANSTAT <3:0> accord-
ing to which receive buffer
the message was loaded into
No
No
Are
Are
Yes
BFPCTRL.B1BFM = 1
Yes
BFPCTRL.B0BFM = 1
Set RXBF1
Pin = 0
Set RXBF0
Pin = 0
and
and
BF1CTRL.B1BFE = 1?
BF1CTRL.B0BFE = 1?
No
No
DS21801D-page 26
Preliminary
© 2005 Microchip Technology Inc.