TTK4155 Lab Node 1
Term project in the NTNU course TTK4155 Embedded and Industrial Computer Systems Design
Loading...
Searching...
No Matches
mcp.h
Go to the documentation of this file.
1#ifndef MCP2515_H
2#define MCP2515_H
3
4#define MCP2515_RXF0SIDH 0x00
5#define MCP2515_RXF0SIDL 0x01
6#define MCP2515_RXF0EID8 0x02
7#define MCP2515_RXF0EID0 0x03
8#define MCP2515_RXF1SIDH 0x04
9#define MCP2515_RXF1SIDL 0x05
10#define MCP2515_RXF1EID8 0x06
11#define MCP2515_RXF1EID0 0x07
12#define MCP2515_RXF2SIDH 0x08
13#define MCP2515_RXF2SIDL 0x09
14#define MCP2515_RXF2EID8 0x0A
15#define MCP2515_RXF2EID0 0x0B
16#define MCP2515_CANSTAT 0x0E
17#define MCP2515_CANCTRL 0x0F
18#define MCP2515_RXF3SIDH 0x10
19#define MCP2515_RXF3SIDL 0x11
20#define MCP2515_RXF3EID8 0x12
21#define MCP2515_RXF3EID0 0x13
22#define MCP2515_RXF4SIDH 0x14
23#define MCP2515_RXF4SIDL 0x15
24#define MCP2515_RXF4EID8 0x16
25#define MCP2515_RXF4EID0 0x17
26#define MCP2515_RXF5SIDH 0x18
27#define MCP2515_RXF5SIDL 0x19
28#define MCP2515_RXF5EID8 0x1A
29#define MCP2515_RXF5EID0 0x1B
30#define MCP2515_TEC 0x1C
31#define MCP2515_REC 0x1D
32#define MCP2515_RXM0SIDH 0x20
33#define MCP2515_RXM0SIDL 0x21
34#define MCP2515_RXM0EID8 0x22
35#define MCP2515_RXM0EID0 0x23
36#define MCP2515_RXM1SIDH 0x24
37#define MCP2515_RXM1SIDL 0x25
38#define MCP2515_RXM1EID8 0x26
39#define MCP2515_RXM1EID0 0x27
40#define MCP2515_CNF3 0x28
41#define MCP2515_CNF2 0x29
42#define MCP2515_CNF1 0x2A
43#define MCP2515_CANINTE 0x2B
44#define MCP2515_CANINTF 0x2C
45#define MCP2515_EFLG 0x2D
46#define MCP2515_TXB0CTRL 0x30
47#define MCP2515_TXB1CTRL 0x40
48#define MCP2515_TXB2CTRL 0x50
49#define MCP2515_RXB0CTRL 0x60
50#define MCP2515_RXB0SIDH 0x61
51#define MCP2515_RXB0SIDL 0x62
52#define MCP2515_RXB0DLC 0x65
53#define MCP2515_RXB1CTRL 0x70
54#define MCP2515_RXB1SIDH 0x71
55#define MCP2515_RXB1SIDL 0x72
56#define MCP2515_TXB0EID0 0x34
57#define MCP2515_RXB1DLC 0x75
58#define MCP2515_RXB1D0 0x76
59
60
61#define MCP2515_TX_IRQ 0x1C // EN IRQ on transmit
62#define MCP2515_TX01_IRQ 0x0C // EN TXB0 and TXB1 IRQ
63#define MCP2515_RX_IRQ 0x03 // EN RX IRQ
64#define MCP2515_NO_IRQ 0x00 // Disable all IRQ
65
66#define MCP2515_TX01_MASK 0x14
67#define MCP2515_TX_MASK 0x54
68
69// SPI commands
70#define MCP2515_WRITE 0x02
71
72#define MCP2515_READ 0x03
73
74#define MCP2515_BITMOD 0x05
75
76#define MCP2515_LOAD_TX0 0x40
77#define MCP2515_LOAD_TX1 0x42
78#define MCP2515_LOAD_TX2 0x44
79
80#define MCP2515_RTS_TX0 0x81
81#define MCP2515_RTS_TX1 0x82
82#define MCP2515_RTS_TX2 0x84
83#define MCP2515_RTS_ALL 0x87
84
85#define MCP2515_READ_RX0 0x90
86#define MCP2515_READ_RX1 0x94
87
88#define MCP2515_READ_STATUS 0xA0
89
90#define MCP2515_RX_STATUS 0xB0
91
92#define MCP2515_RESET 0xC0
93
94#define MCP2515_TXRTS_CONF 0x07
95
96//Setting for 500kb/s
97#define MCP2515_BRP 0x03
98#define MCP2515_VAL_CNF1 0x03 // BRP=0, SJW=1 TQ // Change this t 0x00 for 1Mbps 0x01 for 250kbps, and 0x03 for 125kbps
99#define MCP2515_VAL_CNF2 0xB1 // BTLMODE=1, PHSEG1=8 TQ, PRSEG=3 TQ
100#define MCP2515_VAL_CNF3 0x05
101
102// CANCTRL Register
103#define MODE_NORMAL 0x00
104#define MODE_SLEEP 0x20
105#define MODE_LOOPBACK 0x40
106#define MODE_LISTENONLY 0x60
107#define MODE_CONFIG 0x80
108#define MODE_POWERUP 0xE0
109#define MODE_MASK 0xE0
110#define ABORT_TX 0x10
111#define MODE_ONESHOT 0x08
112#define CLKOUT_ENABLE 0x04
113#define CLKOUT_DISABLE 0x00
114#define CLKOUT_PS1 0x00
115#define CLKOUT_PS2 0x01
116#define CLKOUT_PS4 0x02
117#define CLKOUT_PS8 0x03
118
119
120// CNF1 Register
121#define SJW1 0x00
122#define SJW2 0x40
123#define SJW3 0x80
124#define SJW4 0xC0
125
126
127// CNF2 Register
128#define BTLMODE 0x80
129#define SAMPLE_1X 0x00
130#define SAMPLE_3X 0x40
131
132
133// CNF3 Register
134#define SOF_ENABLE 0x80
135#define SOF_DISABLE 0x00
136#define WAKFIL_ENABLE 0x40
137#define WAKFIL_DISABLE 0x00
138
139
140// CANINTF Register Bits
141#define MCP2515_RX0IF 0x01
142#define MCP2515_RX1IF 0x02
143#define MCP2515_TX0IF 0x04
144#define MCP2515_TX1IF 0x08
145#define MCP2515_TX2IF 0x10
146#define MCP2515_ERRIF 0x20
147#define MCP2515_WAKIF 0x40
148#define MCP2515_MERRF 0x80
149
150// TXnRTS config register
151#define MCP2515_TXRTSCTRL 0x0D
152
153// CAN transmit buffer 0 message ID and message length registers
154#define MCP2515_TXB0SIDH 0x31
155#define MCP2515_TXB0SIDL 0x32
156#define MCP2515_TXB0EID8 0x33
157
158// CAN transmit buffer 0 message registers
159#define MCP2515_TXB0D0 0x36
160
161// CAN receive buffer 0 message registers
162#define MCP2515_RXB0D0 0x66
163
164// CAN read status bits
165#define rx_buff_0_full 0x01
166#define rx_buff_1_full 0x02
167#define tx_buff_0_busy 0x04
168#define tx_buff_0_empty 0x08
169#define tx_buff_1_busy 0x10
170#define tx_buff_1_empty 0x20
171#define tx_buff_2_busy 0x40
172#define tx_buff_2_empty 0x80
173
174// CAN Transmit Buffer Data Length Code
175#define TXB0DLC 0x35
176
177#define CAN_INTERRUPT_ISR_REGISTER INT2
178#define CAN_INTERRUPT_PIN PE0
179
180
181#endif /* MCP2515_H */