⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can_reg.h

📁 LPC2368 CAN总线例子程序
💻 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 + -