1 /*****************************************************************************
5 |* This file contains definitions for the builtin CAN-Bus Controller of
6 |* the Siemens c515c controller
8 ****************************************************************************/
13 /* define CPU_CLK_10MHZ or CPU_CLK_8MHZ to select the right values for */
14 /* the bit timing registers */
18 /* address of can controller in xmem */
19 #define CAN_CTRL 0xf700
21 /* size of message buffer including 1 dummy byte at end */
22 #define CAN_MSG_SZ 0x10
24 /* register offset definitions */
37 #define MSG15MSK_0 0xc
38 #define MSG15MSK_1 0xd
39 #define MSG15MSK_2 0xe
40 #define MSG15MSK_3 0xf
42 /* register offsets in message buffer */
50 /* beginning of message data */
53 /* bits in cntr_x registers */
64 /* macros for setting and resetting above bits, see Siemens documentation */
65 #define MCR_BIT_SET(p,x) ((p) = (0xff & ~((x) >> 1)))
66 #define MCR_BIT_RES(p,x) ((p) = (0xff & ~(x)))
68 /* direction = transmit in mcfg */
69 #define DIR_TRANSMIT 0x8
71 /* constants for bit timing registers */
75 #define BT_1_125K 0x1c
77 #define BT_1_250K 0x1c
79 #define BT_1_500K 0x1c
86 #define BT_1_125K 0x1c
88 #define BT_1_250K 0x1c
90 #define BT_1_500K 0x2f
95 /* Control register bits */
104 /* status register bits */
115 typedef struct can_msg
124 unsigned char data_bytes[8];
128 xdata at CAN_CTRL struct
142 unsigned char msg15msk_0;
143 unsigned char msg15msk_1;
144 unsigned char msg15msk_2;
145 unsigned char msg15msk_3;
146 struct can_msg msgbufs[15];
149 #endif /* _CANC515C */