Loading...
Searching...
No Matches
mcp2515_defines.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 OTA keys S.A.
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
21
22#include <stdint.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
32#define MCP2515_RXF0SIDH 0x00
33#define MCP2515_RXF0SIDL 0x01
34#define MCP2515_RXF0EID8 0x02
35#define MCP2515_RXF0EID0 0x03
36
37#define MCP2515_RXF1SIDH 0x04
38#define MCP2515_RXF1SIDL 0x05
39#define MCP2515_RXF1EID8 0x06
40#define MCP2515_RXF1EID0 0x07
41
42#define MCP2515_RXF2SIDH 0x08
43#define MCP2515_RXF2SIDL 0x09
44#define MCP2515_RXF2EID8 0x0A
45#define MCP2515_RXF2EID0 0x0B
46
47#define MCP2515_BFPCTRL 0x0C
48#define MCP2515_TXRTSCTRL 0x0D
49#define MCP2515_CANSTAT 0x0E
50#define MCP2515_CANCTRL 0x0F
51
52#define MCP2515_RXF3SIDH 0x10
53#define MCP2515_RXF3SIDL 0x11
54#define MCP2515_RXF3EID8 0x12
55#define MCP2515_RXF3EID0 0x13
56
57#define MCP2515_RXF4SIDH 0x14
58#define MCP2515_RXF4SIDL 0x15
59#define MCP2515_RXF4EID8 0x16
60#define MCP2515_RXF4EID0 0x17
61
62#define MCP2515_RXF5SIDH 0x18
63#define MCP2515_RXF5SIDL 0x19
64#define MCP2515_RXF5EID8 0x1A
65#define MCP2515_RXF5EID0 0x1B
66
67#define MCP2515_TEC 0x1C
68#define MCP2515_REC 0x1D
69
70#define MCP2515_RXM0SIDH 0x20
71#define MCP2515_RXM0SIDL 0x21
72#define MCP2515_RXM0EID8 0x22
73#define MCP2515_RXM0EID0 0x23
74
75#define MCP2515_RXM1SIDH 0x24
76#define MCP2515_RXM1SIDL 0x25
77#define MCP2515_RXM1EID8 0x26
78#define MCP2515_RXM1EID0 0x27
79
80#define MCP2515_CNF3 0x28
81#define MCP2515_CNF2 0x29
82#define MCP2515_CNF1 0x2A
83#define MCP2515_CANINTE 0x2B
84
85#define MCP2515_CANINTF 0x2C
86#define MCP2515_EFLG 0x2D
87
88#define MCP2515_TXB0CTRL 0x30
89#define MCP2515_TXB0SIDH 0x31
90#define MCP2515_TXB0SIDL 0x32
91#define MCP2515_TXB0EID8 0x33
92#define MCP2515_TXB0EID0 0x34
93#define MCP2515_TXB0DLC 0x35
94#define MCP2515_TXB0D0 0x36
95#define MCP2515_TXB0D1 0x37
96#define MCP2515_TXB0D2 0x38
97#define MCP2515_TXB0D3 0x39
98#define MCP2515_TXB0D4 0x3A
99#define MCP2515_TXB0D5 0x3B
100#define MCP2515_TXB0D6 0x3C
101#define MCP2515_TXB0D7 0x3D
102
103#define MCP2515_TXB1CTRL 0x40
104#define MCP2515_TXB1SIDH 0x41
105#define MCP2515_TXB1SIDL 0x42
106#define MCP2515_TXB1EID8 0x43
107#define MCP2515_TXB1EID0 0x44
108#define MCP2515_TXB1DLC 0x45
109#define MCP2515_TXB1D0 0x46
110#define MCP2515_TXB1D1 0x47
111#define MCP2515_TXB1D2 0x48
112#define MCP2515_TXB1D3 0x49
113#define MCP2515_TXB1D4 0x4A
114#define MCP2515_TXB1D5 0x4B
115#define MCP2515_TXB1D6 0x4C
116#define MCP2515_TXB1D7 0x4D
117
118#define MCP2515_TXB2CTRL 0x50
119#define MCP2515_TXB2SIDH 0x51
120#define MCP2515_TXB2SIDL 0x52
121#define MCP2515_TXB2EID8 0x53
122#define MCP2515_TXB2EID0 0x54
123#define MCP2515_TXB2DLC 0x55
124#define MCP2515_TXB2D0 0x56
125#define MCP2515_TXB2D1 0x57
126#define MCP2515_TXB2D2 0x58
127#define MCP2515_TXB2D3 0x59
128#define MCP2515_TXB2D4 0x5A
129#define MCP2515_TXB2D5 0x5B
130#define MCP2515_TXB2D6 0x5C
131#define MCP2515_TXB2D7 0x5D
132
133#define MCP2515_RXB0CTRL 0x60
134#define MCP2515_RXB0SIDH 0x61
135#define MCP2515_RXB0SIDL 0x62
136#define MCP2515_RXB0EID8 0x63
137#define MCP2515_RXB0EID0 0x64
138#define MCP2515_RXB0DLC 0x65
139#define MCP2515_RXB0D0 0x66
140#define MCP2515_RXB0D1 0x67
141#define MCP2515_RXB0D2 0x68
142#define MCP2515_RXB0D3 0x69
143#define MCP2515_RXB0D4 0x6A
144#define MCP2515_RXB0D5 0x6B
145#define MCP2515_RXB0D6 0x6C
146#define MCP2515_RXB0D7 0x6D
147
148#define MCP2515_RXB1CTRL 0x70
149#define MCP2515_RXB1SIDH 0x71
150#define MCP2515_RXB1SIDL 0x72
151#define MCP2515_RXB1EID8 0x73
152#define MCP2515_RXB1EID0 0x74
153#define MCP2515_RXB1DLC 0x75
154#define MCP2515_RXB1D0 0x76
155#define MCP2515_RXB1D1 0x77
156#define MCP2515_RXB1D2 0x78
157#define MCP2515_RXB1D3 0x79
158#define MCP2515_RXB1D4 0x7A
159#define MCP2515_RXB1D5 0x7B
160#define MCP2515_RXB1D6 0x7C
161#define MCP2515_RXB1D7 0x7D
163
168#define MCP2515_BFPCTRL_B0BFM 0x01
169#define MCP2515_BFPCTRL_B1BFM 0x02
170#define MCP2515_BFPCTRL_B0BFE 0x04
171#define MCP2515_BFPCTRL_B1BFE 0x08
172
173#define MCP2515_BFPCTRL_B0BFS 0x10
174#define MCP2515_BFPCTRL_B1BFS 0x20
175
176#define MCP2515_TXRTSCTRL_B0RTSM 0x01
177#define MCP2515_TXRTSCTRL_B1RTSM 0x02
178#define MCP2515_TXRTSCTRL_B2RTSM 0x04
179#define MCP2515_TXRTSCTRL_B0RTS 0x08
180#define MCP2515_TXRTSCTRL_B1RTS 0x10
181#define MCP2515_TXRTSCTRL_B2RTS 0x20
182
183#define MCP2515_CANSTAT_ICOD0 0x02
184#define MCP2515_CANSTAT_ICOD1 0x04
185#define MCP2515_CANSTAT_ICOD2 0x08
186#define MCP2515_CANSTAT_OPMOD0 0x20
187#define MCP2515_CANSTAT_OPMOD1 0x40
188#define MCP2515_CANSTAT_OPMOD2 0x80
189
190#define MCP2515_CANSTAT_ICOD_MASK 0x0E
191
192#define MCP2515_CANSTAT_OPMOD_MASK 0xE0
193#define MCP2515_CANSTAT_OPMOD_CONFIGURATION MCP2515_CANSTAT_OPMOD2
194#define MCP2515_CANSTAT_OPMOD_NORMAL 0x00
195#define MCP2515_CANSTAT_OPMOD_SLEEP MCP2515_CANSTAT_OPMOD0
196#define MCP2515_CANSTAT_OPMOD_LOOPBACK MCP2515_CANSTAT_OPMOD1
197#define MCP2515_CANSTAT_OPMOD_LISTEN_ONLY (MCP2515_CANSTAT_OPMOD1 | \
198 MCP2515_CANSTAT_OPMOD0)
199
200#define MCP2515_CANCTRL_CLKPRE0 0x01
201#define MCP2515_CANCTRL_CLKPRE1 0x02
202#define MCP2515_CANCTRL_CLKEN 0x04
203#define MCP2515_CANCTRL_OSM 0x08
204#define MCP2515_CANCTRL_ABAT 0x10
205#define MCP2515_CANCTRL_REQOP0 0x20
206#define MCP2515_CANCTRL_REQOP1 0x40
207#define MCP2515_CANCTRL_REQOP2 0x80
208
209#define MCP2515_CANCTRL_CLKPRE_MASK (MCP2515_CANCTRL_CLKPRE1 | \
210 MCP2515_CANCTRL_CLKPRE0)
211
212#define MCP2515_CANCTRL_REQOP_MASK 0xE0
213#define MCP2515_CANCTRL_REQOP_CONFIGURATION MCP2515_CANCTRL_REQOP2
214#define MCP2515_CANCTRL_REQOP_NORMAL 0x00
215#define MCP2515_CANCTRL_REQOP_SLEEP MCP2515_CANCTRL_REQOP0
216#define MCP2515_CANCTRL_REQOP_LOOPBACK MCP2515_CANCTRL_REQOP1
217#define MCP2515_CANCTRL_REQOP_LISTEN_ONLY (MCP2515_CANCTRL_REQOP1 | \
218 MCP2515_CANCTRL_REQOP0)
219
220#define MCP2515_CNF3_PHSEG20 0x01
221#define MCP2515_CNF3_PHSEG21 0x02
222#define MCP2515_CNF3_PHSEG22 0x04
223#define MCP2515_CNF3_WAKFIL 0x40
224#define MCP2515_CNF3_SOF 0x80
225
226#define MCP2515_CNF3_PHSEG_MASK 0x07
227
228#define MCP2515_CNF2_PRSEG0 0x01
229#define MCP2515_CNF2_PRSEG1 0x02
230#define MCP2515_CNF2_PRSEG2 0x04
231#define MCP2515_CNF2_PHSEG10 0x08
232#define MCP2515_CNF2_PHSEG11 0x10
233#define MCP2515_CNF2_PHSEG12 0x20
234#define MCP2515_CNF2_SAM 0x40
235#define MCP2515_CNF2_BTLMODE 0x80
236
237#define MCP2515_CNF2_PRSEG_MASK 0x07
238#define MCP2515_CNF2_PHSEG_MASK 0x38
239
240#define MCP2515_CNF1_BRP0 0x01
241#define MCP2515_CNF1_BRP1 0x02
242#define MCP2515_CNF1_BRP2 0x04
243#define MCP2515_CNF1_BRP3 0x08
244#define MCP2515_CNF1_BRP4 0x10
245#define MCP2515_CNF1_BRP5 0x20
246#define MCP2515_CNF1_SJW0 0x40
247#define MCP2515_CNF1_SJW1 0x80
248
249#define MCP2515_CNF1_BRP_MASK 0x3F
250#define MCP2515_CNF1_SJW_MASK 0xC0
251
252#define MCP2515_CANINTE_RX0IE 0x01
253#define MCP2515_CANINTE_RX1IE 0x02
254#define MCP2515_CANINTE_TX0IE 0x04
255#define MCP2515_CANINTE_TX1IE 0x08
256#define MCP2515_CANINTE_TX2IE 0x10
257#define MCP2515_CANINTE_ERRIE 0x20
258#define MCP2515_CANINTE_WAKIE 0x40
259#define MCP2515_CANINTE_MERRE 0x80
260
261#define MCP2515_CANINTF_RX0IF 0x01
262#define MCP2515_CANINTF_RX1IF 0x02
263#define MCP2515_CANINTF_TX0IF 0x04
264#define MCP2515_CANINTF_TX1IF 0x08
265#define MCP2515_CANINTF_TX2IF 0x10
266#define MCP2515_CANINTF_ERRIF 0x20
267#define MCP2515_CANINTF_WAKIF 0x40
268#define MCP2515_CANINTF_MERRF 0x80
270
275#define MCP2515_EFLG_EWARN 0x01
276#define MCP2515_EFLG_RXWAR 0x02
277#define MCP2515_EFLG_TXWAR 0x04
278#define MCP2515_EFLG_RXEP 0x08
279#define MCP2515_EFLG_TXEP 0x10
280#define MCP2515_EFLG_TXBO 0x20
281#define MCP2515_EFLG_RX0OVR 0x40
282#define MCP2515_EFLG_RX1OVR 0x80
284
289#define MCP2515_TXBCTRL_TXP0 0x01
290#define MCP2515_TXBCTRL_TXP1 0x02
291#define MCP2515_TXBCTRL_TXREQ 0x08
292#define MCP2515_TXBCTRL_TXERR 0x10
293#define MCP2515_TXBCTRL_MLOA 0x20
294#define MCP2515_TXBCTRL_ABTF 0x40
295
296#define MCP2515_RXB0CTRL_FILHIT0 0x01
297#define MCP2515_RXB0CTRL_BUKT1 0x02
298#define MCP2515_RXB0CTRL_BUKT 0x04
299#define MCP2515_RXB0CTRL_RXRTR 0x08
300#define MCP2515_RXB0CTRL_MODE_RECV_FILTER 0x00
301#define MCP2515_RXB0CTRL_RXM0 0x20
302#define MCP2515_RXB0CTRL_RXM1 0x40
303#define MCP2515_RXB0CTRL_MODE_RECV_ALL (MCP2515_RXB0CTRL_RXM1 | \
304 MCP2515_RXB0CTRL_RXM0)
305
306#define MCP2515_RXB1CTRL_FILHIT0 0x01
307#define MCP2515_RXB1CTRL_FILHIT1 0x02
308#define MCP2515_RXB1CTRL_FILHIT2 0x04
309#define MCP2515_RXB1CTRL_RXRTR 0x08
310#define MCP2515_RXB1CTRL_MODE_RECV_FILTER 0x00
311#define MCP2515_RXB1CTRL_RXM0 0x20
312#define MCP2515_RXB1CTRL_RXM1 0x40
313#define MCP2515_RXB1CTRL_MODE_RECV_ALL (MCP2515_RXB1CTRL_RXM1 | \
314 MCP2515_RXB1CTRL_RXM0)
316
321#define MCP2515_SPI_RESET 0xC0
322#define MCP2515_SPI_READ 0x03
323#define MCP2515_SPI_READ_RXBUF 0x90
324#define MCP2515_SPI_WRITE 0x02
325#define MCP2515_SPI_LOAD_TXBUF 0x40
326#define MCP2515_SPI_RTS 0x80
327#define MCP2515_SPI_READ_STATUS 0xA0
328#define MCP2515_SPI_RX_STATUS 0xB0
329#define MCP2515_SPI_BITMOD 0x05
331
336#define MCP2515_RXBUF_RXB0SIDH 0x00
337#define MCP2515_RXBUF_RXB0D0 0x02
338#define MCP2515_RXBUF_RXB1SIDH 0x04
339#define MCP2515_RXBUF_RXB1D0 0x06
341
346#define MCP2515_TXBUF_TXB0SIDH 0x00
347#define MCP2515_TXBUF_TXB0D0 0x01
348#define MCP2515_TXBUF_TXB1SIDH 0x02
349#define MCP2515_TXBUF_TXB1D0 0x03
350#define MCP2515_TXBUF_TXB2SIDH 0x04
351#define MCP2515_TXBUF_TXB2D0 0x05
353
358#define MCP2515_OPTION_ROLLOVER 1
359#define MCP2515_OPTION_ONESHOT 2
360#define MCP2515_OPTION_ABORT 3
361#define MCP2515_OPTION_CLOCKOUT 4
362#define MCP2515_OPTION_LOOPBACK 5
363#define MCP2515_OPTION_LISTEN_ONLY 6
364#define MCP2515_OPTION_SLEEP 7
365#define MCP2515_OPTION_MULTISAMPLE 8
366#define MCP2515_OPTION_SOFOUT 9
367#define MCP2515_OPTION_WAKE_GLITCH_FILTER 10
368#define MCP2515_OPTION_WAKE 11
370
375#define MCP2515_IRQ_FLAGGED 0x80
376#define MCP2515_IRQ_HANDLED 0x40
377#define MCP2515_IRQ_RX 0x01
378#define MCP2515_IRQ_TX 0x02
379#define MCP2515_IRQ_ERROR 0x04
380#define MCP2515_IRQ_WAKEUP 0x08
382
387#define MCP2515_RX_IDE 0x08
389
390#ifdef __cplusplus
391}
392#endif
393