]> git.sur5r.net Git - freertos/blob
d0b1e71a759c37c095838226c95f94ed333d8a4f
[freertos] /
1 /*\r
2  * @brief LPC18xx/43xx CCAN driver\r
3  *\r
4  * @note\r
5  * Copyright(C) NXP Semiconductors, 2012\r
6  * All rights reserved.\r
7  *\r
8  * @par\r
9  * Software that is described herein is for illustrative purposes only\r
10  * which provides customers with programming information regarding the\r
11  * LPC products.  This software is supplied "AS IS" without any warranties of\r
12  * any kind, and NXP Semiconductors and its licensor disclaim any and\r
13  * all warranties, express or implied, including all implied warranties of\r
14  * merchantability, fitness for a particular purpose and non-infringement of\r
15  * intellectual property rights.  NXP Semiconductors assumes no responsibility\r
16  * or liability for the use of the software, conveys no license or rights under any\r
17  * patent, copyright, mask work right, or any other intellectual property rights in\r
18  * or to any products. NXP Semiconductors reserves the right to make changes\r
19  * in the software without notification. NXP Semiconductors also makes no\r
20  * representation or warranty that such application will be suitable for the\r
21  * specified use without further testing or modification.\r
22  *\r
23  * @par\r
24  * Permission to use, copy, modify, and distribute this software and its\r
25  * documentation is hereby granted, under NXP Semiconductors' and its\r
26  * licensor's relevant copyrights in the software, without fee, provided that it\r
27  * is used in conjunction with NXP Semiconductors microcontrollers.  This\r
28  * copyright, permission, and disclaimer notice must appear in all copies of\r
29  * this code.\r
30  */\r
31 \r
32 #ifndef __CCAN_18XX_43XX_H_\r
33 #define __CCAN_18XX_43XX_H_\r
34 \r
35 #ifdef __cplusplus\r
36 extern "C" {\r
37 #endif\r
38 \r
39 #define CCAN_SEG1_DEFAULT_VAL 5\r
40 #define CCAN_SEG2_DEFAULT_VAL 4\r
41 #define CCAN_SJW_DEFAULT_VAL 0\r
42 \r
43 /** @defgroup CCAN_18XX_43XX CHIP: LPC18xx/43xx CCAN driver\r
44  * @ingroup CHIP_18XX_43XX_Drivers\r
45  * @{\r
46  */\r
47 \r
48 /**\r
49  * @brief       Enable/Disable CCAN Interrupts\r
50  * @param       pCCAN                   : The base of CCAN peripheral on the chip\r
51  * @param       NewState                : New state, ENABLE or DISABLE\r
52  * @return      Nothing\r
53  */\r
54 STATIC INLINE void Chip_CCAN_IntEnable(LPC_CCAN_T *pCCAN, FunctionalState NewState)\r
55 {\r
56         IP_CCAN_IntEnable(pCCAN, (IP_CCAN_INT_T) (CCAN_MODULE_INT | CCAN_STATUS_CHANGE_INT | CCAN_ERR_INT), NewState);\r
57 }\r
58 \r
59 /**\r
60  * @brief       Get the source ID of an interrupt\r
61  * @param       pCCAN   : The base of CCAN peripheral on the chip\r
62  * @return      Interrupt source ID\r
63  */\r
64 STATIC INLINE uint32_t Chip_CCAN_GetIntID(LPC_CCAN_T *pCCAN)\r
65 {\r
66         return IP_CCAN_Get_IntID(pCCAN);\r
67 }\r
68 \r
69 /**\r
70  * @brief       Get the CCAN status register\r
71  * @param       pCCAN   : The base of CCAN peripheral on the chip\r
72  * @return      CCAN status register\r
73  */\r
74 STATIC INLINE uint32_t Chip_CCAN_GetStatus(LPC_CCAN_T *pCCAN)\r
75 {\r
76         return IP_CCAN_GetStatus(pCCAN);\r
77 }\r
78 \r
79 /**\r
80  * @brief       Get a message object in message RAM into the message buffer\r
81  * @param       pCCAN           : The base of CCAN peripheral on the chip\r
82  * @param       msg_num         : The number of message object in message RAM to be get\r
83  * @param       msg_buf         : Pointer of the message buffer\r
84  * @return      Nothing\r
85  */\r
86 STATIC INLINE void Chip_CCAN_GetMsgObject(LPC_CCAN_T *pCCAN, uint8_t msg_num, message_object *msg_buf)\r
87 {\r
88         IP_CCAN_GetMsgObject(LPC_C_CAN0, IF2, msg_num, msg_buf);\r
89 }\r
90 \r
91 /**\r
92  * @brief       Initialize the CCAN peripheral, free all message object in RAM\r
93  * @param       pCCAN           : The base of CCAN peripheral on the chip\r
94  * @return      Nothing\r
95  */\r
96 void Chip_CCAN_Init(LPC_CCAN_T *pCCAN);\r
97 \r
98 /**\r
99  * @brief       De-initialize the CCAN peripheral\r
100  * @param       pCCAN           : The base of CCAN peripheral on the chip\r
101  * @return      Nothing\r
102  */\r
103 void Chip_CCAN_DeInit(LPC_CCAN_T *pCCAN);\r
104 \r
105 /**\r
106  * @brief       Select bit rate for CCAN bus\r
107  * @param       pCCAN           : The base of CCAN peripheral on the chip\r
108  * @param       bitRate : Bit rate to be set\r
109  * @return      Nothing\r
110  */\r
111 void Chip_CCAN_SetBitRate(LPC_CCAN_T *pCCAN, uint32_t bitRate);\r
112 \r
113 /**\r
114  * @brief       Clear the status of CCAN bus\r
115  * @param       pCCAN   : The base of CCAN peripheral on the chip\r
116  * @param       status  : Status to be cleared\r
117  * @return      Nothing\r
118  */\r
119 void Chip_CCAN_ClearStatus(LPC_CCAN_T *pCCAN, IP_CCAN_STATUS_T status);\r
120 \r
121 /**\r
122  * @brief       Clear the pending interrupt\r
123  * @param       pCCAN   : The base of CCAN peripheral on the chip\r
124  * @param       msg_num : Message number\r
125  * @param       TRxMode : Select transmit or receive interrupt to be cleared\r
126  * @return      Nothing\r
127  */\r
128 void Chip_CCAN_ClearIntPend(LPC_CCAN_T *pCCAN, uint8_t msg_num, uint8_t TRxMode);\r
129 \r
130 /**\r
131  * @brief       Send a message\r
132  * @param       pCCAN           : The base of CCAN peripheral on the chip\r
133  * @param       RemoteEnable: Enable/Disable passives transmit by using remote frame\r
134  * @param       msg_ptr         : Message to be transmitted\r
135  * @return      Nothing\r
136  */\r
137 void Chip_CCAN_Send (LPC_CCAN_T *pCCAN, uint32_t RemoteEnable, message_object *msg_ptr);\r
138 \r
139 /**\r
140  * @brief       Register a message ID for receiving\r
141  * @param       pCCAN           : The base of CCAN peripheral on the chip\r
142  * @param       rev_id          : Received message ID\r
143  * @return      Nothing\r
144  */\r
145 void Chip_CCAN_AddReceiveID(LPC_CCAN_T *pCCAN, uint32_t rev_id);\r
146 \r
147 /**\r
148  * @brief       Remove a registered message ID from receiving\r
149  * @param       pCCAN           : The base of CCAN peripheral on the chip\r
150  * @param       rev_id          : Received message ID to be removed\r
151  * @return      Nothing\r
152  */\r
153 void Chip_CCAN_DeleteReceiveID(LPC_CCAN_T *pCCAN, uint32_t rev_id);\r
154 \r
155 /**\r
156  * @}\r
157  */\r
158 \r
159 #ifdef __cplusplus\r
160 }\r
161 #endif\r
162 \r
163 #endif /* __CCAN_18XX_43XX_H_ */\r