Subversion Repositories NaviCtrl

Rev

Details | Last modification | View Log | RSS feed

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