📄 can_reg.h
字号:
/*****************************************************************************/
/* This file is part of the uVision/ARM development tools */
/* Copyright KEIL ELEKTRONIK GmbH 2002-2007 */
/*****************************************************************************/
/* */
/* CAN_reg.h: Header file for CAN registers */
/* Philips LPC23xx */
/* */
/*****************************************************************************/
#include <LPC23xx.h> /* LPC23xx definitions */
#ifndef __CAN_REG_H
#define __CAN_REG_H
/* CAN Controller Register Addresses */
U32 CAN_BASE[] = { CAN1_BASE_ADDR, CAN2_BASE_ADDR };
#define CAN_AFRAM_BASE 0xE0038000 /* CAN Acceptance Filter RAM Base Address */
#define CAN_AF_BASE 0xE003C000 /* CAN Acceptance Filter Base Address */
#define CAN_CR_BASE 0xE0040000 /* CAN Central Registers Base Address */
/* CAN Acceptance Filter RAM */
typedef struct {
volatile U32 mask[512]; /* ID Masks */
} regCAN_AFRAM;
/* Undefining names already defined in LPC23xx.h so they can be reused */
#undef AFMR
#undef SFF_sa
#undef SFF_GRP_sa
#undef EFF_sa
#undef EFF_GRP_sa
#undef ENDofTable
#undef LUTerrAd
#undef LUTerr
/* CAN Acceptance Filter Registers (regCAN_AF) */
typedef struct {
volatile U32 AFMR; /* Acceptance filter register */
volatile U32 SFF_sa; /* Standard frame individual start address register */
volatile U32 SFF_GRP_sa; /* Standard frame group start address register */
volatile U32 EFF_sa; /* Extended frame individual start address register */
volatile U32 EFF_GRP_sa; /* Extended frame group start address register */
volatile U32 ENDofTable; /* End of acceptance filter tables register */
volatile U32 LUTerrAd; /* LUT error address register */
volatile U32 LUTerr; /* LUT error register */
} regCAN_AF;
/* Undefining names already defined in LPC23xx.h so they can be reused */
#undef CANTxSR
#undef CANRxSR
#undef CANMSR
/* CAN Central Registers (regCAN_CR) */
typedef struct {
volatile U32 CANTxSR; /* CAN central transmit status register */
volatile U32 CANRxSR; /* CAN central receive status register */
volatile U32 CANMSR; /* CAN central miscellaneous register */
} regCAN_CR;
/* CAN Controller Registers (regCAN) */
typedef struct {
volatile U32 CANMOD; /* Controls operating mode of CAN controller */
volatile U32 CANCMR; /* Command bits that affect the state of CAN ctrlrs */
volatile U32 CANGSR; /* Global controller status and error counter */
volatile U32 CANICR; /* Interrupt status, arb lost capture, error code */
volatile U32 CANIER; /* Interrupt enable */
volatile U32 CANBTR; /* Bus timing */
volatile U32 CANEWL; /* Error warning limit */
volatile U32 CANSR; /* Status register */
volatile U32 CANRFS; /* Receive frame status */
volatile U32 CANRID; /* Received identifier */
volatile U32 CANRDA; /* Received data bytes 1 - 4 */
volatile U32 CANRDB; /* Received data bytes 5 - 8 */
volatile U32 CANTF1; /* Transmit frame info (1) */
volatile U32 CANTID1; /* Transmit identifier (1) */
volatile U32 CANTDA1; /* Transmit data bytes 1 - 4 (1) */
volatile U32 CANTDB1; /* Transmit data bytes 5 - 8 (1) */
volatile U32 CANTF2; /* Transmit frame info (2) */
volatile U32 CANTID2; /* Transmit identifier (2) */
volatile U32 CANTDA2; /* Transmit data bytes 1 - 4 (2) */
volatile U32 CANTDB2; /* Transmit data bytes 5 - 8 (2) */
volatile U32 CANTF3; /* Transmit frame info (3) */
volatile U32 CANTID3; /* Transmit identifier (3) */
volatile U32 CANTDA3; /* Transmit data bytes 1 - 4 (3) */
volatile U32 CANTDB3; /* Transmit data bytes 5 - 8 (3) */
} regCAN;
/* Pointers to CAN Controllers Registers */
#define ptrCAN1 ((regCAN *)CAN1_BASE_ADDR)
#define ptrCAN2 ((regCAN *)CAN2_BASE_ADDR)
#endif /* __CAN_REG_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -