Date: March 20, 2011 This library is created from "LPC17xx CMSIS-Compliant Standard Peripheral Firmware Driver Library (GNU, Keil, IAR) (Jan 28, 2011)", available from NXP's website, under "All microcontrollers support documents" [[http://ics.nxp.com/support/documents/microcontrollers/?type=software]] You will need to follow [[/projects/libraries/svn/mbed/trunk/LPC1768/LPC17xx.h]] while using this library Examples provided here [[/users/frank26080115/programs/LPC1700CMSIS_Examples/]] The beautiful thing is that NXP does not place copyright protection on any of the files in here Only a few modifications are made to make it compile with the mbed online compiler, I fixed some warnings as well. This is untested as of March 20, 2011 Forum post about this library: [[/forum/mbed/topic/2030/]]

Committer:
frank26080115
Date:
Sun Mar 20 18:45:15 2011 +0000
Revision:
0:84d7747641aa

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frank26080115 0:84d7747641aa 1 /***********************************************************************//**
frank26080115 0:84d7747641aa 2 * @file lpc17xx_can.h
frank26080115 0:84d7747641aa 3 * @brief Contains all macro definitions and function prototypes
frank26080115 0:84d7747641aa 4 * support for CAN firmware library on LPC17xx
frank26080115 0:84d7747641aa 5 * @version 3.0
frank26080115 0:84d7747641aa 6 * @date 18. June. 2010
frank26080115 0:84d7747641aa 7 * @author NXP MCU SW Application Team
frank26080115 0:84d7747641aa 8 **************************************************************************
frank26080115 0:84d7747641aa 9 * Software that is described herein is for illustrative purposes only
frank26080115 0:84d7747641aa 10 * which provides customers with programming information regarding the
frank26080115 0:84d7747641aa 11 * products. This software is supplied "AS IS" without any warranties.
frank26080115 0:84d7747641aa 12 * NXP Semiconductors assumes no responsibility or liability for the
frank26080115 0:84d7747641aa 13 * use of the software, conveys no license or title under any patent,
frank26080115 0:84d7747641aa 14 * copyright, or mask work right to the product. NXP Semiconductors
frank26080115 0:84d7747641aa 15 * reserves the right to make changes in the software without
frank26080115 0:84d7747641aa 16 * notification. NXP Semiconductors also make no representation or
frank26080115 0:84d7747641aa 17 * warranty that such application will be suitable for the specified
frank26080115 0:84d7747641aa 18 * use without further testing or modification.
frank26080115 0:84d7747641aa 19 **************************************************************************/
frank26080115 0:84d7747641aa 20
frank26080115 0:84d7747641aa 21 /* Peripheral group ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 22 /** @defgroup CAN CAN
frank26080115 0:84d7747641aa 23 * @ingroup LPC1700CMSIS_FwLib_Drivers
frank26080115 0:84d7747641aa 24 * @{
frank26080115 0:84d7747641aa 25 */
frank26080115 0:84d7747641aa 26
frank26080115 0:84d7747641aa 27 #ifndef LPC17XX_CAN_H_
frank26080115 0:84d7747641aa 28 #define LPC17XX_CAN_H_
frank26080115 0:84d7747641aa 29
frank26080115 0:84d7747641aa 30 /* Includes ------------------------------------------------------------------- */
frank26080115 0:84d7747641aa 31 #include "LPC17xx.h"
frank26080115 0:84d7747641aa 32 #include "lpc_types.h"
frank26080115 0:84d7747641aa 33
frank26080115 0:84d7747641aa 34 #ifdef __cplusplus
frank26080115 0:84d7747641aa 35 extern "C"
frank26080115 0:84d7747641aa 36 {
frank26080115 0:84d7747641aa 37 #endif
frank26080115 0:84d7747641aa 38
frank26080115 0:84d7747641aa 39 /* Public Types --------------------------------------------------------------- */
frank26080115 0:84d7747641aa 40 /** @defgroup CAN_Public_Macros CAN Public Macros
frank26080115 0:84d7747641aa 41 * @{
frank26080115 0:84d7747641aa 42 */
frank26080115 0:84d7747641aa 43 #define MSG_ENABLE ((uint8_t)(0))
frank26080115 0:84d7747641aa 44 #define MSG_DISABLE ((uint8_t)(1))
frank26080115 0:84d7747641aa 45 #define CAN1_CTRL ((uint8_t)(0))
frank26080115 0:84d7747641aa 46 #define CAN2_CTRL ((uint8_t)(1))
frank26080115 0:84d7747641aa 47 #define PARAM_FULLCAN_IC(n) ((n==FULLCAN_IC0)||(n==FULLCAN_IC1))
frank26080115 0:84d7747641aa 48 #define ID_11 1
frank26080115 0:84d7747641aa 49 #define MAX_HW_FULLCAN_OBJ 64
frank26080115 0:84d7747641aa 50 #define MAX_SW_FULLCAN_OBJ 32
frank26080115 0:84d7747641aa 51
frank26080115 0:84d7747641aa 52 /**
frank26080115 0:84d7747641aa 53 * @}
frank26080115 0:84d7747641aa 54 */
frank26080115 0:84d7747641aa 55
frank26080115 0:84d7747641aa 56 /* Private Macros ------------------------------------------------------------- */
frank26080115 0:84d7747641aa 57 /** @defgroup CAN_Private_Macros CAN Private Macros
frank26080115 0:84d7747641aa 58 * @{
frank26080115 0:84d7747641aa 59 */
frank26080115 0:84d7747641aa 60
frank26080115 0:84d7747641aa 61 /* --------------------- BIT DEFINITIONS -------------------------------------- */
frank26080115 0:84d7747641aa 62 /*********************************************************************//**
frank26080115 0:84d7747641aa 63 * Macro defines for CAN Mode Register
frank26080115 0:84d7747641aa 64 **********************************************************************/
frank26080115 0:84d7747641aa 65 /** CAN Reset mode */
frank26080115 0:84d7747641aa 66 #define CAN_MOD_RM ((uint32_t)(1))
frank26080115 0:84d7747641aa 67 /** CAN Listen Only Mode */
frank26080115 0:84d7747641aa 68 #define CAN_MOD_LOM ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 69 /** CAN Self Test mode */
frank26080115 0:84d7747641aa 70 #define CAN_MOD_STM ((uint32_t)(1<<2))
frank26080115 0:84d7747641aa 71 /** CAN Transmit Priority mode */
frank26080115 0:84d7747641aa 72 #define CAN_MOD_TPM ((uint32_t)(1<<3))
frank26080115 0:84d7747641aa 73 /** CAN Sleep mode */
frank26080115 0:84d7747641aa 74 #define CAN_MOD_SM ((uint32_t)(1<<4))
frank26080115 0:84d7747641aa 75 /** CAN Receive Polarity mode */
frank26080115 0:84d7747641aa 76 #define CAN_MOD_RPM ((uint32_t)(1<<5))
frank26080115 0:84d7747641aa 77 /** CAN Test mode */
frank26080115 0:84d7747641aa 78 #define CAN_MOD_TM ((uint32_t)(1<<7))
frank26080115 0:84d7747641aa 79
frank26080115 0:84d7747641aa 80 /*********************************************************************//**
frank26080115 0:84d7747641aa 81 * Macro defines for CAN Command Register
frank26080115 0:84d7747641aa 82 **********************************************************************/
frank26080115 0:84d7747641aa 83 /** CAN Transmission Request */
frank26080115 0:84d7747641aa 84 #define CAN_CMR_TR ((uint32_t)(1))
frank26080115 0:84d7747641aa 85 /** CAN Abort Transmission */
frank26080115 0:84d7747641aa 86 #define CAN_CMR_AT ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 87 /** CAN Release Receive Buffer */
frank26080115 0:84d7747641aa 88 #define CAN_CMR_RRB ((uint32_t)(1<<2))
frank26080115 0:84d7747641aa 89 /** CAN Clear Data Overrun */
frank26080115 0:84d7747641aa 90 #define CAN_CMR_CDO ((uint32_t)(1<<3))
frank26080115 0:84d7747641aa 91 /** CAN Self Reception Request */
frank26080115 0:84d7747641aa 92 #define CAN_CMR_SRR ((uint32_t)(1<<4))
frank26080115 0:84d7747641aa 93 /** CAN Select Tx Buffer 1 */
frank26080115 0:84d7747641aa 94 #define CAN_CMR_STB1 ((uint32_t)(1<<5))
frank26080115 0:84d7747641aa 95 /** CAN Select Tx Buffer 2 */
frank26080115 0:84d7747641aa 96 #define CAN_CMR_STB2 ((uint32_t)(1<<6))
frank26080115 0:84d7747641aa 97 /** CAN Select Tx Buffer 3 */
frank26080115 0:84d7747641aa 98 #define CAN_CMR_STB3 ((uint32_t)(1<<7))
frank26080115 0:84d7747641aa 99
frank26080115 0:84d7747641aa 100 /*********************************************************************//**
frank26080115 0:84d7747641aa 101 * Macro defines for CAN Global Status Register
frank26080115 0:84d7747641aa 102 **********************************************************************/
frank26080115 0:84d7747641aa 103 /** CAN Receive Buffer Status */
frank26080115 0:84d7747641aa 104 #define CAN_GSR_RBS ((uint32_t)(1))
frank26080115 0:84d7747641aa 105 /** CAN Data Overrun Status */
frank26080115 0:84d7747641aa 106 #define CAN_GSR_DOS ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 107 /** CAN Transmit Buffer Status */
frank26080115 0:84d7747641aa 108 #define CAN_GSR_TBS ((uint32_t)(1<<2))
frank26080115 0:84d7747641aa 109 /** CAN Transmit Complete Status */
frank26080115 0:84d7747641aa 110 #define CAN_GSR_TCS ((uint32_t)(1<<3))
frank26080115 0:84d7747641aa 111 /** CAN Receive Status */
frank26080115 0:84d7747641aa 112 #define CAN_GSR_RS ((uint32_t)(1<<4))
frank26080115 0:84d7747641aa 113 /** CAN Transmit Status */
frank26080115 0:84d7747641aa 114 #define CAN_GSR_TS ((uint32_t)(1<<5))
frank26080115 0:84d7747641aa 115 /** CAN Error Status */
frank26080115 0:84d7747641aa 116 #define CAN_GSR_ES ((uint32_t)(1<<6))
frank26080115 0:84d7747641aa 117 /** CAN Bus Status */
frank26080115 0:84d7747641aa 118 #define CAN_GSR_BS ((uint32_t)(1<<7))
frank26080115 0:84d7747641aa 119 /** CAN Current value of the Rx Error Counter */
frank26080115 0:84d7747641aa 120 #define CAN_GSR_RXERR(n) ((uint32_t)((n&0xFF)<<16))
frank26080115 0:84d7747641aa 121 /** CAN Current value of the Tx Error Counter */
frank26080115 0:84d7747641aa 122 #define CAN_GSR_TXERR(n) ((uint32_t)(n&0xFF)<<24))
frank26080115 0:84d7747641aa 123
frank26080115 0:84d7747641aa 124 /*********************************************************************//**
frank26080115 0:84d7747641aa 125 * Macro defines for CAN Interrupt and Capture Register
frank26080115 0:84d7747641aa 126 **********************************************************************/
frank26080115 0:84d7747641aa 127 /** CAN Receive Interrupt */
frank26080115 0:84d7747641aa 128 #define CAN_ICR_RI ((uint32_t)(1))
frank26080115 0:84d7747641aa 129 /** CAN Transmit Interrupt 1 */
frank26080115 0:84d7747641aa 130 #define CAN_ICR_TI1 ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 131 /** CAN Error Warning Interrupt */
frank26080115 0:84d7747641aa 132 #define CAN_ICR_EI ((uint32_t)(1<<2))
frank26080115 0:84d7747641aa 133 /** CAN Data Overrun Interrupt */
frank26080115 0:84d7747641aa 134 #define CAN_ICR_DOI ((uint32_t)(1<<3))
frank26080115 0:84d7747641aa 135 /** CAN Wake-Up Interrupt */
frank26080115 0:84d7747641aa 136 #define CAN_ICR_WUI ((uint32_t)(1<<4))
frank26080115 0:84d7747641aa 137 /** CAN Error Passive Interrupt */
frank26080115 0:84d7747641aa 138 #define CAN_ICR_EPI ((uint32_t)(1<<5))
frank26080115 0:84d7747641aa 139 /** CAN Arbitration Lost Interrupt */
frank26080115 0:84d7747641aa 140 #define CAN_ICR_ALI ((uint32_t)(1<<6))
frank26080115 0:84d7747641aa 141 /** CAN Bus Error Interrupt */
frank26080115 0:84d7747641aa 142 #define CAN_ICR_BEI ((uint32_t)(1<<7))
frank26080115 0:84d7747641aa 143 /** CAN ID Ready Interrupt */
frank26080115 0:84d7747641aa 144 #define CAN_ICR_IDI ((uint32_t)(1<<8))
frank26080115 0:84d7747641aa 145 /** CAN Transmit Interrupt 2 */
frank26080115 0:84d7747641aa 146 #define CAN_ICR_TI2 ((uint32_t)(1<<9))
frank26080115 0:84d7747641aa 147 /** CAN Transmit Interrupt 3 */
frank26080115 0:84d7747641aa 148 #define CAN_ICR_TI3 ((uint32_t)(1<<10))
frank26080115 0:84d7747641aa 149 /** CAN Error Code Capture */
frank26080115 0:84d7747641aa 150 #define CAN_ICR_ERRBIT(n) ((uint32_t)((n&0x1F)<<16))
frank26080115 0:84d7747641aa 151 /** CAN Error Direction */
frank26080115 0:84d7747641aa 152 #define CAN_ICR_ERRDIR ((uint32_t)(1<<21))
frank26080115 0:84d7747641aa 153 /** CAN Error Capture */
frank26080115 0:84d7747641aa 154 #define CAN_ICR_ERRC(n) ((uint32_t)((n&0x3)<<22))
frank26080115 0:84d7747641aa 155 /** CAN Arbitration Lost Capture */
frank26080115 0:84d7747641aa 156 #define CAN_ICR_ALCBIT(n) ((uint32_t)((n&0xFF)<<24))
frank26080115 0:84d7747641aa 157
frank26080115 0:84d7747641aa 158 /*********************************************************************//**
frank26080115 0:84d7747641aa 159 * Macro defines for CAN Interrupt Enable Register
frank26080115 0:84d7747641aa 160 **********************************************************************/
frank26080115 0:84d7747641aa 161 /** CAN Receive Interrupt Enable */
frank26080115 0:84d7747641aa 162 #define CAN_IER_RIE ((uint32_t)(1))
frank26080115 0:84d7747641aa 163 /** CAN Transmit Interrupt Enable for buffer 1 */
frank26080115 0:84d7747641aa 164 #define CAN_IER_TIE1 ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 165 /** CAN Error Warning Interrupt Enable */
frank26080115 0:84d7747641aa 166 #define CAN_IER_EIE ((uint32_t)(1<<2))
frank26080115 0:84d7747641aa 167 /** CAN Data Overrun Interrupt Enable */
frank26080115 0:84d7747641aa 168 #define CAN_IER_DOIE ((uint32_t)(1<<3))
frank26080115 0:84d7747641aa 169 /** CAN Wake-Up Interrupt Enable */
frank26080115 0:84d7747641aa 170 #define CAN_IER_WUIE ((uint32_t)(1<<4))
frank26080115 0:84d7747641aa 171 /** CAN Error Passive Interrupt Enable */
frank26080115 0:84d7747641aa 172 #define CAN_IER_EPIE ((uint32_t)(1<<5))
frank26080115 0:84d7747641aa 173 /** CAN Arbitration Lost Interrupt Enable */
frank26080115 0:84d7747641aa 174 #define CAN_IER_ALIE ((uint32_t)(1<<6))
frank26080115 0:84d7747641aa 175 /** CAN Bus Error Interrupt Enable */
frank26080115 0:84d7747641aa 176 #define CAN_IER_BEIE ((uint32_t)(1<<7))
frank26080115 0:84d7747641aa 177 /** CAN ID Ready Interrupt Enable */
frank26080115 0:84d7747641aa 178 #define CAN_IER_IDIE ((uint32_t)(1<<8))
frank26080115 0:84d7747641aa 179 /** CAN Transmit Enable Interrupt for Buffer 2 */
frank26080115 0:84d7747641aa 180 #define CAN_IER_TIE2 ((uint32_t)(1<<9))
frank26080115 0:84d7747641aa 181 /** CAN Transmit Enable Interrupt for Buffer 3 */
frank26080115 0:84d7747641aa 182 #define CAN_IER_TIE3 ((uint32_t)(1<<10))
frank26080115 0:84d7747641aa 183
frank26080115 0:84d7747641aa 184 /*********************************************************************//**
frank26080115 0:84d7747641aa 185 * Macro defines for CAN Bus Timing Register
frank26080115 0:84d7747641aa 186 **********************************************************************/
frank26080115 0:84d7747641aa 187 /** CAN Baudrate Prescaler */
frank26080115 0:84d7747641aa 188 #define CAN_BTR_BRP(n) ((uint32_t)(n&0x3FF))
frank26080115 0:84d7747641aa 189 /** CAN Synchronization Jump Width */
frank26080115 0:84d7747641aa 190 #define CAN_BTR_SJM(n) ((uint32_t)((n&0x3)<<14))
frank26080115 0:84d7747641aa 191 /** CAN Time Segment 1 */
frank26080115 0:84d7747641aa 192 #define CAN_BTR_TESG1(n) ((uint32_t)(n&0xF)<<16))
frank26080115 0:84d7747641aa 193 /** CAN Time Segment 2 */
frank26080115 0:84d7747641aa 194 #define CAN_BTR_TESG2(n) ((uint32_t)(n&0xF)<<20))
frank26080115 0:84d7747641aa 195 /** CAN Sampling */
frank26080115 0:84d7747641aa 196 #define CAN_BTR_SAM(n) ((uint32_t)(1<<23))
frank26080115 0:84d7747641aa 197
frank26080115 0:84d7747641aa 198 /*********************************************************************//**
frank26080115 0:84d7747641aa 199 * Macro defines for CAN Error Warning Limit Register
frank26080115 0:84d7747641aa 200 **********************************************************************/
frank26080115 0:84d7747641aa 201 /** CAN Error Warning Limit */
frank26080115 0:84d7747641aa 202 #define CAN_EWL_EWL(n) ((uint32_t)(n&0xFF))
frank26080115 0:84d7747641aa 203
frank26080115 0:84d7747641aa 204 /*********************************************************************//**
frank26080115 0:84d7747641aa 205 * Macro defines for CAN Status Register
frank26080115 0:84d7747641aa 206 **********************************************************************/
frank26080115 0:84d7747641aa 207 /** CAN Receive Buffer Status */
frank26080115 0:84d7747641aa 208 #define CAN_SR_RBS ((uint32_t)(1))
frank26080115 0:84d7747641aa 209 /** CAN Data Overrun Status */
frank26080115 0:84d7747641aa 210 #define CAN_SR_DOS ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 211 /** CAN Transmit Buffer Status 1 */
frank26080115 0:84d7747641aa 212 #define CAN_SR_TBS1 ((uint32_t)(1<<2))
frank26080115 0:84d7747641aa 213 /** CAN Transmission Complete Status of Buffer 1 */
frank26080115 0:84d7747641aa 214 #define CAN_SR_TCS1 ((uint32_t)(1<<3))
frank26080115 0:84d7747641aa 215 /** CAN Receive Status */
frank26080115 0:84d7747641aa 216 #define CAN_SR_RS ((uint32_t)(1<<4))
frank26080115 0:84d7747641aa 217 /** CAN Transmit Status 1 */
frank26080115 0:84d7747641aa 218 #define CAN_SR_TS1 ((uint32_t)(1<<5))
frank26080115 0:84d7747641aa 219 /** CAN Error Status */
frank26080115 0:84d7747641aa 220 #define CAN_SR_ES ((uint32_t)(1<<6))
frank26080115 0:84d7747641aa 221 /** CAN Bus Status */
frank26080115 0:84d7747641aa 222 #define CAN_SR_BS ((uint32_t)(1<<7))
frank26080115 0:84d7747641aa 223 /** CAN Transmit Buffer Status 2 */
frank26080115 0:84d7747641aa 224 #define CAN_SR_TBS2 ((uint32_t)(1<<10))
frank26080115 0:84d7747641aa 225 /** CAN Transmission Complete Status of Buffer 2 */
frank26080115 0:84d7747641aa 226 #define CAN_SR_TCS2 ((uint32_t)(1<<11))
frank26080115 0:84d7747641aa 227 /** CAN Transmit Status 2 */
frank26080115 0:84d7747641aa 228 #define CAN_SR_TS2 ((uint32_t)(1<<13))
frank26080115 0:84d7747641aa 229 /** CAN Transmit Buffer Status 2 */
frank26080115 0:84d7747641aa 230 #define CAN_SR_TBS3 ((uint32_t)(1<<18))
frank26080115 0:84d7747641aa 231 /** CAN Transmission Complete Status of Buffer 2 */
frank26080115 0:84d7747641aa 232 #define CAN_SR_TCS3 ((uint32_t)(1<<19))
frank26080115 0:84d7747641aa 233 /** CAN Transmit Status 2 */
frank26080115 0:84d7747641aa 234 #define CAN_SR_TS3 ((uint32_t)(1<<21))
frank26080115 0:84d7747641aa 235
frank26080115 0:84d7747641aa 236 /*********************************************************************//**
frank26080115 0:84d7747641aa 237 * Macro defines for CAN Receive Frame Status Register
frank26080115 0:84d7747641aa 238 **********************************************************************/
frank26080115 0:84d7747641aa 239 /** CAN ID Index */
frank26080115 0:84d7747641aa 240 #define CAN_RFS_ID_INDEX(n) ((uint32_t)(n&0x3FF))
frank26080115 0:84d7747641aa 241 /** CAN Bypass */
frank26080115 0:84d7747641aa 242 #define CAN_RFS_BP ((uint32_t)(1<<10))
frank26080115 0:84d7747641aa 243 /** CAN Data Length Code */
frank26080115 0:84d7747641aa 244 #define CAN_RFS_DLC(n) ((uint32_t)((n&0xF)<<16)
frank26080115 0:84d7747641aa 245 /** CAN Remote Transmission Request */
frank26080115 0:84d7747641aa 246 #define CAN_RFS_RTR ((uint32_t)(1<<30))
frank26080115 0:84d7747641aa 247 /** CAN control 11 bit or 29 bit Identifier */
frank26080115 0:84d7747641aa 248 #define CAN_RFS_FF ((uint32_t)(1<<31))
frank26080115 0:84d7747641aa 249
frank26080115 0:84d7747641aa 250 /*********************************************************************//**
frank26080115 0:84d7747641aa 251 * Macro defines for CAN Receive Identifier Register
frank26080115 0:84d7747641aa 252 **********************************************************************/
frank26080115 0:84d7747641aa 253 /** CAN 11 bit Identifier */
frank26080115 0:84d7747641aa 254 #define CAN_RID_ID_11(n) ((uint32_t)(n&0x7FF))
frank26080115 0:84d7747641aa 255 /** CAN 29 bit Identifier */
frank26080115 0:84d7747641aa 256 #define CAN_RID_ID_29(n) ((uint32_t)(n&0x1FFFFFFF))
frank26080115 0:84d7747641aa 257
frank26080115 0:84d7747641aa 258 /*********************************************************************//**
frank26080115 0:84d7747641aa 259 * Macro defines for CAN Receive Data A Register
frank26080115 0:84d7747641aa 260 **********************************************************************/
frank26080115 0:84d7747641aa 261 /** CAN Receive Data 1 */
frank26080115 0:84d7747641aa 262 #define CAN_RDA_DATA1(n) ((uint32_t)(n&0xFF))
frank26080115 0:84d7747641aa 263 /** CAN Receive Data 2 */
frank26080115 0:84d7747641aa 264 #define CAN_RDA_DATA2(n) ((uint32_t)((n&0xFF)<<8))
frank26080115 0:84d7747641aa 265 /** CAN Receive Data 3 */
frank26080115 0:84d7747641aa 266 #define CAN_RDA_DATA3(n) ((uint32_t)((n&0xFF)<<16))
frank26080115 0:84d7747641aa 267 /** CAN Receive Data 4 */
frank26080115 0:84d7747641aa 268 #define CAN_RDA_DATA4(n) ((uint32_t)((n&0xFF)<<24))
frank26080115 0:84d7747641aa 269
frank26080115 0:84d7747641aa 270 /*********************************************************************//**
frank26080115 0:84d7747641aa 271 * Macro defines for CAN Receive Data B Register
frank26080115 0:84d7747641aa 272 **********************************************************************/
frank26080115 0:84d7747641aa 273 /** CAN Receive Data 5 */
frank26080115 0:84d7747641aa 274 #define CAN_RDB_DATA5(n) ((uint32_t)(n&0xFF))
frank26080115 0:84d7747641aa 275 /** CAN Receive Data 6 */
frank26080115 0:84d7747641aa 276 #define CAN_RDB_DATA6(n) ((uint32_t)((n&0xFF)<<8))
frank26080115 0:84d7747641aa 277 /** CAN Receive Data 7 */
frank26080115 0:84d7747641aa 278 #define CAN_RDB_DATA7(n) ((uint32_t)((n&0xFF)<<16))
frank26080115 0:84d7747641aa 279 /** CAN Receive Data 8 */
frank26080115 0:84d7747641aa 280 #define CAN_RDB_DATA8(n) ((uint32_t)((n&0xFF)<<24))
frank26080115 0:84d7747641aa 281
frank26080115 0:84d7747641aa 282 /*********************************************************************//**
frank26080115 0:84d7747641aa 283 * Macro defines for CAN Transmit Frame Information Register
frank26080115 0:84d7747641aa 284 **********************************************************************/
frank26080115 0:84d7747641aa 285 /** CAN Priority */
frank26080115 0:84d7747641aa 286 #define CAN_TFI_PRIO(n) ((uint32_t)(n&0xFF))
frank26080115 0:84d7747641aa 287 /** CAN Data Length Code */
frank26080115 0:84d7747641aa 288 #define CAN_TFI_DLC(n) ((uint32_t)((n&0xF)<<16))
frank26080115 0:84d7747641aa 289 /** CAN Remote Frame Transmission */
frank26080115 0:84d7747641aa 290 #define CAN_TFI_RTR ((uint32_t)(1<<30))
frank26080115 0:84d7747641aa 291 /** CAN control 11-bit or 29-bit Identifier */
frank26080115 0:84d7747641aa 292 #define CAN_TFI_FF ((uint32_t)(1<<31))
frank26080115 0:84d7747641aa 293
frank26080115 0:84d7747641aa 294 /*********************************************************************//**
frank26080115 0:84d7747641aa 295 * Macro defines for CAN Transmit Identifier Register
frank26080115 0:84d7747641aa 296 **********************************************************************/
frank26080115 0:84d7747641aa 297 /** CAN 11-bit Identifier */
frank26080115 0:84d7747641aa 298 #define CAN_TID_ID11(n) ((uint32_t)(n&0x7FF))
frank26080115 0:84d7747641aa 299 /** CAN 11-bit Identifier */
frank26080115 0:84d7747641aa 300 #define CAN_TID_ID29(n) ((uint32_t)(n&0x1FFFFFFF))
frank26080115 0:84d7747641aa 301
frank26080115 0:84d7747641aa 302 /*********************************************************************//**
frank26080115 0:84d7747641aa 303 * Macro defines for CAN Transmit Data A Register
frank26080115 0:84d7747641aa 304 **********************************************************************/
frank26080115 0:84d7747641aa 305 /** CAN Transmit Data 1 */
frank26080115 0:84d7747641aa 306 #define CAN_TDA_DATA1(n) ((uint32_t)(n&0xFF))
frank26080115 0:84d7747641aa 307 /** CAN Transmit Data 2 */
frank26080115 0:84d7747641aa 308 #define CAN_TDA_DATA2(n) ((uint32_t)((n&0xFF)<<8))
frank26080115 0:84d7747641aa 309 /** CAN Transmit Data 3 */
frank26080115 0:84d7747641aa 310 #define CAN_TDA_DATA3(n) ((uint32_t)((n&0xFF)<<16))
frank26080115 0:84d7747641aa 311 /** CAN Transmit Data 4 */
frank26080115 0:84d7747641aa 312 #define CAN_TDA_DATA4(n) ((uint32_t)((n&0xFF)<<24))
frank26080115 0:84d7747641aa 313
frank26080115 0:84d7747641aa 314 /*********************************************************************//**
frank26080115 0:84d7747641aa 315 * Macro defines for CAN Transmit Data B Register
frank26080115 0:84d7747641aa 316 **********************************************************************/
frank26080115 0:84d7747641aa 317 /** CAN Transmit Data 5 */
frank26080115 0:84d7747641aa 318 #define CAN_TDA_DATA5(n) ((uint32_t)(n&0xFF))
frank26080115 0:84d7747641aa 319 /** CAN Transmit Data 6 */
frank26080115 0:84d7747641aa 320 #define CAN_TDA_DATA6(n) ((uint32_t)((n&0xFF)<<8))
frank26080115 0:84d7747641aa 321 /** CAN Transmit Data 7 */
frank26080115 0:84d7747641aa 322 #define CAN_TDA_DATA7(n) ((uint32_t)((n&0xFF)<<16))
frank26080115 0:84d7747641aa 323 /** CAN Transmit Data 8 */
frank26080115 0:84d7747641aa 324 #define CAN_TDA_DATA8(n) ((uint32_t)((n&0xFF)<<24))
frank26080115 0:84d7747641aa 325
frank26080115 0:84d7747641aa 326 /*********************************************************************//**
frank26080115 0:84d7747641aa 327 * Macro defines for CAN Sleep Clear Register
frank26080115 0:84d7747641aa 328 **********************************************************************/
frank26080115 0:84d7747641aa 329 /** CAN1 Sleep mode */
frank26080115 0:84d7747641aa 330 #define CAN1SLEEPCLR ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 331 /** CAN2 Sleep Mode */
frank26080115 0:84d7747641aa 332 #define CAN2SLEEPCLR ((uint32_t)(1<<2))
frank26080115 0:84d7747641aa 333
frank26080115 0:84d7747641aa 334 /*********************************************************************//**
frank26080115 0:84d7747641aa 335 * Macro defines for CAN Wake up Flags Register
frank26080115 0:84d7747641aa 336 **********************************************************************/
frank26080115 0:84d7747641aa 337 /** CAN1 Sleep mode */
frank26080115 0:84d7747641aa 338 #define CAN_WAKEFLAGES_CAN1WAKE ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 339 /** CAN2 Sleep Mode */
frank26080115 0:84d7747641aa 340 #define CAN_WAKEFLAGES_CAN2WAKE ((uint32_t)(1<<2))
frank26080115 0:84d7747641aa 341
frank26080115 0:84d7747641aa 342 /*********************************************************************//**
frank26080115 0:84d7747641aa 343 * Macro defines for Central transmit Status Register
frank26080115 0:84d7747641aa 344 **********************************************************************/
frank26080115 0:84d7747641aa 345 /** CAN Transmit 1 */
frank26080115 0:84d7747641aa 346 #define CAN_TSR_TS1 ((uint32_t)(1))
frank26080115 0:84d7747641aa 347 /** CAN Transmit 2 */
frank26080115 0:84d7747641aa 348 #define CAN_TSR_TS2 ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 349 /** CAN Transmit Buffer Status 1 */
frank26080115 0:84d7747641aa 350 #define CAN_TSR_TBS1 ((uint32_t)(1<<8))
frank26080115 0:84d7747641aa 351 /** CAN Transmit Buffer Status 2 */
frank26080115 0:84d7747641aa 352 #define CAN_TSR_TBS2 ((uint32_t)(1<<9))
frank26080115 0:84d7747641aa 353 /** CAN Transmission Complete Status 1 */
frank26080115 0:84d7747641aa 354 #define CAN_TSR_TCS1 ((uint32_t)(1<<16))
frank26080115 0:84d7747641aa 355 /** CAN Transmission Complete Status 2 */
frank26080115 0:84d7747641aa 356 #define CAN_TSR_TCS2 ((uint32_t)(1<<17))
frank26080115 0:84d7747641aa 357
frank26080115 0:84d7747641aa 358 /*********************************************************************//**
frank26080115 0:84d7747641aa 359 * Macro defines for Central Receive Status Register
frank26080115 0:84d7747641aa 360 **********************************************************************/
frank26080115 0:84d7747641aa 361 /** CAN Receive Status 1 */
frank26080115 0:84d7747641aa 362 #define CAN_RSR_RS1 ((uint32_t)(1))
frank26080115 0:84d7747641aa 363 /** CAN Receive Status 1 */
frank26080115 0:84d7747641aa 364 #define CAN_RSR_RS2 ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 365 /** CAN Receive Buffer Status 1*/
frank26080115 0:84d7747641aa 366 #define CAN_RSR_RB1 ((uint32_t)(1<<8))
frank26080115 0:84d7747641aa 367 /** CAN Receive Buffer Status 2*/
frank26080115 0:84d7747641aa 368 #define CAN_RSR_RB2 ((uint32_t)(1<<9))
frank26080115 0:84d7747641aa 369 /** CAN Data Overrun Status 1 */
frank26080115 0:84d7747641aa 370 #define CAN_RSR_DOS1 ((uint32_t)(1<<16))
frank26080115 0:84d7747641aa 371 /** CAN Data Overrun Status 1 */
frank26080115 0:84d7747641aa 372 #define CAN_RSR_DOS2 ((uint32_t)(1<<17))
frank26080115 0:84d7747641aa 373
frank26080115 0:84d7747641aa 374 /*********************************************************************//**
frank26080115 0:84d7747641aa 375 * Macro defines for Central Miscellaneous Status Register
frank26080115 0:84d7747641aa 376 **********************************************************************/
frank26080115 0:84d7747641aa 377 /** Same CAN Error Status in CAN1GSR */
frank26080115 0:84d7747641aa 378 #define CAN_MSR_E1 ((uint32_t)(1))
frank26080115 0:84d7747641aa 379 /** Same CAN Error Status in CAN2GSR */
frank26080115 0:84d7747641aa 380 #define CAN_MSR_E2 ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 381 /** Same CAN Bus Status in CAN1GSR */
frank26080115 0:84d7747641aa 382 #define CAN_MSR_BS1 ((uint32_t)(1<<8))
frank26080115 0:84d7747641aa 383 /** Same CAN Bus Status in CAN2GSR */
frank26080115 0:84d7747641aa 384 #define CAN_MSR_BS2 ((uint32_t)(1<<9))
frank26080115 0:84d7747641aa 385
frank26080115 0:84d7747641aa 386 /*********************************************************************//**
frank26080115 0:84d7747641aa 387 * Macro defines for Acceptance Filter Mode Register
frank26080115 0:84d7747641aa 388 **********************************************************************/
frank26080115 0:84d7747641aa 389 /** CAN Acceptance Filter Off mode */
frank26080115 0:84d7747641aa 390 #define CAN_AFMR_AccOff ((uint32_t)(1))
frank26080115 0:84d7747641aa 391 /** CAN Acceptance File Bypass mode */
frank26080115 0:84d7747641aa 392 #define CAN_AFMR_AccBP ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 393 /** FullCAN Mode Enhancements */
frank26080115 0:84d7747641aa 394 #define CAN_AFMR_eFCAN ((uint32_t)(1<<2))
frank26080115 0:84d7747641aa 395
frank26080115 0:84d7747641aa 396 /*********************************************************************//**
frank26080115 0:84d7747641aa 397 * Macro defines for Standard Frame Individual Start Address Register
frank26080115 0:84d7747641aa 398 **********************************************************************/
frank26080115 0:84d7747641aa 399 /** The start address of the table of individual Standard Identifier */
frank26080115 0:84d7747641aa 400 #define CAN_STT_sa(n) ((uint32_t)((n&1FF)<<2))
frank26080115 0:84d7747641aa 401
frank26080115 0:84d7747641aa 402 /*********************************************************************//**
frank26080115 0:84d7747641aa 403 * Macro defines for Standard Frame Group Start Address Register
frank26080115 0:84d7747641aa 404 **********************************************************************/
frank26080115 0:84d7747641aa 405 /** The start address of the table of grouped Standard Identifier */
frank26080115 0:84d7747641aa 406 #define CAN_SFF_GRP_sa(n) ((uint32_t)((n&3FF)<<2))
frank26080115 0:84d7747641aa 407
frank26080115 0:84d7747641aa 408 /*********************************************************************//**
frank26080115 0:84d7747641aa 409 * Macro defines for Extended Frame Start Address Register
frank26080115 0:84d7747641aa 410 **********************************************************************/
frank26080115 0:84d7747641aa 411 /** The start address of the table of individual Extended Identifier */
frank26080115 0:84d7747641aa 412 #define CAN_EFF_sa(n) ((uint32_t)((n&1FF)<<2))
frank26080115 0:84d7747641aa 413
frank26080115 0:84d7747641aa 414 /*********************************************************************//**
frank26080115 0:84d7747641aa 415 * Macro defines for Extended Frame Group Start Address Register
frank26080115 0:84d7747641aa 416 **********************************************************************/
frank26080115 0:84d7747641aa 417 /** The start address of the table of grouped Extended Identifier */
frank26080115 0:84d7747641aa 418 #define CAN_Eff_GRP_sa(n) ((uint32_t)((n&3FF)<<2))
frank26080115 0:84d7747641aa 419
frank26080115 0:84d7747641aa 420 /*********************************************************************//**
frank26080115 0:84d7747641aa 421 * Macro defines for End Of AF Table Register
frank26080115 0:84d7747641aa 422 **********************************************************************/
frank26080115 0:84d7747641aa 423 /** The End of Table of AF LookUp Table */
frank26080115 0:84d7747641aa 424 #define CAN_EndofTable(n) ((uint32_t)((n&3FF)<<2))
frank26080115 0:84d7747641aa 425
frank26080115 0:84d7747641aa 426 /*********************************************************************//**
frank26080115 0:84d7747641aa 427 * Macro defines for LUT Error Address Register
frank26080115 0:84d7747641aa 428 **********************************************************************/
frank26080115 0:84d7747641aa 429 /** CAN Look-Up Table Error Address */
frank26080115 0:84d7747641aa 430 #define CAN_LUTerrAd(n) ((uint32_t)((n&1FF)<<2))
frank26080115 0:84d7747641aa 431
frank26080115 0:84d7747641aa 432 /*********************************************************************//**
frank26080115 0:84d7747641aa 433 * Macro defines for LUT Error Register
frank26080115 0:84d7747641aa 434 **********************************************************************/
frank26080115 0:84d7747641aa 435 /** CAN Look-Up Table Error */
frank26080115 0:84d7747641aa 436 #define CAN_LUTerr ((uint32_t)(1))
frank26080115 0:84d7747641aa 437
frank26080115 0:84d7747641aa 438 /*********************************************************************//**
frank26080115 0:84d7747641aa 439 * Macro defines for Global FullCANInterrupt Enable Register
frank26080115 0:84d7747641aa 440 **********************************************************************/
frank26080115 0:84d7747641aa 441 /** Global FullCANInterrupt Enable */
frank26080115 0:84d7747641aa 442 #define CAN_FCANIE ((uint32_t)(1))
frank26080115 0:84d7747641aa 443
frank26080115 0:84d7747641aa 444 /*********************************************************************//**
frank26080115 0:84d7747641aa 445 * Macro defines for FullCAN Interrupt and Capture Register 0
frank26080115 0:84d7747641aa 446 **********************************************************************/
frank26080115 0:84d7747641aa 447 /** FullCAN Interrupt and Capture (0-31)*/
frank26080115 0:84d7747641aa 448 #define CAN_FCANIC0_IntPnd(n) ((uint32_t)(1<<n))
frank26080115 0:84d7747641aa 449
frank26080115 0:84d7747641aa 450 /*********************************************************************//**
frank26080115 0:84d7747641aa 451 * Macro defines for FullCAN Interrupt and Capture Register 1
frank26080115 0:84d7747641aa 452 **********************************************************************/
frank26080115 0:84d7747641aa 453 /** FullCAN Interrupt and Capture (0-31)*/
frank26080115 0:84d7747641aa 454 #define CAN_FCANIC1_IntPnd(n) ((uint32_t)(1<<(n-32)))
frank26080115 0:84d7747641aa 455
frank26080115 0:84d7747641aa 456
frank26080115 0:84d7747641aa 457 /* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
frank26080115 0:84d7747641aa 458 /** Macro to determine if it is valid CAN peripheral or not */
frank26080115 0:84d7747641aa 459 #define PARAM_CANx(x) ((((uint32_t*)x)==((uint32_t *)LPC_CAN1)) \
frank26080115 0:84d7747641aa 460 ||(((uint32_t*)x)==((uint32_t *)LPC_CAN2)))
frank26080115 0:84d7747641aa 461
frank26080115 0:84d7747641aa 462 /* Macro to determine if it is valid CANAF or not*/
frank26080115 0:84d7747641aa 463 #define PARAM_CANAFx(x) (((uint32_t*)x)== ((uint32_t*)LPC_CANAF))
frank26080115 0:84d7747641aa 464
frank26080115 0:84d7747641aa 465 /* Macro to determine if it is valid CANAF RAM or not*/
frank26080115 0:84d7747641aa 466 #define PARAM_CANAFRAMx(x) (((uint32_t*)x)== (uint32_t*)LPC_CANAF_RAM)
frank26080115 0:84d7747641aa 467
frank26080115 0:84d7747641aa 468 /* Macro to determine if it is valid CANCR or not*/
frank26080115 0:84d7747641aa 469 #define PARAM_CANCRx(x) (((uint32_t*)x)==((uint32_t*)LPC_CANCR))
frank26080115 0:84d7747641aa 470
frank26080115 0:84d7747641aa 471 /** Macro to check Data to send valid */
frank26080115 0:84d7747641aa 472 #define PARAM_I2S_DATA(data) ((data>=0)&&(data <= 0xFFFFFFFF))
frank26080115 0:84d7747641aa 473
frank26080115 0:84d7747641aa 474 /** Macro to check frequency value */
frank26080115 0:84d7747641aa 475 #define PRAM_I2S_FREQ(freq) ((freq>=16000)&&(freq <= 96000))
frank26080115 0:84d7747641aa 476
frank26080115 0:84d7747641aa 477 /** Macro to check Frame Identifier */
frank26080115 0:84d7747641aa 478 #define PARAM_ID_11(n) ((n>>11)==0) /*-- 11 bit --*/
frank26080115 0:84d7747641aa 479 #define PARAM_ID_29(n) ((n>>29)==0) /*-- 29 bit --*/
frank26080115 0:84d7747641aa 480
frank26080115 0:84d7747641aa 481 /** Macro to check DLC value */
frank26080115 0:84d7747641aa 482 #define PARAM_DLC(n) ((n>>4)==0) /*-- 4 bit --*/
frank26080115 0:84d7747641aa 483 /** Macro to check ID format type */
frank26080115 0:84d7747641aa 484 #define PARAM_ID_FORMAT(n) ((n==STD_ID_FORMAT)||(n==EXT_ID_FORMAT))
frank26080115 0:84d7747641aa 485
frank26080115 0:84d7747641aa 486 /** Macro to check Group identifier */
frank26080115 0:84d7747641aa 487 #define PARAM_GRP_ID(x, y) ((x<=y))
frank26080115 0:84d7747641aa 488
frank26080115 0:84d7747641aa 489 /** Macro to check Frame type */
frank26080115 0:84d7747641aa 490 #define PARAM_FRAME_TYPE(n) ((n==DATA_FRAME)||(n==REMOTE_FRAME))
frank26080115 0:84d7747641aa 491
frank26080115 0:84d7747641aa 492 /** Macro to check Control/Central Status type parameter */
frank26080115 0:84d7747641aa 493 #define PARAM_CTRL_STS_TYPE(n) ((n==CANCTRL_GLOBAL_STS)||(n==CANCTRL_INT_CAP) \
frank26080115 0:84d7747641aa 494 ||(n==CANCTRL_ERR_WRN)||(n==CANCTRL_STS))
frank26080115 0:84d7747641aa 495
frank26080115 0:84d7747641aa 496 /** Macro to check CR status type */
frank26080115 0:84d7747641aa 497 #define PARAM_CR_STS_TYPE(n) ((n==CANCR_TX_STS)||(n==CANCR_RX_STS) \
frank26080115 0:84d7747641aa 498 ||(n==CANCR_MS))
frank26080115 0:84d7747641aa 499 /** Macro to check AF Mode type parameter */
frank26080115 0:84d7747641aa 500 #define PARAM_AFMODE_TYPE(n) ((n==CAN_Normal)||(n==CAN_AccOff) \
frank26080115 0:84d7747641aa 501 ||(n==CAN_AccBP)||(n==CAN_eFCAN))
frank26080115 0:84d7747641aa 502
frank26080115 0:84d7747641aa 503 /** Macro to check Operation Mode */
frank26080115 0:84d7747641aa 504 #define PARAM_MODE_TYPE(n) ((n==CAN_OPERATING_MODE)||(n==CAN_RESET_MODE) \
frank26080115 0:84d7747641aa 505 ||(n==CAN_LISTENONLY_MODE)||(n==CAN_SELFTEST_MODE) \
frank26080115 0:84d7747641aa 506 ||(n==CAN_TXPRIORITY_MODE)||(n==CAN_SLEEP_MODE) \
frank26080115 0:84d7747641aa 507 ||(n==CAN_RXPOLARITY_MODE)||(n==CAN_TEST_MODE))
frank26080115 0:84d7747641aa 508
frank26080115 0:84d7747641aa 509 /** Macro define for struct AF_Section parameter */
frank26080115 0:84d7747641aa 510 #define PARAM_CTRL(n) ((n==CAN1_CTRL)|(n==CAN2_CTRL))
frank26080115 0:84d7747641aa 511
frank26080115 0:84d7747641aa 512 /** Macro define for struct AF_Section parameter */
frank26080115 0:84d7747641aa 513 #define PARAM_MSG_DISABLE(n) ((n==MSG_ENABLE)|(n==MSG_DISABLE))
frank26080115 0:84d7747641aa 514
frank26080115 0:84d7747641aa 515 /**Macro to check Interrupt Type parameter */
frank26080115 0:84d7747641aa 516 #define PARAM_INT_EN_TYPE(n) ((n==CANINT_RIE)||(n==CANINT_TIE1) \
frank26080115 0:84d7747641aa 517 ||(n==CANINT_EIE)||(n==CANINT_DOIE) \
frank26080115 0:84d7747641aa 518 ||(n==CANINT_WUIE)||(n==CANINT_EPIE) \
frank26080115 0:84d7747641aa 519 ||(n==CANINT_ALIE)||(n==CANINT_BEIE) \
frank26080115 0:84d7747641aa 520 ||(n==CANINT_IDIE)||(n==CANINT_TIE2) \
frank26080115 0:84d7747641aa 521 ||(n==CANINT_TIE3)||(n==CANINT_FCE))
frank26080115 0:84d7747641aa 522
frank26080115 0:84d7747641aa 523 /** Macro to check AFLUT Entry type */
frank26080115 0:84d7747641aa 524 #define PARAM_AFLUT_ENTRY_TYPE(n) ((n==FULLCAN_ENTRY)||(n==EXPLICIT_STANDARD_ENTRY)\
frank26080115 0:84d7747641aa 525 ||(n==GROUP_STANDARD_ENTRY)||(n==EXPLICIT_EXTEND_ENTRY) \
frank26080115 0:84d7747641aa 526 ||(n==GROUP_EXTEND_ENTRY))
frank26080115 0:84d7747641aa 527
frank26080115 0:84d7747641aa 528 /** Macro to check position */
frank26080115 0:84d7747641aa 529 #define PARAM_POSITION(n) ((n)<512)
frank26080115 0:84d7747641aa 530
frank26080115 0:84d7747641aa 531 /**
frank26080115 0:84d7747641aa 532 * @}
frank26080115 0:84d7747641aa 533 */
frank26080115 0:84d7747641aa 534
frank26080115 0:84d7747641aa 535 /* Public Types --------------------------------------------------------------- */
frank26080115 0:84d7747641aa 536 /** @defgroup CAN_Public_Types CAN Public Types
frank26080115 0:84d7747641aa 537 * @{
frank26080115 0:84d7747641aa 538 */
frank26080115 0:84d7747641aa 539
frank26080115 0:84d7747641aa 540 /** CAN configuration structure */
frank26080115 0:84d7747641aa 541 /***********************************************************************
frank26080115 0:84d7747641aa 542 * CAN device configuration commands (IOCTL commands and arguments)
frank26080115 0:84d7747641aa 543 **********************************************************************/
frank26080115 0:84d7747641aa 544 /**
frank26080115 0:84d7747641aa 545 * @brief CAN ID format definition
frank26080115 0:84d7747641aa 546 */
frank26080115 0:84d7747641aa 547 typedef enum {
frank26080115 0:84d7747641aa 548 STD_ID_FORMAT = 0, /**< Use standard ID format (11 bit ID) */
frank26080115 0:84d7747641aa 549 EXT_ID_FORMAT = 1 /**< Use extended ID format (29 bit ID) */
frank26080115 0:84d7747641aa 550 } CAN_ID_FORMAT_Type;
frank26080115 0:84d7747641aa 551
frank26080115 0:84d7747641aa 552 /**
frank26080115 0:84d7747641aa 553 * @brief AFLUT Entry type definition
frank26080115 0:84d7747641aa 554 */
frank26080115 0:84d7747641aa 555 typedef enum {
frank26080115 0:84d7747641aa 556 FULLCAN_ENTRY = 0,
frank26080115 0:84d7747641aa 557 EXPLICIT_STANDARD_ENTRY,
frank26080115 0:84d7747641aa 558 GROUP_STANDARD_ENTRY,
frank26080115 0:84d7747641aa 559 EXPLICIT_EXTEND_ENTRY,
frank26080115 0:84d7747641aa 560 GROUP_EXTEND_ENTRY,
frank26080115 0:84d7747641aa 561 } AFLUT_ENTRY_Type;
frank26080115 0:84d7747641aa 562
frank26080115 0:84d7747641aa 563 /**
frank26080115 0:84d7747641aa 564 * @brief Symbolic names for type of CAN message
frank26080115 0:84d7747641aa 565 */
frank26080115 0:84d7747641aa 566 typedef enum {
frank26080115 0:84d7747641aa 567 DATA_FRAME = 0, /**< Data frame */
frank26080115 0:84d7747641aa 568 REMOTE_FRAME = 1 /**< Remote frame */
frank26080115 0:84d7747641aa 569 } CAN_FRAME_Type;
frank26080115 0:84d7747641aa 570
frank26080115 0:84d7747641aa 571 /**
frank26080115 0:84d7747641aa 572 * @brief CAN Control status definition
frank26080115 0:84d7747641aa 573 */
frank26080115 0:84d7747641aa 574 typedef enum {
frank26080115 0:84d7747641aa 575 CANCTRL_GLOBAL_STS = 0, /**< CAN Global Status */
frank26080115 0:84d7747641aa 576 CANCTRL_INT_CAP, /**< CAN Interrupt and Capture */
frank26080115 0:84d7747641aa 577 CANCTRL_ERR_WRN, /**< CAN Error Warning Limit */
frank26080115 0:84d7747641aa 578 CANCTRL_STS /**< CAN Control Status */
frank26080115 0:84d7747641aa 579 } CAN_CTRL_STS_Type;
frank26080115 0:84d7747641aa 580
frank26080115 0:84d7747641aa 581 /**
frank26080115 0:84d7747641aa 582 * @brief Central CAN status type definition
frank26080115 0:84d7747641aa 583 */
frank26080115 0:84d7747641aa 584 typedef enum {
frank26080115 0:84d7747641aa 585 CANCR_TX_STS = 0, /**< Central CAN Tx Status */
frank26080115 0:84d7747641aa 586 CANCR_RX_STS, /**< Central CAN Rx Status */
frank26080115 0:84d7747641aa 587 CANCR_MS /**< Central CAN Miscellaneous Status */
frank26080115 0:84d7747641aa 588 } CAN_CR_STS_Type;
frank26080115 0:84d7747641aa 589
frank26080115 0:84d7747641aa 590 /**
frank26080115 0:84d7747641aa 591 * @brief FullCAN Interrupt Capture type definition
frank26080115 0:84d7747641aa 592 */
frank26080115 0:84d7747641aa 593 typedef enum{
frank26080115 0:84d7747641aa 594 FULLCAN_IC0, /**< FullCAN Interrupt and Capture 0 */
frank26080115 0:84d7747641aa 595 FULLCAN_IC1 /**< FullCAN Interrupt and Capture 1 */
frank26080115 0:84d7747641aa 596 }FullCAN_IC_Type;
frank26080115 0:84d7747641aa 597
frank26080115 0:84d7747641aa 598 /**
frank26080115 0:84d7747641aa 599 * @brief CAN interrupt enable type definition
frank26080115 0:84d7747641aa 600 */
frank26080115 0:84d7747641aa 601 typedef enum {
frank26080115 0:84d7747641aa 602 CANINT_RIE = 0, /**< CAN Receiver Interrupt Enable */
frank26080115 0:84d7747641aa 603 CANINT_TIE1, /**< CAN Transmit Interrupt Enable */
frank26080115 0:84d7747641aa 604 CANINT_EIE, /**< CAN Error Warning Interrupt Enable */
frank26080115 0:84d7747641aa 605 CANINT_DOIE, /**< CAN Data Overrun Interrupt Enable */
frank26080115 0:84d7747641aa 606 CANINT_WUIE, /**< CAN Wake-Up Interrupt Enable */
frank26080115 0:84d7747641aa 607 CANINT_EPIE, /**< CAN Error Passive Interrupt Enable */
frank26080115 0:84d7747641aa 608 CANINT_ALIE, /**< CAN Arbitration Lost Interrupt Enable */
frank26080115 0:84d7747641aa 609 CANINT_BEIE, /**< CAN Bus Error Inter rupt Enable */
frank26080115 0:84d7747641aa 610 CANINT_IDIE, /**< CAN ID Ready Interrupt Enable */
frank26080115 0:84d7747641aa 611 CANINT_TIE2, /**< CAN Transmit Interrupt Enable for Buffer2 */
frank26080115 0:84d7747641aa 612 CANINT_TIE3, /**< CAN Transmit Interrupt Enable for Buffer3 */
frank26080115 0:84d7747641aa 613 CANINT_FCE /**< FullCAN Interrupt Enable */
frank26080115 0:84d7747641aa 614 } CAN_INT_EN_Type;
frank26080115 0:84d7747641aa 615
frank26080115 0:84d7747641aa 616 /**
frank26080115 0:84d7747641aa 617 * @brief Acceptance Filter Mode type definition
frank26080115 0:84d7747641aa 618 */
frank26080115 0:84d7747641aa 619 typedef enum {
frank26080115 0:84d7747641aa 620 CAN_Normal = 0, /**< Normal Mode */
frank26080115 0:84d7747641aa 621 CAN_AccOff, /**< Acceptance Filter Off Mode */
frank26080115 0:84d7747641aa 622 CAN_AccBP, /**< Acceptance Fileter Bypass Mode */
frank26080115 0:84d7747641aa 623 CAN_eFCAN /**< FullCAN Mode Enhancement */
frank26080115 0:84d7747641aa 624 } CAN_AFMODE_Type;
frank26080115 0:84d7747641aa 625
frank26080115 0:84d7747641aa 626 /**
frank26080115 0:84d7747641aa 627 * @brief CAN Mode Type definition
frank26080115 0:84d7747641aa 628 */
frank26080115 0:84d7747641aa 629 typedef enum {
frank26080115 0:84d7747641aa 630 CAN_OPERATING_MODE = 0, /**< Operating Mode */
frank26080115 0:84d7747641aa 631 CAN_RESET_MODE, /**< Reset Mode */
frank26080115 0:84d7747641aa 632 CAN_LISTENONLY_MODE, /**< Listen Only Mode */
frank26080115 0:84d7747641aa 633 CAN_SELFTEST_MODE, /**< Seft Test Mode */
frank26080115 0:84d7747641aa 634 CAN_TXPRIORITY_MODE, /**< Transmit Priority Mode */
frank26080115 0:84d7747641aa 635 CAN_SLEEP_MODE, /**< Sleep Mode */
frank26080115 0:84d7747641aa 636 CAN_RXPOLARITY_MODE, /**< Receive Polarity Mode */
frank26080115 0:84d7747641aa 637 CAN_TEST_MODE /**< Test Mode */
frank26080115 0:84d7747641aa 638 } CAN_MODE_Type;
frank26080115 0:84d7747641aa 639
frank26080115 0:84d7747641aa 640 /**
frank26080115 0:84d7747641aa 641 * @brief Error values that functions can return
frank26080115 0:84d7747641aa 642 */
frank26080115 0:84d7747641aa 643 typedef enum {
frank26080115 0:84d7747641aa 644 CAN_OK = 1, /**< No error */
frank26080115 0:84d7747641aa 645 CAN_OBJECTS_FULL_ERROR, /**< No more rx or tx objects available */
frank26080115 0:84d7747641aa 646 CAN_FULL_OBJ_NOT_RCV, /**< Full CAN object not received */
frank26080115 0:84d7747641aa 647 CAN_NO_RECEIVE_DATA, /**< No have receive data available */
frank26080115 0:84d7747641aa 648 CAN_AF_ENTRY_ERROR, /**< Entry load in AFLUT is unvalid */
frank26080115 0:84d7747641aa 649 CAN_CONFLICT_ID_ERROR, /**< Conflict ID occur */
frank26080115 0:84d7747641aa 650 CAN_ENTRY_NOT_EXIT_ERROR /**< Entry remove outo AFLUT is not exit */
frank26080115 0:84d7747641aa 651 } CAN_ERROR;
frank26080115 0:84d7747641aa 652
frank26080115 0:84d7747641aa 653 /**
frank26080115 0:84d7747641aa 654 * @brief Pin Configuration structure
frank26080115 0:84d7747641aa 655 */
frank26080115 0:84d7747641aa 656 typedef struct {
frank26080115 0:84d7747641aa 657 uint8_t RD; /**< Serial Inputs, from CAN transceivers, should be:
frank26080115 0:84d7747641aa 658 ** For CAN1:
frank26080115 0:84d7747641aa 659 - CAN_RD1_P0_0: RD pin is on P0.0
frank26080115 0:84d7747641aa 660 - CAN_RD1_P0_21 : RD pin is on P0.21
frank26080115 0:84d7747641aa 661 ** For CAN2:
frank26080115 0:84d7747641aa 662 - CAN_RD2_P0_4: RD pin is on P0.4
frank26080115 0:84d7747641aa 663 - CAN_RD2_P2_7: RD pin is on P2.7
frank26080115 0:84d7747641aa 664 */
frank26080115 0:84d7747641aa 665 uint8_t TD; /**< Serial Outputs, To CAN transceivers, should be:
frank26080115 0:84d7747641aa 666 ** For CAN1:
frank26080115 0:84d7747641aa 667 - CAN_TD1_P0_1: TD pin is on P0.1
frank26080115 0:84d7747641aa 668 - CAN_TD1_P0_22: TD pin is on P0.22
frank26080115 0:84d7747641aa 669 ** For CAN2:
frank26080115 0:84d7747641aa 670 - CAN_TD2_P0_5: TD pin is on P0.5
frank26080115 0:84d7747641aa 671 - CAN_TD2_P2_8: TD pin is on P2.8
frank26080115 0:84d7747641aa 672 */
frank26080115 0:84d7747641aa 673 } CAN_PinCFG_Type;
frank26080115 0:84d7747641aa 674
frank26080115 0:84d7747641aa 675 /**
frank26080115 0:84d7747641aa 676 * @brief CAN message object structure
frank26080115 0:84d7747641aa 677 */
frank26080115 0:84d7747641aa 678 typedef struct {
frank26080115 0:84d7747641aa 679 uint32_t id; /**< 29 bit identifier, it depend on "format" value
frank26080115 0:84d7747641aa 680 - if format = STD_ID_FORMAT, id should be 11 bit identifier
frank26080115 0:84d7747641aa 681 - if format = EXT_ID_FORMAT, id should be 29 bit identifier
frank26080115 0:84d7747641aa 682 */
frank26080115 0:84d7747641aa 683 uint8_t dataA[4]; /**< Data field A */
frank26080115 0:84d7747641aa 684 uint8_t dataB[4]; /**< Data field B */
frank26080115 0:84d7747641aa 685 uint8_t len; /**< Length of data field in bytes, should be:
frank26080115 0:84d7747641aa 686 - 0000b-0111b: 0-7 bytes
frank26080115 0:84d7747641aa 687 - 1xxxb: 8 bytes
frank26080115 0:84d7747641aa 688 */
frank26080115 0:84d7747641aa 689 uint8_t format; /**< Identifier Format, should be:
frank26080115 0:84d7747641aa 690 - STD_ID_FORMAT: Standard ID - 11 bit format
frank26080115 0:84d7747641aa 691 - EXT_ID_FORMAT: Extended ID - 29 bit format
frank26080115 0:84d7747641aa 692 */
frank26080115 0:84d7747641aa 693 uint8_t type; /**< Remote Frame transmission, should be:
frank26080115 0:84d7747641aa 694 - DATA_FRAME: the number of data bytes called out by the DLC
frank26080115 0:84d7747641aa 695 field are send from the CANxTDA and CANxTDB registers
frank26080115 0:84d7747641aa 696 - REMOTE_FRAME: Remote Frame is sent
frank26080115 0:84d7747641aa 697 */
frank26080115 0:84d7747641aa 698 } CAN_MSG_Type;
frank26080115 0:84d7747641aa 699
frank26080115 0:84d7747641aa 700 /**
frank26080115 0:84d7747641aa 701 * @brief FullCAN Entry structure
frank26080115 0:84d7747641aa 702 */
frank26080115 0:84d7747641aa 703 typedef struct {
frank26080115 0:84d7747641aa 704 uint8_t controller; /**< CAN Controller, should be:
frank26080115 0:84d7747641aa 705 - CAN1_CTRL: CAN1 Controller
frank26080115 0:84d7747641aa 706 - CAN2_CTRL: CAN2 Controller
frank26080115 0:84d7747641aa 707 */
frank26080115 0:84d7747641aa 708 uint8_t disable; /**< Disable bit, should be:
frank26080115 0:84d7747641aa 709 - MSG_ENABLE: disable bit = 0
frank26080115 0:84d7747641aa 710 - MSG_DISABLE: disable bit = 1
frank26080115 0:84d7747641aa 711 */
frank26080115 0:84d7747641aa 712 uint16_t id_11; /**< Standard ID, should be 11-bit value */
frank26080115 0:84d7747641aa 713 } FullCAN_Entry;
frank26080115 0:84d7747641aa 714
frank26080115 0:84d7747641aa 715 /**
frank26080115 0:84d7747641aa 716 * @brief Standard ID Frame Format Entry structure
frank26080115 0:84d7747641aa 717 */
frank26080115 0:84d7747641aa 718 typedef struct {
frank26080115 0:84d7747641aa 719 uint8_t controller; /**< CAN Controller, should be:
frank26080115 0:84d7747641aa 720 - CAN1_CTRL: CAN1 Controller
frank26080115 0:84d7747641aa 721 - CAN2_CTRL: CAN2 Controller
frank26080115 0:84d7747641aa 722 */
frank26080115 0:84d7747641aa 723 uint8_t disable; /**< Disable bit, should be:
frank26080115 0:84d7747641aa 724 - MSG_ENABLE: disable bit = 0
frank26080115 0:84d7747641aa 725 - MSG_DISABLE: disable bit = 1
frank26080115 0:84d7747641aa 726 */
frank26080115 0:84d7747641aa 727 uint16_t id_11; /**< Standard ID, should be 11-bit value */
frank26080115 0:84d7747641aa 728 } SFF_Entry;
frank26080115 0:84d7747641aa 729
frank26080115 0:84d7747641aa 730 /**
frank26080115 0:84d7747641aa 731 * @brief Group of Standard ID Frame Format Entry structure
frank26080115 0:84d7747641aa 732 */
frank26080115 0:84d7747641aa 733 typedef struct {
frank26080115 0:84d7747641aa 734 uint8_t controller1; /**< First CAN Controller, should be:
frank26080115 0:84d7747641aa 735 - CAN1_CTRL: CAN1 Controller
frank26080115 0:84d7747641aa 736 - CAN2_CTRL: CAN2 Controller
frank26080115 0:84d7747641aa 737 */
frank26080115 0:84d7747641aa 738 uint8_t disable1; /**< First Disable bit, should be:
frank26080115 0:84d7747641aa 739 - MSG_ENABLE: disable bit = 0)
frank26080115 0:84d7747641aa 740 - MSG_DISABLE: disable bit = 1
frank26080115 0:84d7747641aa 741 */
frank26080115 0:84d7747641aa 742 uint16_t lowerID; /**< ID lower bound, should be 11-bit value */
frank26080115 0:84d7747641aa 743 uint8_t controller2; /**< Second CAN Controller, should be:
frank26080115 0:84d7747641aa 744 - CAN1_CTRL: CAN1 Controller
frank26080115 0:84d7747641aa 745 - CAN2_CTRL: CAN2 Controller
frank26080115 0:84d7747641aa 746 */
frank26080115 0:84d7747641aa 747 uint8_t disable2; /**< Second Disable bit, should be:
frank26080115 0:84d7747641aa 748 - MSG_ENABLE: disable bit = 0
frank26080115 0:84d7747641aa 749 - MSG_DISABLE: disable bit = 1
frank26080115 0:84d7747641aa 750 */
frank26080115 0:84d7747641aa 751 uint16_t upperID; /**< ID upper bound, should be 11-bit value and
frank26080115 0:84d7747641aa 752 equal or greater than lowerID
frank26080115 0:84d7747641aa 753 */
frank26080115 0:84d7747641aa 754 } SFF_GPR_Entry;
frank26080115 0:84d7747641aa 755
frank26080115 0:84d7747641aa 756 /**
frank26080115 0:84d7747641aa 757 * @brief Extended ID Frame Format Entry structure
frank26080115 0:84d7747641aa 758 */
frank26080115 0:84d7747641aa 759 typedef struct {
frank26080115 0:84d7747641aa 760 uint8_t controller; /**< CAN Controller, should be:
frank26080115 0:84d7747641aa 761 - CAN1_CTRL: CAN1 Controller
frank26080115 0:84d7747641aa 762 - CAN2_CTRL: CAN2 Controller
frank26080115 0:84d7747641aa 763 */
frank26080115 0:84d7747641aa 764 uint32_t ID_29; /**< Extend ID, shoud be 29-bit value */
frank26080115 0:84d7747641aa 765 } EFF_Entry;
frank26080115 0:84d7747641aa 766
frank26080115 0:84d7747641aa 767
frank26080115 0:84d7747641aa 768 /**
frank26080115 0:84d7747641aa 769 * @brief Group of Extended ID Frame Format Entry structure
frank26080115 0:84d7747641aa 770 */
frank26080115 0:84d7747641aa 771 typedef struct {
frank26080115 0:84d7747641aa 772 uint8_t controller1; /**< First CAN Controller, should be:
frank26080115 0:84d7747641aa 773 - CAN1_CTRL: CAN1 Controller
frank26080115 0:84d7747641aa 774 - CAN2_CTRL: CAN2 Controller
frank26080115 0:84d7747641aa 775 */
frank26080115 0:84d7747641aa 776 uint8_t controller2; /**< Second Disable bit, should be:
frank26080115 0:84d7747641aa 777 - MSG_ENABLE: disable bit = 0(default)
frank26080115 0:84d7747641aa 778 - MSG_DISABLE: disable bit = 1
frank26080115 0:84d7747641aa 779 */
frank26080115 0:84d7747641aa 780 uint32_t lowerEID; /**< Extended ID lower bound, should be 29-bit value */
frank26080115 0:84d7747641aa 781 uint32_t upperEID; /**< Extended ID upper bound, should be 29-bit value */
frank26080115 0:84d7747641aa 782 } EFF_GPR_Entry;
frank26080115 0:84d7747641aa 783
frank26080115 0:84d7747641aa 784
frank26080115 0:84d7747641aa 785 /**
frank26080115 0:84d7747641aa 786 * @brief Acceptance Filter Section Table structure
frank26080115 0:84d7747641aa 787 */
frank26080115 0:84d7747641aa 788 typedef struct {
frank26080115 0:84d7747641aa 789 FullCAN_Entry* FullCAN_Sec; /**< The pointer point to FullCAN_Entry */
frank26080115 0:84d7747641aa 790 uint8_t FC_NumEntry; /**< FullCAN Entry Number */
frank26080115 0:84d7747641aa 791 SFF_Entry* SFF_Sec; /**< The pointer point to SFF_Entry */
frank26080115 0:84d7747641aa 792 uint8_t SFF_NumEntry; /**< Standard ID Entry Number */
frank26080115 0:84d7747641aa 793 SFF_GPR_Entry* SFF_GPR_Sec; /**< The pointer point to SFF_GPR_Entry */
frank26080115 0:84d7747641aa 794 uint8_t SFF_GPR_NumEntry; /**< Group Standard ID Entry Number */
frank26080115 0:84d7747641aa 795 EFF_Entry* EFF_Sec; /**< The pointer point to EFF_Entry */
frank26080115 0:84d7747641aa 796 uint8_t EFF_NumEntry; /**< Extended ID Entry Number */
frank26080115 0:84d7747641aa 797 EFF_GPR_Entry* EFF_GPR_Sec; /**< The pointer point to EFF_GPR_Entry */
frank26080115 0:84d7747641aa 798 uint8_t EFF_GPR_NumEntry; /**< Group Extended ID Entry Number */
frank26080115 0:84d7747641aa 799 } AF_SectionDef;
frank26080115 0:84d7747641aa 800
frank26080115 0:84d7747641aa 801 /**
frank26080115 0:84d7747641aa 802 * @}
frank26080115 0:84d7747641aa 803 */
frank26080115 0:84d7747641aa 804
frank26080115 0:84d7747641aa 805
frank26080115 0:84d7747641aa 806 /* Public Functions ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 807 /** @defgroup CAN_Public_Functions CAN Public Functions
frank26080115 0:84d7747641aa 808 * @{
frank26080115 0:84d7747641aa 809 */
frank26080115 0:84d7747641aa 810
frank26080115 0:84d7747641aa 811 /* Init/DeInit CAN peripheral -----------*/
frank26080115 0:84d7747641aa 812 void CAN_Init(LPC_CAN_TypeDef *CANx, uint32_t baudrate);
frank26080115 0:84d7747641aa 813 void CAN_DeInit(LPC_CAN_TypeDef *CANx);
frank26080115 0:84d7747641aa 814
frank26080115 0:84d7747641aa 815 /* CAN messages functions ---------------*/
frank26080115 0:84d7747641aa 816 Status CAN_SendMsg(LPC_CAN_TypeDef *CANx, CAN_MSG_Type *CAN_Msg);
frank26080115 0:84d7747641aa 817 Status CAN_ReceiveMsg(LPC_CAN_TypeDef *CANx, CAN_MSG_Type *CAN_Msg);
frank26080115 0:84d7747641aa 818 CAN_ERROR FCAN_ReadObj(LPC_CANAF_TypeDef* CANAFx, CAN_MSG_Type *CAN_Msg);
frank26080115 0:84d7747641aa 819
frank26080115 0:84d7747641aa 820 /* CAN configure functions ---------------*/
frank26080115 0:84d7747641aa 821 void CAN_ModeConfig(LPC_CAN_TypeDef* CANx, CAN_MODE_Type mode,
frank26080115 0:84d7747641aa 822 FunctionalState NewState);
frank26080115 0:84d7747641aa 823 void CAN_SetAFMode(LPC_CANAF_TypeDef* CANAFx, CAN_AFMODE_Type AFmode);
frank26080115 0:84d7747641aa 824 void CAN_SetCommand(LPC_CAN_TypeDef* CANx, uint32_t CMRType);
frank26080115 0:84d7747641aa 825
frank26080115 0:84d7747641aa 826 /* AFLUT functions ---------------------- */
frank26080115 0:84d7747641aa 827 CAN_ERROR CAN_SetupAFLUT(LPC_CANAF_TypeDef* CANAFx, AF_SectionDef* AFSection);
frank26080115 0:84d7747641aa 828 CAN_ERROR CAN_LoadFullCANEntry(LPC_CAN_TypeDef* CANx, uint16_t ID);
frank26080115 0:84d7747641aa 829 CAN_ERROR CAN_LoadExplicitEntry(LPC_CAN_TypeDef* CANx, uint32_t ID,
frank26080115 0:84d7747641aa 830 CAN_ID_FORMAT_Type format);
frank26080115 0:84d7747641aa 831 CAN_ERROR CAN_LoadGroupEntry(LPC_CAN_TypeDef* CANx, uint32_t lowerID,
frank26080115 0:84d7747641aa 832 uint32_t upperID, CAN_ID_FORMAT_Type format);
frank26080115 0:84d7747641aa 833 CAN_ERROR CAN_RemoveEntry(AFLUT_ENTRY_Type EntryType, uint16_t position);
frank26080115 0:84d7747641aa 834
frank26080115 0:84d7747641aa 835 /* CAN interrupt functions -----------------*/
frank26080115 0:84d7747641aa 836 void CAN_IRQCmd(LPC_CAN_TypeDef* CANx, CAN_INT_EN_Type arg, FunctionalState NewState);
frank26080115 0:84d7747641aa 837 uint32_t CAN_IntGetStatus(LPC_CAN_TypeDef* CANx);
frank26080115 0:84d7747641aa 838
frank26080115 0:84d7747641aa 839 /* CAN get status functions ----------------*/
frank26080115 0:84d7747641aa 840 IntStatus CAN_FullCANIntGetStatus (LPC_CANAF_TypeDef* CANAFx);
frank26080115 0:84d7747641aa 841 uint32_t CAN_FullCANPendGetStatus (LPC_CANAF_TypeDef* CANAFx, FullCAN_IC_Type type);
frank26080115 0:84d7747641aa 842 uint32_t CAN_GetCTRLStatus(LPC_CAN_TypeDef* CANx, CAN_CTRL_STS_Type arg);
frank26080115 0:84d7747641aa 843 uint32_t CAN_GetCRStatus(LPC_CANCR_TypeDef* CANCRx, CAN_CR_STS_Type arg);
frank26080115 0:84d7747641aa 844
frank26080115 0:84d7747641aa 845 /**
frank26080115 0:84d7747641aa 846 * @}
frank26080115 0:84d7747641aa 847 */
frank26080115 0:84d7747641aa 848
frank26080115 0:84d7747641aa 849
frank26080115 0:84d7747641aa 850 #ifdef __cplusplus
frank26080115 0:84d7747641aa 851 }
frank26080115 0:84d7747641aa 852 #endif
frank26080115 0:84d7747641aa 853
frank26080115 0:84d7747641aa 854 #endif /* LPC17XX_CAN_H_ */
frank26080115 0:84d7747641aa 855
frank26080115 0:84d7747641aa 856 /**
frank26080115 0:84d7747641aa 857 * @}
frank26080115 0:84d7747641aa 858 */
frank26080115 0:84d7747641aa 859
frank26080115 0:84d7747641aa 860 /* --------------------------------- End Of File ------------------------------ */