source: rtos_arduino/trunk/arduino_lib/libraries/NcesCan/mcp_can_dfs.h@ 136

Last change on this file since 136 was 136, checked in by ertl-honda, 8 years ago

ライブラリとOS及びベーシックなサンプルの追加.

File size: 10.5 KB
Line 
1/*
2 mcp_can_dfs.h
3 2012 Copyright (c) Seeed Technology Inc. All right reserved.
4
5 Author:Loovee
6 Contributor: Cory J. Fowler
7 2014-1-16
8
9 This library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Lesser General Public
11 License as published by the Free Software Foundation; either
12 version 2.1 of the License, or (at your option) any later version.
13
14 This library is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public
20 License along with this library; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-
22 1301 USA
23*/
24#ifndef _MCP2515DFS_H_
25#define _MCP2515DFS_H_
26
27#include <Arduino.h>
28#include <SPI.h>
29#include <inttypes.h>
30
31#ifndef INT32U
32#define INT32U unsigned long
33#endif
34
35#ifndef INT8U
36#define INT8U byte
37#endif
38
39// if print debug information
40#define DEBUG_MODE 0
41
42#define MCP_RXB0 0
43#define MCP_RXB1 1
44#define MCP_TXB0 0
45#define MCP_TXB1 1
46#define MCP_TXB2 2
47#define MCP_RXM0 0
48#define MCP_RXM1 1
49#define MCP_RXF0 0
50#define MCP_RXF1 1
51#define MCP_RXF2 2
52#define MCP_RXF3 3
53#define MCP_RXF4 4
54#define MCP_RXF5 5
55
56/*
57 * Begin mt
58 */
59#define TIMEOUTVALUE 50
60#define MCP_SIDH 0
61#define MCP_SIDL 1
62#define MCP_EID8 2
63#define MCP_EID0 3
64
65#define MCP_TXB_EXIDE_M 0x08 /* In TXBnSIDL */
66#define MCP_DLC_MASK 0x0F /* 4 LSBits */
67#define MCP_RTR_MASK 0x40 /* (1<<6) Bit 6 */
68
69#define MCP_RXB_RX_ANY 0x60
70#define MCP_RXB_RX_EXT 0x40
71#define MCP_RXB_RX_STD 0x20
72#define MCP_RXB_RX_STDEXT 0x00
73#define MCP_RXB_RX_MASK 0x60
74#define MCP_RXB_BUKT_MASK (1<<2)
75
76/*
77** Bits in the TXBnCTRL registers.
78*/
79#define MCP_TXB_TXBUFE_M 0x80
80#define MCP_TXB_ABTF_M 0x40
81#define MCP_TXB_MLOA_M 0x20
82#define MCP_TXB_TXERR_M 0x10
83#define MCP_TXB_TXREQ_M 0x08
84#define MCP_TXB_TXIE_M 0x04
85#define MCP_TXB_TXP10_M 0x03
86
87#define MCP_TXB_RTR_M 0x40 /* In TXBnDLC */
88#define MCP_RXB_IDE_M 0x08 /* In RXBnSIDL */
89#define MCP_RXB_RTR_M 0x40 /* In RXBnDLC */
90
91#define MCP_STAT_RXIF_MASK (0x03)
92#define MCP_STAT_RX0IF (1<<0)
93#define MCP_STAT_RX1IF (1<<1)
94
95#define MCP_STAT_TX0IF (1<<3)
96#define MCP_STAT_TX1IF (1<<5)
97#define MCP_STAT_TX2IF (1<<7)
98
99#define MCP_STAT_TX0REQ (1<<2)
100#define MCP_STAT_TX1REQ (1<<4)
101#define MCP_STAT_TX2REQ (1<<6)
102
103#define MCP_EFLG_RX1OVR (1<<7)
104#define MCP_EFLG_RX0OVR (1<<6)
105#define MCP_EFLG_TXBO (1<<5)
106#define MCP_EFLG_TXEP (1<<4)
107#define MCP_EFLG_RXEP (1<<3)
108#define MCP_EFLG_TXWAR (1<<2)
109#define MCP_EFLG_RXWAR (1<<1)
110#define MCP_EFLG_EWARN (1<<0)
111#define MCP_EFLG_ERRORMASK (0xF8) /* 5 MS-Bits */
112
113
114/*
115 * Define MCP2515 register addresses
116 */
117
118#define MCP_RXF0SIDH 0x00
119#define MCP_RXF0SIDL 0x01
120#define MCP_RXF0EID8 0x02
121#define MCP_RXF0EID0 0x03
122#define MCP_RXF1SIDH 0x04
123#define MCP_RXF1SIDL 0x05
124#define MCP_RXF1EID8 0x06
125#define MCP_RXF1EID0 0x07
126#define MCP_RXF2SIDH 0x08
127#define MCP_RXF2SIDL 0x09
128#define MCP_RXF2EID8 0x0A
129#define MCP_RXF2EID0 0x0B
130#define MCP_CANSTAT 0x0E
131#define MCP_CANCTRL 0x0F
132#define MCP_RXF3SIDH 0x10
133#define MCP_RXF3SIDL 0x11
134#define MCP_RXF3EID8 0x12
135#define MCP_RXF3EID0 0x13
136#define MCP_RXF4SIDH 0x14
137#define MCP_RXF4SIDL 0x15
138#define MCP_RXF4EID8 0x16
139#define MCP_RXF4EID0 0x17
140#define MCP_RXF5SIDH 0x18
141#define MCP_RXF5SIDL 0x19
142#define MCP_RXF5EID8 0x1A
143#define MCP_RXF5EID0 0x1B
144#define MCP_TEC 0x1C
145#define MCP_REC 0x1D
146#define MCP_RXM0SIDH 0x20
147#define MCP_RXM0SIDL 0x21
148#define MCP_RXM0EID8 0x22
149#define MCP_RXM0EID0 0x23
150#define MCP_RXM1SIDH 0x24
151#define MCP_RXM1SIDL 0x25
152#define MCP_RXM1EID8 0x26
153#define MCP_RXM1EID0 0x27
154#define MCP_CNF3 0x28
155#define MCP_CNF2 0x29
156#define MCP_CNF1 0x2A
157#define MCP_CANINTE 0x2B
158#define MCP_CANINTF 0x2C
159#define MCP_EFLG 0x2D
160#define MCP_TXB0CTRL 0x30
161#define MCP_TXB1CTRL 0x40
162#define MCP_TXB2CTRL 0x50
163#define MCP_RXB0CTRL 0x60
164#define MCP_RXB0SIDH 0x61
165#define MCP_RXB1CTRL 0x70
166#define MCP_RXB1SIDH 0x71
167
168
169#define MCP_TX_INT 0x1C // Enable all transmit interrup ts
170#define MCP_TX01_INT 0x0C // Enable TXB0 and TXB1 interru pts
171#define MCP_RX_INT 0x03 // Enable receive interrupts
172#define MCP_NO_INT 0x00 // Disable all interrupts
173
174#define MCP_TX01_MASK 0x14
175#define MCP_TX_MASK 0x54
176
177/*
178 * Define SPI Instruction Set
179 */
180
181#define MCP_WRITE 0x02
182
183#define MCP_READ 0x03
184
185#define MCP_BITMOD 0x05
186
187#define MCP_LOAD_TX0 0x40
188#define MCP_LOAD_TX1 0x42
189#define MCP_LOAD_TX2 0x44
190
191#define MCP_RTS_TX0 0x81
192#define MCP_RTS_TX1 0x82
193#define MCP_RTS_TX2 0x84
194#define MCP_RTS_ALL 0x87
195
196#define MCP_READ_RX0 0x90
197#define MCP_READ_RX1 0x94
198
199#define MCP_READ_STATUS 0xA0
200
201#define MCP_RX_STATUS 0xB0
202
203#define MCP_RESET 0xC0
204
205
206/*
207 * CANCTRL Register Values
208 */
209
210#define MODE_NORMAL 0x00
211#define MODE_SLEEP 0x20
212#define MODE_LOOPBACK 0x40
213#define MODE_LISTENONLY 0x60
214#define MODE_CONFIG 0x80
215#define MODE_POWERUP 0xE0
216#define MODE_MASK 0xE0
217#define ABORT_TX 0x10
218#define MODE_ONESHOT 0x08
219#define CLKOUT_ENABLE 0x04
220#define CLKOUT_DISABLE 0x00
221#define CLKOUT_PS1 0x00
222#define CLKOUT_PS2 0x01
223#define CLKOUT_PS4 0x02
224#define CLKOUT_PS8 0x03
225
226
227/*
228 * CNF1 Register Values
229 */
230
231#define SJW1 0x00
232#define SJW2 0x40
233#define SJW3 0x80
234#define SJW4 0xC0
235
236
237/*
238 * CNF2 Register Values
239 */
240
241#define BTLMODE 0x80
242#define SAMPLE_1X 0x00
243#define SAMPLE_3X 0x40
244
245
246/*
247 * CNF3 Register Values
248 */
249
250#define SOF_ENABLE 0x80
251#define SOF_DISABLE 0x00
252#define WAKFIL_ENABLE 0x40
253#define WAKFIL_DISABLE 0x00
254
255
256/*
257 * CANINTF Register Bits
258 */
259
260#define MCP_RX0IF 0x01
261#define MCP_RX1IF 0x02
262#define MCP_TX0IF 0x04
263#define MCP_TX1IF 0x08
264#define MCP_TX2IF 0x10
265#define MCP_ERRIF 0x20
266#define MCP_WAKIF 0x40
267#define MCP_MERRF 0x80
268
269/*
270 * speed 16M
271 */
272#define MCP_16MHz_1000kBPS_CFG1 (0x00)
273#define MCP_16MHz_1000kBPS_CFG2 (0xD0)
274#define MCP_16MHz_1000kBPS_CFG3 (0x82)
275
276#define MCP_16MHz_500kBPS_CFG1 (0x00)
277#define MCP_16MHz_500kBPS_CFG2 (0xF0)
278#define MCP_16MHz_500kBPS_CFG3 (0x86)
279
280#define MCP_16MHz_250kBPS_CFG1 (0x41)
281#define MCP_16MHz_250kBPS_CFG2 (0xF1)
282#define MCP_16MHz_250kBPS_CFG3 (0x85)
283
284#define MCP_16MHz_200kBPS_CFG1 (0x01)
285#define MCP_16MHz_200kBPS_CFG2 (0xFA)
286#define MCP_16MHz_200kBPS_CFG3 (0x87)
287
288#define MCP_16MHz_125kBPS_CFG1 (0x03)
289#define MCP_16MHz_125kBPS_CFG2 (0xF0)
290#define MCP_16MHz_125kBPS_CFG3 (0x86)
291
292#define MCP_16MHz_100kBPS_CFG1 (0x03)
293#define MCP_16MHz_100kBPS_CFG2 (0xFA)
294#define MCP_16MHz_100kBPS_CFG3 (0x87)
295
296/*
297#define MCP_16MHz_100kBPS_CFG1 (0x03)
298#define MCP_16MHz_100kBPS_CFG2 (0xBA)
299#define MCP_16MHz_100kBPS_CFG3 (0x07)
300*/
301
302#define MCP_16MHz_95kBPS_CFG1 (0x03)
303#define MCP_16MHz_95kBPS_CFG2 (0xAD)
304#define MCP_16MHz_95kBPS_CFG3 (0x07)
305
306#define MCP_16MHz_83k3BPS_CFG1 (0x03)
307#define MCP_16MHz_83k3BPS_CFG2 (0xBE)
308#define MCP_16MHz_83k3BPS_CFG3 (0x07)
309
310#define MCP_16MHz_80kBPS_CFG1 (0x03)
311#define MCP_16MHz_80kBPS_CFG2 (0xFF)
312#define MCP_16MHz_80kBPS_CFG3 (0x87)
313
314#define MCP_16MHz_50kBPS_CFG1 (0x07)
315#define MCP_16MHz_50kBPS_CFG2 (0xFA)
316#define MCP_16MHz_50kBPS_CFG3 (0x87)
317
318#define MCP_16MHz_40kBPS_CFG1 (0x07)
319#define MCP_16MHz_40kBPS_CFG2 (0xFF)
320#define MCP_16MHz_40kBPS_CFG3 (0x87)
321
322#define MCP_16MHz_33kBPS_CFG1 (0x09)
323#define MCP_16MHz_33kBPS_CFG2 (0xBE)
324#define MCP_16MHz_33kBPS_CFG3 (0x07)
325
326#define MCP_16MHz_31k25BPS_CFG1 (0x0F)
327#define MCP_16MHz_31k25BPS_CFG2 (0xF1)
328#define MCP_16MHz_31k25BPS_CFG3 (0x85)
329
330#define MCP_16MHz_20kBPS_CFG1 (0x0F)
331#define MCP_16MHz_20kBPS_CFG2 (0xFF)
332#define MCP_16MHz_20kBPS_CFG3 (0x87)
333
334#define MCP_16MHz_10kBPS_CFG1 (0x1F)
335#define MCP_16MHz_10kBPS_CFG2 (0xFF)
336#define MCP_16MHz_10kBPS_CFG3 (0x87)
337
338#define MCP_16MHz_5kBPS_CFG1 (0x3F)
339#define MCP_16MHz_5kBPS_CFG2 (0xFF)
340#define MCP_16MHz_5kBPS_CFG3 (0x87)
341
342
343
344#define MCPDEBUG (0)
345#define MCPDEBUG_TXBUF (0)
346#define MCP_N_TXBUFFERS (3)
347
348#define MCP_RXBUF_0 (MCP_RXB0SIDH)
349#define MCP_RXBUF_1 (MCP_RXB1SIDH)
350
351//#define SPICS 10
352#define MCP2515_SELECT() digitalWrite(SPICS, LOW)
353#define MCP2515_UNSELECT() digitalWrite(SPICS, HIGH)
354
355#define MCP2515_OK (0)
356#define MCP2515_FAIL (1)
357#define MCP_ALLTXBUSY (2)
358
359#define CANDEBUG 1
360
361#define CANUSELOOP 0
362
363#define CANSENDTIMEOUT (200) /* milliseconds */
364
365/*
366 * initial value of gCANAutoProcess
367 */
368#define CANAUTOPROCESS (1)
369#define CANAUTOON (1)
370#define CANAUTOOFF (0)
371
372#define CAN_STDID (0)
373#define CAN_EXTID (1)
374
375#define CANDEFAULTIDENT (0x55CC)
376#define CANDEFAULTIDENTEXT (CAN_EXTID)
377
378#define CAN_5KBPS 1
379#define CAN_10KBPS 2
380#define CAN_20KBPS 3
381#define CAN_31K25BPS 4
382#define CAN_33KBPS 5
383#define CAN_40KBPS 6
384#define CAN_50KBPS 7
385#define CAN_80KBPS 8
386#define CAN_83K3BPS 9
387#define CAN_95KBPS 10
388#define CAN_100KBPS 11
389#define CAN_125KBPS 12
390#define CAN_200KBPS 13
391#define CAN_250KBPS 14
392#define CAN_500KBPS 15
393#define CAN_1000KBPS 16
394
395#define CAN_OK (0)
396#define CAN_FAILINIT (1)
397#define CAN_FAILTX (2)
398#define CAN_MSGAVAIL (3)
399#define CAN_NOMSG (4)
400#define CAN_SENDWAIT (5)
401#define CAN_NOSENDWAIT (6)
402#define CAN_CTRLERROR (7)
403#define CAN_GETTXBFTIMEOUT (8)
404#define CAN_SENDMSGTIMEOUT (9)
405#define CAN_FAIL (0xff)
406
407#define CAN_MAX_CHAR_IN_MESSAGE (8)
408
409#endif
410/*********************************************************************************************************
411 END FILE
412*********************************************************************************************************/
Note: See TracBrowser for help on using the repository browser.