23 #ifndef _MCP2515DFS_H_
24 #define _MCP2515DFS_H_
31 #define INT32U unsigned long
44 #define TIMEOUTVALUE 50
50 #define MCP_TXB_EXIDE_M 0x08
51 #define MCP_DLC_MASK 0x0F
52 #define MCP_RTR_MASK 0x40
54 #define MCP_RXB_RX_ANY 0x60
55 #define MCP_RXB_RX_EXT 0x40
56 #define MCP_RXB_RX_STD 0x20
57 #define MCP_RXB_RX_STDEXT 0x00
58 #define MCP_RXB_RX_MASK 0x60
59 #define MCP_RXB_BUKT_MASK (1<<2)
70 #define PRIO_HIGH 0x00
71 #define PRIO_NEXT 0x01
73 #define PRIO_MIN_HIGH 0x00
74 #define PRIO_MIN_NORMAL 0x01
75 #define PRIO_MIN_LOW 0x02
76 #define PRIO_MIN_LOWEST 0x03
81 #define MCP_TXB_TXBUFE_M 0x80
82 #define MCP_TXB_ABTF_M 0x40
83 #define MCP_TXB_MLOA_M 0x20
84 #define MCP_TXB_TXERR_M 0x10
85 #define MCP_TXB_TXREQ_M 0x08
86 #define MCP_TXB_TXIE_M 0x04
87 #define MCP_TXB_TXP10_M 0x03
89 #define MCP_TXB_RTR_M 0x40
90 #define MCP_RXB_IDE_M 0x08
91 #define MCP_RXB_RTR_M 0x40
93 #define MCP_STAT_RXIF_MASK (0x03)
94 #define MCP_STAT_RX0IF (1<<0)
95 #define MCP_STAT_RX1IF (1<<1)
97 #define MCP_EFLG_RX1OVR (1<<7)
98 #define MCP_EFLG_RX0OVR (1<<6)
99 #define MCP_EFLG_TXBO (1<<5)
100 #define MCP_EFLG_TXEP (1<<4)
101 #define MCP_EFLG_RXEP (1<<3)
102 #define MCP_EFLG_TXWAR (1<<2)
103 #define MCP_EFLG_RXWAR (1<<1)
104 #define MCP_EFLG_EWARN (1<<0)
105 #define MCP_EFLG_ERRORMASK (0xF8)
112 #define MCP_RXF0SIDH 0x00
113 #define MCP_RXF0SIDL 0x01
114 #define MCP_RXF0EID8 0x02
115 #define MCP_RXF0EID0 0x03
116 #define MCP_RXF1SIDH 0x04
117 #define MCP_RXF1SIDL 0x05
118 #define MCP_RXF1EID8 0x06
119 #define MCP_RXF1EID0 0x07
120 #define MCP_RXF2SIDH 0x08
121 #define MCP_RXF2SIDL 0x09
122 #define MCP_RXF2EID8 0x0A
123 #define MCP_RXF2EID0 0x0B
124 #define MCP_CANSTAT 0x0E
125 #define MCP_CANCTRL 0x0F
126 #define MCP_RXF3SIDH 0x10
127 #define MCP_RXF3SIDL 0x11
128 #define MCP_RXF3EID8 0x12
129 #define MCP_RXF3EID0 0x13
130 #define MCP_RXF4SIDH 0x14
131 #define MCP_RXF4SIDL 0x15
132 #define MCP_RXF4EID8 0x16
133 #define MCP_RXF4EID0 0x17
134 #define MCP_RXF5SIDH 0x18
135 #define MCP_RXF5SIDL 0x19
136 #define MCP_RXF5EID8 0x1A
137 #define MCP_RXF5EID0 0x1B
140 #define MCP_RXM0SIDH 0x20
141 #define MCP_RXM0SIDL 0x21
142 #define MCP_RXM0EID8 0x22
143 #define MCP_RXM0EID0 0x23
144 #define MCP_RXM1SIDH 0x24
145 #define MCP_RXM1SIDL 0x25
146 #define MCP_RXM1EID8 0x26
147 #define MCP_RXM1EID0 0x27
148 #define MCP_CNF3 0x28
149 #define MCP_CNF2 0x29
150 #define MCP_CNF1 0x2A
151 #define MCP_CANINTE 0x2B
152 #define MCP_CANINTF 0x2C
153 #define MCP_EFLG 0x2D
154 #define MCP_TXB0CTRL 0x30
155 #define MCP_TXB1CTRL 0x40
156 #define MCP_TXB2CTRL 0x50
157 #define MCP_RXB0CTRL 0x60
158 #define MCP_RXB0SIDH 0x61
159 #define MCP_RXB1CTRL 0x70
160 #define MCP_RXB1SIDH 0x71
163 #define MCP_TX_INT 0x1C // Enable all transmit interrup ts
164 #define MCP_TX01_INT 0x0C // Enable TXB0 and TXB1 interru pts
165 #define MCP_RX_INT 0x03 // Enable receive interrupts
166 #define MCP_NO_INT 0x00 // Disable all interrupts
168 #define MCP_TX01_MASK 0x14
169 #define MCP_TX_MASK 0x54
175 #define MCP_WRITE 0x02
177 #define MCP_READ 0x03
179 #define MCP_BITMOD 0x05
181 #define MCP_LOAD_TX0 0x40
182 #define MCP_LOAD_TX1 0x42
183 #define MCP_LOAD_TX2 0x44
185 #define MCP_RTS_TX0 0x81
186 #define MCP_RTS_TX1 0x82
187 #define MCP_RTS_TX2 0x84
188 #define MCP_RTS_ALL 0x87
190 #define MCP_READ_RX0 0x90
191 #define MCP_READ_RX1 0x94
193 #define MCP_READ_STATUS 0xA0
195 #define MCP_RX_STATUS 0xB0
197 #define MCP_RESET 0xC0
204 #define MODE_NORMAL 0x00
205 #define MODE_SLEEP 0x20
206 #define MODE_LOOPBACK 0x40
207 #define MODE_LISTENONLY 0x60
208 #define MODE_CONFIG 0x80
209 #define MODE_POWERUP 0xE0
210 #define MODE_MASK 0xE0
211 #define ABORT_TX 0x10
212 #define MODE_ONESHOT 0x08
213 #define CLKOUT_ENABLE 0x04
214 #define CLKOUT_DISABLE 0x00
215 #define CLKOUT_PS1 0x00
216 #define CLKOUT_PS2 0x01
217 #define CLKOUT_PS4 0x02
218 #define CLKOUT_PS8 0x03
236 #define SAMPLE_1X 0x00
237 #define SAMPLE_3X 0x40
244 #define SOF_ENABLE 0x80
245 #define SOF_DISABLE 0x00
246 #define WAKFIL_ENABLE 0x40
247 #define WAKFIL_DISABLE 0x00
254 #define MCP_RX0IF 0x01
255 #define MCP_RX1IF 0x02
256 #define MCP_TX0IF 0x04
257 #define MCP_TX1IF 0x08
258 #define MCP_TX2IF 0x10
259 #define MCP_ERRIF 0x20
260 #define MCP_WAKIF 0x40
261 #define MCP_MERRF 0x80
266 #define MCP_16MHz_1000kBPS_CFG1 (0x00)
267 #define MCP_16MHz_1000kBPS_CFG2 (0xD0)
268 #define MCP_16MHz_1000kBPS_CFG3 (0x82)
270 #define MCP_16MHz_500kBPS_CFG1 (0x00)
271 #define MCP_16MHz_500kBPS_CFG2 (0xF0)
272 #define MCP_16MHz_500kBPS_CFG3 (0x86)
274 #define MCP_16MHz_250kBPS_CFG1 (0x41)
275 #define MCP_16MHz_250kBPS_CFG2 (0xF1)
276 #define MCP_16MHz_250kBPS_CFG3 (0x85)
278 #define MCP_16MHz_200kBPS_CFG1 (0x01)
279 #define MCP_16MHz_200kBPS_CFG2 (0xFA)
280 #define MCP_16MHz_200kBPS_CFG3 (0x87)
282 #define MCP_16MHz_125kBPS_CFG1 (0x03)
283 #define MCP_16MHz_125kBPS_CFG2 (0xF0)
284 #define MCP_16MHz_125kBPS_CFG3 (0x86)
286 #define MCP_16MHz_100kBPS_CFG1 (0x03)
287 #define MCP_16MHz_100kBPS_CFG2 (0xFA)
288 #define MCP_16MHz_100kBPS_CFG3 (0x87)
290 #define MCP_16MHz_80kBPS_CFG1 (0x03)
291 #define MCP_16MHz_80kBPS_CFG2 (0xFF)
292 #define MCP_16MHz_80kBPS_CFG3 (0x87)
294 #define MCP_16MHz_50kBPS_CFG1 (0x07)
295 #define MCP_16MHz_50kBPS_CFG2 (0xFA)
296 #define MCP_16MHz_50kBPS_CFG3 (0x87)
298 #define MCP_16MHz_40kBPS_CFG1 (0x07)
299 #define MCP_16MHz_40kBPS_CFG2 (0xFF)
300 #define MCP_16MHz_40kBPS_CFG3 (0x87)
302 #define MCP_16MHz_31k25BPS_CFG1 (0x0F)
303 #define MCP_16MHz_31k25BPS_CFG2 (0xF1)
304 #define MCP_16MHz_31k25BPS_CFG3 (0x85)
306 #define MCP_16MHz_20kBPS_CFG1 (0x0F)
307 #define MCP_16MHz_20kBPS_CFG2 (0xFF)
308 #define MCP_16MHz_20kBPS_CFG3 (0x87)
310 #define MCP_16MHz_10kBPS_CFG1 (0x1F)
311 #define MCP_16MHz_10kBPS_CFG2 (0xFF)
312 #define MCP_16MHz_10kBPS_CFG3 (0x87)
314 #define MCP_16MHz_5kBPS_CFG1 (0x3F)
315 #define MCP_16MHz_5kBPS_CFG2 (0xFF)
316 #define MCP_16MHz_5kBPS_CFG3 (0x87)
321 #define MCPDEBUG_TXBUF (0)
322 #define MCP_N_TXBUFFERS (3)
324 #define MCP_RXBUF_0 (MCP_RXB0SIDH)
325 #define MCP_RXBUF_1 (MCP_RXB1SIDH)
328 #define MCP2515_SELECT() digitalWrite(SPICS, LOW)
329 #define MCP2515_UNSELECT() digitalWrite(SPICS, HIGH)
331 #define MCP2515_OK (0)
332 #define MCP2515_FAIL (1)
333 #define MCP_ALLTXBUSY (2)
339 #define CANSENDTIMEOUT (200)
344 #define CANAUTOPROCESS (1)
345 #define CANAUTOON (1)
346 #define CANAUTOOFF (0)
348 #define CAN_STDID (0)
349 #define CAN_EXTID (1)
351 #define CANDEFAULTIDENT (0x55CC)
352 #define CANDEFAULTIDENTEXT (CAN_EXTID)
357 #define CAN_31K25BPS 4
361 #define CAN_100KBPS 8
362 #define CAN_125KBPS 9
363 #define CAN_200KBPS 10
364 #define CAN_250KBPS 11
365 #define CAN_500KBPS 12
366 #define CAN_1000KBPS 13
369 #define CAN_FAILINIT (1)
370 #define CAN_FAILTX (2)
371 #define CAN_MSGAVAIL (3)
372 #define CAN_NOMSG (4)
373 #define CAN_CTRLERROR (5)
374 #define CAN_GETTXBFTIMEOUT (6)
375 #define CAN_SENDMSGTIMEOUT (7)
376 #define CAN_FAIL (0xff)
378 #define CAN_MAX_CHAR_IN_MESSAGE (8)