Data Sheet
Table Of Contents
- 1.0 Device Overview
- 2.0 Can Message Frames
- 3.0 Message Transmission
- 4.0 Message Reception
- 5.0 Bit Timing
- 6.0 Error Detection
- 7.0 Interrupts
- 8.0 Oscillator
- 9.0 RESET
- 10.0 Modes of Operation
- 11.0 Register Map
- 12.0 SPI™ Interface
- 12.1 Overview
- 12.2 Reset Instruction
- 12.3 Read Instruction
- 12.4 Read RX Buffer Instruction
- 12.5 Write Instruction
- 12.6 Load TX Buffer Instruction
- 12.7 Request-To-Send (RTS) Instruction
- 12.8 Read Status Instruction
- 12.9 RX Status Instruction
- 12.10 Bit Modify Instruction
- Figure 12-1: Bit Modify
- Table 12-1: SPI™ Instruction Set
- Figure 12-2: Read instruction
- Figure 12-3: Read RX Buffer Instruction
- Figure 12-4: Byte Write instruction
- Figure 12-5: Load TX Buffer
- Figure 12-6: Request-to-send (RTS) instruction
- Figure 12-7: BIT Modify instruction
- Figure 12-8: Read Status instruction
- Figure 12-9: RX StatUs Instruction
- Figure 12-10: SPI™ Input Timing
- Figure 12-11: SPI™ Output TIming
- 13.0 Electrical Characteristics
- 14.0 PackAging Information

© 2005 Microchip Technology Inc. Preliminary DS21801D-page 17
MCP2515
FIGURE 3-1: TRANSMIT MESSAGE FLOWCHART
Start
Is
CAN bus available
to start transmission?
No
Examine TXBnCTRL.TXP <1:0> to
Are any
TXBnCTRL.TXREQ
?
bits = 1
The message transmission
sequence begins when the
device determines that the
TXBnCTRL.TXREQ for any of
the transmit registers has been
set.
Clear:
TXBnCTRL.ABTF
TXBnCTRL.MLOA
TXBnCTRL.TXERR
Yes
is
TXBnCTRL.TXREQ=0
or CANCTRL.ABAT=1
Clearing the TxBnCTRL.TXREQ bit
while it is set, or setting the CAN-
CTRL.ABAT bit before the message
has started transmission, will abort
the message.
No
Transmit Message
Was
Message Transmitted
Successfully?
No
Yes
Clear TxBnCTRL.TXREQ
CANINTE.TXnIE=1?
Generate
Interrupt
Yes
Message
Yes
Set
Set
TxBnCTRL.TXERR
Lost
Determine Highest Priority Message
No
?
Set
TxB
NCTRL.MLOA
The CANINTE.TXnIE bit
determines if an interrupt
should be generated when
a message is successfully
transmitted.
GOTO START
CANTINF.TXnIF
Yes
No
Message error
or
Lost arbitration
Arbitration
Error
CANINTE.MEERE?
No
Generate
Interrupt
Yes
Set
CANTINF.MERRF
?