]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_LM3S6965_GCC/LuminaryDrivers/hw_can.h
Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt
[freertos] / Demo / CORTEX_LM3S6965_GCC / LuminaryDrivers / hw_can.h
1 //*****************************************************************************\r
2 //\r
3 // hw_can.h - Defines and macros used when accessing the can.\r
4 //\r
5 // Copyright (c) 2006-2007 Luminary Micro, Inc.  All rights reserved.\r
6 // \r
7 // Software License Agreement\r
8 // \r
9 // Luminary Micro, Inc. (LMI) is supplying this software for use solely and\r
10 // exclusively on LMI's microcontroller products.\r
11 // \r
12 // The software is owned by LMI and/or its suppliers, and is protected under\r
13 // applicable copyright laws.  All rights are reserved.  Any use in violation\r
14 // of the foregoing restrictions may subject the user to criminal sanctions\r
15 // under applicable laws, as well as to civil liability for the breach of the\r
16 // terms and conditions of this license.\r
17 // \r
18 // THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
19 // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
20 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
21 // LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
22 // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
23 // \r
24 // This is part of revision 1408 of the Stellaris Peripheral Driver Library.\r
25 //\r
26 //*****************************************************************************\r
27 \r
28 #ifndef __HW_CAN_H__\r
29 #define __HW_CAN_H__\r
30 \r
31 //*****************************************************************************\r
32 //\r
33 // The following define the offsets of the can registers.\r
34 //\r
35 //*****************************************************************************\r
36 #define CAN_O_CTL               0x00000000  // Control register\r
37 #define CAN_O_STS               0x00000004  // Status register\r
38 #define CAN_O_ERR               0x00000008  // Error register\r
39 #define CAN_O_BIT               0x0000000C  // Bit Timing register\r
40 #define CAN_O_INT               0x00000010  // Interrupt register\r
41 #define CAN_O_TST               0x00000014  // Test register\r
42 #define CAN_O_BRPE              0x00000018  // Baud Rate Prescaler register\r
43 #define CAN_O_IF1CRQ            0x00000020  // Interface 1 Command Request reg.\r
44 #define CAN_O_IF1CMSK           0x00000024  // Interface 1 Command Mask reg.\r
45 #define CAN_O_IF1MSK1           0x00000028  // Interface 1 Mask 1 register\r
46 #define CAN_O_IF1MSK2           0x0000002C  // Interface 1 Mask 2 register\r
47 #define CAN_O_IF1ARB1           0x00000030  // Interface 1 Arbitration 1 reg.\r
48 #define CAN_O_IF1ARB2           0x00000034  // Interface 1 Arbitration 2 reg.\r
49 #define CAN_O_IF1MCTL           0x00000038  // Interface 1 Message Control reg.\r
50 #define CAN_O_IF1DA1            0x0000003C  // Interface 1 DataA 1 register\r
51 #define CAN_O_IF1DA2            0x00000040  // Interface 1 DataA 2 register\r
52 #define CAN_O_IF1DB1            0x00000044  // Interface 1 DataB 1 register\r
53 #define CAN_O_IF1DB2            0x00000048  // Interface 1 DataB 2 register\r
54 #define CAN_O_IF2CRQ            0x00000080  // Interface 2 Command Request reg.\r
55 #define CAN_O_IF2CMSK           0x00000084  // Interface 2 Command Mask reg.\r
56 #define CAN_O_IF2MSK1           0x00000088  // Interface 2 Mask 1 register\r
57 #define CAN_O_IF2MSK2           0x0000008C  // Interface 2 Mask 2 register\r
58 #define CAN_O_IF2ARB1           0x00000090  // Interface 2 Arbitration 1 reg.\r
59 #define CAN_O_IF2ARB2           0x00000094  // Interface 2 Arbitration 2 reg.\r
60 #define CAN_O_IF2MCTL           0x00000098  // Interface 2 Message Control reg.\r
61 #define CAN_O_IF2DA1            0x0000009C  // Interface 2 DataA 1 register\r
62 #define CAN_O_IF2DA2            0x000000A0  // Interface 2 DataA 2 register\r
63 #define CAN_O_IF2DB1            0x000000A4  // Interface 2 DataB 1 register\r
64 #define CAN_O_IF2DB2            0x000000A8  // Interface 2 DataB 2 register\r
65 #define CAN_O_TXRQ1             0x00000100  // Transmission Request 1 register\r
66 #define CAN_O_TXRQ2             0x00000104  // Transmission Request 2 register\r
67 #define CAN_O_NWDA1             0x00000120  // New Data 1 register\r
68 #define CAN_O_NWDA2             0x00000124  // New Data 2 register\r
69 #define CAN_O_MSGINT1           0x00000140  // Intr. Pending in Msg Obj 1 reg.\r
70 #define CAN_O_MSGINT2           0x00000144  // Intr. Pending in Msg Obj 2 reg.\r
71 #define CAN_O_MSGVAL1           0x00000160  // Message Valid in Msg Obj 1 reg.\r
72 #define CAN_O_MSGVAL2           0x00000164  // Message Valid in Msg Obj 2 reg.\r
73 \r
74 //*****************************************************************************\r
75 //\r
76 // The following define the reset values of the can registers.\r
77 //\r
78 //*****************************************************************************\r
79 #define CAN_RV_CTL              0x00000001\r
80 #define CAN_RV_STS              0x00000000\r
81 #define CAN_RV_ERR              0x00000000\r
82 #define CAN_RV_BIT              0x00002301\r
83 #define CAN_RV_INT              0x00000000\r
84 #define CAN_RV_TST              0x00000000\r
85 #define CAN_RV_BRPE             0x00000000\r
86 #define CAN_RV_IF1CRQ           0x00000001\r
87 #define CAN_RV_IF1CMSK          0x00000000\r
88 #define CAN_RV_IF1MSK1          0x0000FFFF\r
89 #define CAN_RV_IF1MSK2          0x0000FFFF\r
90 #define CAN_RV_IF1ARB1          0x00000000\r
91 #define CAN_RV_IF1ARB2          0x00000000\r
92 #define CAN_RV_IF1MCTL          0x00000000\r
93 #define CAN_RV_IF1DA1           0x00000000\r
94 #define CAN_RV_IF1DA2           0x00000000\r
95 #define CAN_RV_IF1DB1           0x00000000\r
96 #define CAN_RV_IF1DB2           0x00000000\r
97 #define CAN_RV_IF2CRQ           0x00000001\r
98 #define CAN_RV_IF2CMSK          0x00000000\r
99 #define CAN_RV_IF2MSK1          0x0000FFFF\r
100 #define CAN_RV_IF2MSK2          0x0000FFFF\r
101 #define CAN_RV_IF2ARB1          0x00000000\r
102 #define CAN_RV_IF2ARB2          0x00000000\r
103 #define CAN_RV_IF2MCTL          0x00000000\r
104 #define CAN_RV_IF2DA1           0x00000000\r
105 #define CAN_RV_IF2DA2           0x00000000\r
106 #define CAN_RV_IF2DB1           0x00000000\r
107 #define CAN_RV_IF2DB2           0x00000000\r
108 #define CAN_RV_TXRQ1            0x00000000\r
109 #define CAN_RV_TXRQ2            0x00000000\r
110 #define CAN_RV_NWDA1            0x00000000\r
111 #define CAN_RV_NWDA2            0x00000000\r
112 #define CAN_RV_MSGINT1          0x00000000\r
113 #define CAN_RV_MSGINT2          0x00000000\r
114 #define CAN_RV_MSGVAL1          0x00000000\r
115 #define CAN_RV_MSGVAL2          0x00000000\r
116 \r
117 //*****************************************************************************\r
118 //\r
119 // The following define the bit fields in the CAN_CTL register.\r
120 //\r
121 //*****************************************************************************\r
122 #define CAN_CTL_TEST            0x00000080  // Test mode enable\r
123 #define CAN_CTL_CCE             0x00000040  // Configuration change enable\r
124 #define CAN_CTL_DAR             0x00000020  // Disable automatic retransmission\r
125 #define CAN_CTL_EIE             0x00000008  // Error interrupt enable\r
126 #define CAN_CTL_SIE             0x00000004  // Status change interrupt enable\r
127 #define CAN_CTL_IE              0x00000002  // Module interrupt enable\r
128 #define CAN_CTL_INIT            0x00000001  // Initialization\r
129 \r
130 //*****************************************************************************\r
131 //\r
132 // The following define the bit fields in the CAN_STS register.\r
133 //\r
134 //*****************************************************************************\r
135 #define CAN_STS_BOFF            0x00000080  // Bus Off status\r
136 #define CAN_STS_EWARN           0x00000040  // Error Warning status\r
137 #define CAN_STS_EPASS           0x00000020  // Error Passive status\r
138 #define CAN_STS_RXOK            0x00000010  // Received Message Successful\r
139 #define CAN_STS_TXOK            0x00000008  // Transmitted Message Successful\r
140 #define CAN_STS_LEC_MSK         0x00000007  // Last Error Code\r
141 #define CAN_STS_LEC_NONE        0x00000000  // No error\r
142 #define CAN_STS_LEC_STUFF       0x00000001  // Stuff error\r
143 #define CAN_STS_LEC_FORM        0x00000002  // Form(at) error\r
144 #define CAN_STS_LEC_ACK         0x00000003  // Ack error\r
145 #define CAN_STS_LEC_BIT1        0x00000004  // Bit 1 error\r
146 #define CAN_STS_LEC_BIT0        0x00000005  // Bit 0 error\r
147 #define CAN_STS_LEC_CRC         0x00000006  // CRC error\r
148 \r
149 //*****************************************************************************\r
150 //\r
151 // The following define the bit fields in the CAN_ERR register.\r
152 //\r
153 //*****************************************************************************\r
154 #define CAN_ERR_RP              0x00008000  // Receive error passive status\r
155 #define CAN_ERR_REC_MASK        0x00007F00  // Receive error counter status\r
156 #define CAN_ERR_REC_SHIFT       8           // Receive error counter bit pos\r
157 #define CAN_ERR_TEC_MASK        0x000000FF  // Transmit error counter status\r
158 #define CAN_ERR_TEC_SHIFT       0           // Transmit error counter bit pos\r
159 \r
160 //*****************************************************************************\r
161 //\r
162 // The following define the bit fields in the CAN_BIT register.\r
163 //\r
164 //*****************************************************************************\r
165 #define CAN_BIT_TSEG2           0x00007000  // Time segment after sample point\r
166 #define CAN_BIT_TSEG1           0x00000F00  // Time segment before sample point\r
167 #define CAN_BIT_SJW             0x000000C0  // (Re)Synchronization jump width\r
168 #define CAN_BIT_BRP             0x0000003F  // Baud rate prescaler\r
169 \r
170 //*****************************************************************************\r
171 //\r
172 // The following define the bit fields in the CAN_INT register.\r
173 //\r
174 //*****************************************************************************\r
175 #define CAN_INT_INTID_MSK       0x0000FFFF  // Interrupt Identifier\r
176 #define CAN_INT_INTID_NONE      0x00000000  // No Interrupt Pending\r
177 #define CAN_INT_INTID_STATUS    0x00008000  // Status Interrupt\r
178 \r
179 //*****************************************************************************\r
180 //\r
181 // The following define the bit fields in the CAN_TST register.\r
182 //\r
183 //*****************************************************************************\r
184 #define CAN_TST_RX              0x00000080  // CAN_RX pin status\r
185 #define CAN_TST_TX_MSK          0x00000060  // Overide control of CAN_TX pin\r
186 #define CAN_TST_TX_CANCTL       0x00000000  // CAN core controls CAN_TX\r
187 #define CAN_TST_TX_SAMPLE       0x00000020  // Sample Point on CAN_TX\r
188 #define CAN_TST_TX_DOMINANT     0x00000040  // Dominant value on CAN_TX\r
189 #define CAN_TST_TX_RECESSIVE    0x00000060  // Recessive value on CAN_TX\r
190 #define CAN_TST_LBACK           0x00000010  // Loop back mode\r
191 #define CAN_TST_SILENT          0x00000008  // Silent mode\r
192 #define CAN_TST_BASIC           0x00000004  // Basic mode\r
193 \r
194 //*****************************************************************************\r
195 //\r
196 // The following define the bit fields in the CAN_BRPE register.\r
197 //\r
198 //*****************************************************************************\r
199 #define CAN_BRPE_BRPE           0x0000000F  // Baud rate prescaler extension\r
200 \r
201 //*****************************************************************************\r
202 //\r
203 // The following define the bit fields in the CAN_IF1CRQ and CAN_IF1CRQ\r
204 // registers.\r
205 // Note:  All bits may not be available in all registers\r
206 //\r
207 //*****************************************************************************\r
208 #define CAN_IFCRQ_BUSY          0x00008000  // Busy flag status\r
209 #define CAN_IFCRQ_MNUM_MSK      0x0000003F  // Message Number\r
210 \r
211 //*****************************************************************************\r
212 //\r
213 // The following define the bit fields in the CAN_IF1CMSK and CAN_IF2CMSK\r
214 // registers.\r
215 // Note:  All bits may not be available in all registers\r
216 //\r
217 //*****************************************************************************\r
218 #define CAN_IFCMSK_WRNRD        0x00000080  // Write, not Read\r
219 #define CAN_IFCMSK_MASK         0x00000040  // Access Mask Bits\r
220 #define CAN_IFCMSK_ARB          0x00000020  // Access Arbitration Bits\r
221 #define CAN_IFCMSK_CONTROL      0x00000010  // Access Control Bits\r
222 #define CAN_IFCMSK_CLRINTPND    0x00000008  // Clear interrupt pending Bit\r
223 #define CAN_IFCMSK_TXRQST       0x00000004  // Access Tx request bit (WRNRD=1)\r
224 #define CAN_IFCMSK_NEWDAT       0x00000004  // Access New Data bit (WRNRD=0)\r
225 #define CAN_IFCMSK_DATAA        0x00000002  // DataA access - bytes 0 to 3\r
226 #define CAN_IFCMSK_DATAB        0x00000001  // DataB access - bytes 4 to 7\r
227 \r
228 //*****************************************************************************\r
229 //\r
230 // The following define the bit fields in the CAN_IF1MSK1 and CAN_IF2MSK1\r
231 // registers.\r
232 // Note:  All bits may not be available in all registers\r
233 //\r
234 //*****************************************************************************\r
235 #define CAN_IFMSK1_MSK          0x0000FFFF  // Identifier Mask\r
236 \r
237 //*****************************************************************************\r
238 //\r
239 // The following define the bit fields in the CAN_IF1MSK2 and CAN_IF2MSK2\r
240 // registers.\r
241 // Note:  All bits may not be available in all registers\r
242 //\r
243 //*****************************************************************************\r
244 #define CAN_IFMSK2_MXTD         0x00008000  // Mask extended identifier\r
245 #define CAN_IFMSK2_MDIR         0x00004000  // Mask message direction\r
246 #define CAN_IFMSK2_MSK          0x00001FFF  // Mask identifier\r
247 \r
248 //*****************************************************************************\r
249 //\r
250 // The following define the bit fields in the CAN_IF1ARB1 and CAN_IF2ARB1\r
251 // registers.\r
252 // Note:  All bits may not be available in all registers\r
253 //\r
254 //*****************************************************************************\r
255 #define CAN_IFARB1_ID           0x0000FFFF  // Identifier\r
256 \r
257 //*****************************************************************************\r
258 //\r
259 // The following define the bit fields in the CAN_IF1ARB2 and CAN_IF2ARB2\r
260 // registers.\r
261 // Note:  All bits may not be available in all registers\r
262 //\r
263 //*****************************************************************************\r
264 #define CAN_IFARB2_MSGVAL       0x00008000  // Message valid\r
265 #define CAN_IFARB2_XTD          0x00004000  // Extended identifier\r
266 #define CAN_IFARB2_DIR          0x00002000  // Message direction\r
267 #define CAN_IFARB2_ID           0x00001FFF  // Message identifier\r
268 \r
269 //*****************************************************************************\r
270 //\r
271 // The following define the bit fields in the CAN_IF1MCTL and CAN_IF2MCTL\r
272 // registers.\r
273 // Note:  All bits may not be available in all registers\r
274 //\r
275 //*****************************************************************************\r
276 #define CAN_IFMCTL_NEWDAT       0x00008000  // New Data\r
277 #define CAN_IFMCTL_MSGLST       0x00004000  // Message lost\r
278 #define CAN_IFMCTL_INTPND       0x00002000  // Interrupt pending\r
279 #define CAN_IFMCTL_UMASK        0x00001000  // Use acceptance mask\r
280 #define CAN_IFMCTL_TXIE         0x00000800  // Transmit interrupt enable\r
281 #define CAN_IFMCTL_RXIE         0x00000400  // Receive interrupt enable\r
282 #define CAN_IFMCTL_RMTEN        0x00000200  // Remote enable\r
283 #define CAN_IFMCTL_TXRQST       0x00000100  // Transmit request\r
284 #define CAN_IFMCTL_EOB          0x00000080  // End of buffer\r
285 #define CAN_IFMCTL_DLC          0x0000000F  // Data length code\r
286 \r
287 //*****************************************************************************\r
288 //\r
289 // The following define the bit fields in the CAN_IF1DA1 and CAN_IF2DA1\r
290 // registers.\r
291 // Note:  All bits may not be available in all registers\r
292 //\r
293 //*****************************************************************************\r
294 #define CAN_IFDA1_DATA          0x0000FFFF  // Data - bytes 1 and 0\r
295 \r
296 //*****************************************************************************\r
297 //\r
298 // The following define the bit fields in the CAN_IF1DA2 and CAN_IF2DA2\r
299 // registers.\r
300 // Note:  All bits may not be available in all registers\r
301 //\r
302 //*****************************************************************************\r
303 #define CAN_IFDA2_DATA          0x0000FFFF  // Data - bytes 3 and 2\r
304 \r
305 //*****************************************************************************\r
306 //\r
307 // The following define the bit fields in the CAN_IF1DB1 and CAN_IF2DB1\r
308 // registers.\r
309 // Note:  All bits may not be available in all registers\r
310 //\r
311 //*****************************************************************************\r
312 #define CAN_IFDB1_DATA          0x0000FFFF  // Data - bytes 5 and 4\r
313 \r
314 //*****************************************************************************\r
315 //\r
316 // The following define the bit fields in the CAN_IF1DB2 and CAN_IF2DB2\r
317 // registers.\r
318 // Note:  All bits may not be available in all registers\r
319 //\r
320 //*****************************************************************************\r
321 #define CAN_IFDB2_DATA          0x0000FFFF  // Data - bytes 7 and 6\r
322 \r
323 //*****************************************************************************\r
324 //\r
325 // The following define the bit fields in the CAN_TXRQ1 register.\r
326 //\r
327 //*****************************************************************************\r
328 #define CAN_TXRQ1_TXRQST        0x0000FFFF  // Transmission Request Bits\r
329 \r
330 //*****************************************************************************\r
331 //\r
332 // The following define the bit fields in the CAN_TXRQ2 register.\r
333 //\r
334 //*****************************************************************************\r
335 #define CAN_TXRQ2_TXRQST        0x0000FFFF  // Transmission Request Bits\r
336 \r
337 //*****************************************************************************\r
338 //\r
339 // The following define the bit fields in the CAN_NWDA1 register.\r
340 //\r
341 //*****************************************************************************\r
342 #define CAN_NWDA1_NEWDATA       0x0000FFFF  // New Data Bits\r
343 \r
344 //*****************************************************************************\r
345 //\r
346 // The following define the bit fields in the CAN_NWDA2 register.\r
347 //\r
348 //*****************************************************************************\r
349 #define CAN_NWDA2_NEWDATA       0x0000FFFF  // New Data Bits\r
350 \r
351 //*****************************************************************************\r
352 //\r
353 // The following define the bit fields in the CAN_MSGINT1 register.\r
354 //\r
355 //*****************************************************************************\r
356 #define CAN_MSGINT1_INTPND      0x0000FFFF  // Interrupt Pending Bits\r
357 \r
358 //*****************************************************************************\r
359 //\r
360 // The following define the bit fields in the CAN_MSGINT2 register.\r
361 //\r
362 //*****************************************************************************\r
363 #define CAN_MSGINT2_INTPND      0x0000FFFF  // Interrupt Pending Bits\r
364 \r
365 //*****************************************************************************\r
366 //\r
367 // The following define the bit fields in the CAN_MSGVAL1 register.\r
368 //\r
369 //*****************************************************************************\r
370 #define CAN_MSGVAL1_MSGVAL      0x0000FFFF  // Message Valid Bits\r
371 \r
372 //*****************************************************************************\r
373 //\r
374 // The following define the bit fields in the CAN_MSGVAL2 register.\r
375 //\r
376 //*****************************************************************************\r
377 #define CAN_MSGVAL2_MSGVAL      0x0000FFFF  // Message Valid Bits\r
378 \r
379 #endif // __HW_CAN_H__\r