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
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
20 /* Define to prevent recursive inclusion -------------------------------------*/
\r
24 /* Includes ------------------------------------------------------------------*/
\r
25 #include "75x_map.h"
\r
27 /* Exported types ------------------------------------------------------------*/
\r
29 /* CAN Init structure define */
\r
32 u8 CAN_ConfigParameters;
\r
36 /* Exported constants --------------------------------------------------------*/
\r
37 /* Standard bitrates available*/
\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
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
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
72 /* IFn / Command Request register*/
\r
73 #define CAN_CRR_BUSY 0x8000
\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
85 /* IFn / Mask 2 register*/
\r
86 #define CAN_M2R_MXTD 0x8000
\r
87 #define CAN_M2R_MDIR 0x4000
\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
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
114 /* CAN message structure*/
\r
123 /* Message ID types*/
\r
130 /* Message ID limits*/
\r
132 #define CAN_LAST_STD_ID ((1<<11) - 1)
\r
133 #define CAN_LAST_EXT_ID ((1L<<29) - 1)
\r
135 /* Exported functions ------------------------------------------------------- */
\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
163 #endif /* __75x_CAN_H */
\r
165 /******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/
\r