]> git.sur5r.net Git - freertos/blob - Demo/ARM7_STR75x_GCC/STLibrary/inc/75x_can.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / ARM7_STR75x_GCC / STLibrary / inc / 75x_can.h
1 /******************** (C) COPYRIGHT 2006 STMicroelectronics ********************\r
2 * File Name          : 75x_can.h\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 03/10/2006\r
5 * Description        : This file contains all the functions prototypes for the\r
6 *                      CAN bus software library.\r
7 ********************************************************************************\r
8 * History:\r
9 * 07/17/2006 : V1.0\r
10 * 03/10/2006 : V0.1\r
11 ********************************************************************************\r
12 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
14 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
15 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
16 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
17 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18 *******************************************************************************/\r
19 \r
20 /* Define to prevent recursive inclusion -------------------------------------*/\r
21 #ifndef __75x_CAN_H\r
22 #define __75x_CAN_H\r
23 \r
24 /* Includes ------------------------------------------------------------------*/\r
25 #include "75x_map.h"\r
26 \r
27 /* Exported types ------------------------------------------------------------*/\r
28 \r
29 /* CAN Init structure define */\r
30 typedef struct\r
31 {\r
32   u8  CAN_ConfigParameters;\r
33   u32 CAN_Bitrate;\r
34 }CAN_InitTypeDef;\r
35 \r
36 /* Exported constants --------------------------------------------------------*/\r
37 /* Standard bitrates available*/\r
38 enum\r
39 {\r
40   CAN_BITRATE_100K,\r
41   CAN_BITRATE_125K,\r
42   CAN_BITRATE_250K,\r
43   CAN_BITRATE_500K,\r
44   CAN_BITRATE_1M\r
45 };\r
46 \r
47 /* Control register*/\r
48 #define CAN_CR_TEST            0x0080\r
49 #define CAN_CR_CCE             0x0040\r
50 #define CAN_CR_DAR             0x0020\r
51 #define CAN_CR_EIE             0x0008\r
52 #define CAN_CR_SIE             0x0004\r
53 #define CAN_CR_IE              0x0002\r
54 #define CAN_CR_INIT            0x0001\r
55 \r
56 /* Status register */\r
57 #define CAN_SR_BOFF            0x0080\r
58 #define CAN_SR_EWARN           0x0040\r
59 #define CAN_SR_EPASS           0x0020\r
60 #define CAN_SR_RXOK            0x0010\r
61 #define CAN_SR_TXOK            0x0008\r
62 #define CAN_SR_LEC             0x0007\r
63 \r
64 /* Test register*/\r
65 #define CAN_TESTR_RX           0x0080\r
66 #define CAN_TESTR_TX1          0x0040\r
67 #define CAN_TESTR_TX0          0x0020\r
68 #define CAN_TESTR_LBACK        0x0010\r
69 #define CAN_TESTR_SILENT       0x0008\r
70 #define CAN_TESTR_BASIC        0x0004\r
71 \r
72 /* IFn / Command Request register*/\r
73 #define CAN_CRR_BUSY           0x8000\r
74 \r
75 /* IFn / Command Mask register*/\r
76 #define CAN_CMR_WRRD           0x0080\r
77 #define CAN_CMR_MASK           0x0040\r
78 #define CAN_CMR_ARB            0x0020\r
79 #define CAN_CMR_CONTROL        0x0010\r
80 #define CAN_CMR_CLRINTPND      0x0008\r
81 #define CAN_CMR_TXRQSTNEWDAT   0x0004\r
82 #define CAN_CMR_DATAA          0x0002\r
83 #define CAN_CMR_DATAB          0x0001\r
84 \r
85 /* IFn / Mask 2 register*/\r
86 #define CAN_M2R_MXTD           0x8000\r
87 #define CAN_M2R_MDIR           0x4000\r
88 \r
89 /* IFn / Arbitration 2 register*/\r
90 #define CAN_A2R_MSGVAL         0x8000\r
91 #define CAN_A2R_XTD            0x4000\r
92 #define CAN_A2R_DIR            0x2000\r
93 \r
94 /* IFn / Message Control register*/\r
95 #define CAN_MCR_NEWDAT         0x8000\r
96 #define CAN_MCR_MSGLST         0x4000\r
97 #define CAN_MCR_INTPND         0x2000\r
98 #define CAN_MCR_UMASK          0x1000\r
99 #define CAN_MCR_TXIE           0x0800\r
100 #define CAN_MCR_RXIE           0x0400\r
101 #define CAN_MCR_RMTEN          0x0200\r
102 #define CAN_MCR_TXRQST         0x0100\r
103 #define CAN_MCR_EOB            0x0080\r
104 \r
105 \r
106 /* Wake-up modes*/\r
107 enum\r
108 {\r
109   CAN_WAKEUP_ON_EXT,\r
110   CAN_WAKEUP_ON_CAN\r
111 };\r
112 \r
113 \r
114 /* CAN message structure*/\r
115 typedef struct\r
116 {\r
117   u32 IdType;\r
118   u32 Id;\r
119   u8 Dlc;\r
120   u8 Data[8];\r
121 } canmsg;\r
122 \r
123 /* Message ID types*/\r
124 enum\r
125 {\r
126   CAN_STD_ID,\r
127   CAN_EXT_ID\r
128 };\r
129 \r
130 /* Message ID limits*/\r
131 \r
132 #define CAN_LAST_STD_ID ((1<<11) - 1)\r
133 #define CAN_LAST_EXT_ID ((1L<<29) - 1)\r
134 \r
135 /* Exported functions ------------------------------------------------------- */\r
136 \r
137 void CAN_Init (CAN_InitTypeDef *CAN_InitStruct);\r
138 void CAN_DeInit (void);\r
139 void CAN_StructInit(CAN_InitTypeDef *CAN_InitStruct);\r
140 void CAN_SetBitrate(u32 bitrate);\r
141 void CAN_SetTiming(u32 tseg1, u32 tseg2, u32 sjw, u32 brp);\r
142 ErrorStatus CAN_SetUnusedMsgObj(u32 msgobj);\r
143 ErrorStatus CAN_SetTxMsgObj(u32 msgobj, u32 idType);\r
144 ErrorStatus CAN_SetRxMsgObj(u32 msgobj, u32 idType, u32 idLow, u32 idHigh, bool singleOrFifoLast);\r
145 void CAN_InvalidateAllMsgObj(void);\r
146 ErrorStatus CAN_ReleaseMessage(u32 msgobj);\r
147 ErrorStatus CAN_SendMessage(u32 msgobj, canmsg* pCanMsg);\r
148 ErrorStatus CAN_ReceiveMessage(u32 msgobj, bool release, canmsg* pCanMsg);\r
149 ErrorStatus CAN_WaitEndOfTx(void);\r
150 ErrorStatus CAN_BasicSendMessage(canmsg* pCanMsg);\r
151 ErrorStatus CAN_BasicReceiveMessage(canmsg* pCanMsg);\r
152 void CAN_EnterTestMode(u8 TestMask);\r
153 void CAN_EnterInitMode(u8 InitMask);\r
154 void CAN_LeaveInitMode(void);\r
155 void CAN_LeaveTestMode(void);\r
156 void CAN_ReleaseTxMessage(u32 msgobj);\r
157 void CAN_ReleaseRxMessage(u32 msgobj);\r
158 u32 CAN_IsMessageWaiting(u32 msgobj);\r
159 u32 CAN_IsTransmitRequested(u32 msgobj);\r
160 u32 CAN_IsInterruptPending(u32 msgobj);\r
161 u32 CAN_IsObjectValid(u32 msgobj);\r
162 \r
163 #endif /* __75x_CAN_H */\r
164 \r
165 /******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/\r