www.pudn.com > CAN_Ex1.rar > 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 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 */