Fork of Smoothie to port to mbed non-LPC targets.

Dependencies:   mbed

Fork of Smoothie by Stéphane Cachat

Committer:
Michael J. Spencer
Date:
Fri Feb 28 18:52:52 2014 -0800
Revision:
2:1df0b61d3b5a
Update to latest Smoothie.

Who changed what in which revision?

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