📄 can.h
字号:
//****************************************************************************
// @Module CAN
// @Filename CAN.H
// @Project
//----------------------------------------------------------------------------
// @Controller Infineon C505C-2R
//
// @Compiler Keil
//
// @Codegenerator DAvE 2-0-0
//
// @Description This file contains all function prototypes and macros for CAN
//
//
//----------------------------------------------------------------------------
// @Date 01-2-24 12:51:13
//
//****************************************************************************
//****************************************************************************
// @Defines general registers of CAN controller.
//****************************************************************************
// Control/Status Register
#define CR (*((unsigned char volatile xdata *) 0xF700))
#define SR (*((unsigned char volatile xdata *) 0xF701))
// Interrupt Register
#define IR (*((unsigned char volatile xdata *) 0xF702))
// Bit Timing Register
#define BTR0 (*((unsigned char volatile xdata *) 0xF704))
#define BTR1 (*((unsigned char volatile xdata *) 0xF705))
// Global Mask Short
#define GMS0 (*((unsigned char volatile xdata *) 0xF706))
// Global Mask Short
#define GMS1 (*((unsigned char volatile xdata *) 0xF707))
// Upper Global Mask Long
#define UGML0 (*((unsigned char volatile xdata *) 0xF708))
#define UGML1 (*((unsigned char volatile xdata *) 0xF709))
// Lower Global Mask Long
#define LGML0 (*((unsigned char volatile xdata *) 0xF70A))
#define LGML1 (*((unsigned char volatile xdata *) 0xF70B))
// Upper Mask of Last Message
#define UMLM0 (*((unsigned char volatile xdata *) 0xF70C))
#define UMLM1 (*((unsigned char volatile xdata *) 0xF70D))
// Lower Mask of Last Message
#define LMLM0 (*((unsigned char volatile xdata *) 0xF70E))
#define LMLM1 (*((unsigned char volatile xdata *) 0xF70F))
//****************************************************************************
// @Define bit of extended CAN registers for C505C/C515C
//****************************************************************************
#define TEST 7
#define CCE 6
#define EIE 3
#define SIE 2
#define IE 1
#define INIT 0
#define BOFF 7
#define EWRN 6
#define RXOK 4
#define TXOK 3
#define LEC2 2
#define LEC1 1
#define LEC0 0
#define SJW1 7
#define SJW0 6
#define BRP5 5
#define BRP4 4
#define BRP3 3
#define BRP2 2
#define BRP1 1
#define BRP0 0
#define TSEG2_2 6
#define TSEG2_1 5
#define TSEG2_0 4
#define TSEG1_3 3
#define TSEG1_2 2
#define TSEG1_1 1
#define TSEG1_0 0
#define MSGVAL 3
#define TXIE 2
#define RXIE 1
#define INTPND 0
#define RMTPND 7
#define TXRQ 6
#define CPUUPD 5
#define NEWDAT 4
#define DLC3 7
#define DLC2 6
#define DLC1 5
#define DLC0 4
#define DIR 3
#define XTD 2
//****************************************************************************
// @Definition of a structure for the CAN data
//****************************************************************************
// The following data type serves as a software message object. Each access to
// a hardware message object has to be made by forward a pointer to a software
// message object (TCAN_Obj). The data type has the following fields:
//
// MsgCfg:
// this byte has the same structure as the message configuration register of a
// hardware message object. It contains the "Data Lenght Code" (DLC), the
// "Extended Identifier " (XTD) and the " Message Direction "
// (DIR, read only access).
//
// 7 6 5 4 3 2 1 0
// |-----------------------------------------------|
// | DLC | DIR | XTD | 0 | 0 |
// |-----------------------------------------------|
//
// Identifier:
// this field is four bytes long and contains either the 11-bit identifier
// or the 29-bit identifier (as a HEX-Value)
//
// ObjectData[8]:
// 8 bytes containing the data of a frame
//
// ubUser:
// this field serves for storing application specific data. It will not be
// sended or received.
//************************************************************************
// @Structure for a single CAN object
// A total of 15 such object structures exists (starting at F710H)
//this is a "hardware" message object struct.
//************************************************************************
struct can_obj
{
unsigned char MCR0; // Message Control Register 0
unsigned char MCR1; // Message Control Register 1
unsigned char UAR0; // Upper Arbitration Register 0
unsigned char UAR1; // Upper Arbitration Register 1
unsigned char LAR0; // Lower Arbitration Register 0
unsigned char LAR1; // Lower Arbitration Register 1
unsigned char MCFG; // Message Configuration Register
unsigned char Data[8]; // Message Data 0 .. 7
unsigned char Customer; // Reserved for application specific data
};
#define CAN_OBJ ((struct can_obj volatile xdata *) 0xF710)
//*************************************************************************
//@ define a received or to be send object maybe store in MCU.
//*************************************************************************
typedef struct
{
unsigned char MsgCfg; // 8-bit Message Configuration Register
unsigned long Identifier; // standard (11-bit)/extended (29-bit) identifier
unsigned char ObjectData[8]; // 8-bit Data Bytes
unsigned char ubUser; // for application specific states
}TCAN_Obj;
//Prototypes of global functions
///////////////初始化函数//////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -