📄 canreg.h
字号:
//CANRFS寄存器的数据类型定义
typedef union _canrfs_
{
UINT32 Word; //字操作定义
struct
{
UINT32 IDIN_BIT :10; //ID索引值
UINT32 BP_BIT :1; //BP
UINT32 RSV_BIT5 :5; //保留
UINT32 DLC_BIT :4; //数据长度
UINT32 RSV_BIT10 :10; //保留
UINT32 RTR_BIT :1; //远程帧、数据帧识别位
UINT32 FF_BIT :1; //扩展帧、标准帧识别位
}Bits;
}uCANRFS,*P_uCANRFS;
//CANID寄存器的数据类型定义
typedef union _canid_
{
UINT32 Word; //字操作定义
union _frame_format
{
struct _strFrameFm_ //标准帧结构
{
UINT32 ID_BIT :11;
UINT32 RSV_BIT21 :21;
}stcSTRFRFM;
struct _etxFrameFm_ //远程帧结构
{
UINT32 ID_BIT :29;
UINT32 RSV_BIT3 :3;
}stcETXFRFM;
}FrameFm;
}uCANID,*P_uCANID;
//数据寄存器数据类型定义
typedef union _candf_
{
UINT32 Word; //字操作定义
struct
{
UINT32 Data1_BIT :8; //数据字节
UINT32 Data2_BIT :8;
UINT32 Data3_BIT :8;
UINT32 Data4_BIT :8;
}Bits;
}uCANDF,*P_uCANDF;
//CANTFI寄存器的数据类型定义
typedef union _cantfi_
{
UINT32 Word; //字节操作定义
struct
{
UINT32 PRIO_BIT :8; //缓冲区数据发送优先级的值
UINT32 RSV_BIT8 :8;
UINT32 DLC_BIT :4; //发送数据长度
UINT32 RSV_BIT10 :10;
UINT32 RTR_BIT :1; //远程帧、数据帧辨别位
UINT32 FF_BIT :1; //扩展帧、标准帧辨别位
}Bits;
}uCANTFI,*P_uCANTFI;
//定义发送帧结构
typedef struct _stcTXBUF_
{
uCANTFI TxFrameInfo; //发送帧信息结构
uCANID TxCANID; //发送帧信息ID
uCANDF CANTDA; //发送数据1~4字节
uCANDF CANTDB; //发送数据5~8字节
}*P_stcTxBUF,stcTxBUF;
//定义集中发送状态寄存器结构
typedef union _uCANTxSR_
{
UINT32 Word; //字操作定义
struct
{
UINT32 TS1_BIT :1; //CAN1正在发送状态
UINT32 TS2_BIT :1; //CAN2正在发送状态
UINT32 TS3_BIT :1; //CAN3正在发送状态
UINT32 TS4_BIT :1; //CAN4正在发送状态
UINT32 RSV_BIT1 :4; //保留
UINT32 TBS1_BIT :1; //CAN1发送缓冲区锁定状态
UINT32 TBS2_BIT :1; //CAN2发送缓冲区锁定状态
UINT32 TBS3_BIT :1; //CAN3发送缓冲区锁定状态
UINT32 TBS4_BIT :1; //CAN4发送缓冲区锁定状态
UINT32 RSV_BIT2 :4; //
UINT32 TCS1_BIT :1; //CAN1发送完成状态
UINT32 TCS2_BIT :1; //CAN2发送完成状态
UINT32 TCS3_BIT :1; //CAN3发送完成状态
UINT32 TCS4_BIT :1; //CAN4发送完成状态
UINT32 RSV_BIT12 :12; //保留
}Bits;
}*P_uCANTxSR,uCANTxSR;
//定义集中接收状态寄存器结构
typedef union _uCANRxSR_
{
UINT32 Word; //字操作定义
struct
{
UINT32 RS1_BIT :1; //CAN1正在接收状态
UINT32 RS2_BIT :1; //CAN2正在接收状态
UINT32 RS3_BIT :1; //CAN3正在接收状态
UINT32 RS4_BIT :1; //CAN4正在接收状态
UINT32 RSV_BIT1 :4; //保留
UINT32 RBS1_BIT :1; //CAN1接收缓冲区有效
UINT32 RBS2_BIT :1; //CAN2接收缓冲区有效
UINT32 RBS3_BIT :1; //CAN3接收缓冲区有效
UINT32 RBS4_BIT :1; //CAN4接收缓冲区有效
UINT32 RSV_BIT2 :4; //
UINT32 DOS1_BIT :1; //CAN1接收缓冲区溢出
UINT32 DOS2_BIT :1; //CAN2接收缓冲区溢出
UINT32 DOS3_BIT :1; //CAN3接收缓冲区溢出
UINT32 DOS4_BIT :1; //CAN4接收缓冲区溢出
UINT32 RSV_BIT12 :12; //保留
}Bits;
}*P_uCANRxSR, uCANRxSR;
//RxBuf Struct
typedef struct _stcRXBUF_
{
uCANRFS CANRcvFS; //can接受祯状态寄存器
uCANID RxCANID; //接受标识符寄存器
uCANDF CANRDA; //can数据寄存器,共四个字节
uCANDF CANRDB; //can数据寄存器,共四个字节
}*P_stcRxBUF,stcRxBUF;
//定义集中其他状态寄存器结构
typedef union _uCANMSR_
{
UINT32 Word; //字操作定义
struct
{
UINT32 ES1_BIT :1; //CAN1错误报警
UINT32 ES2_BIT :1; //CAN2错误报警
UINT32 ES3_BIT :1; //CAN3错误报警
UINT32 ES4_BIT :1; //CAN4错误报警
UINT32 RSV_BIT1 :4; //保留
UINT32 BS1_BIT :1; //CAN1总线脱离
UINT32 BS2_BIT :1; //CAN2总线脱离
UINT32 BS3_BIT :1; //CAN3总线脱离
UINT32 BS4_BIT :1; //CAN4总线脱离
UINT32 RSV_BIT20 :20; //保留
}Bits;
}*P_uCANMSR, uCANMSR;
//定义验收滤波模式寄存器结构
typedef union _canafmr_
{
UINT32 Word;
struct
{
UINT32 AccOff_BIT :1;
UINT32 AccBP_BIT :1;
UINT32 eFCAN_BIT :1;
UINT32 RSV_BIT29 :29;
}Bits;
}uCANAFMR,*P_uCANAFMR;
//验收滤波器表格单个标志符表格起始地址数据结构定义
typedef union _canF_sa_
{
UINT32 Word;
struct
{
UINT32 RSV_BIT2 :2;
UINT32 SADR_BIT :9;
UINT32 RSV_BIT21 :21;
}Bits;
}uCANF_sa,*P_uCANF_sa;
//验收滤波器表格标志符组表格起始地址数据结构定义
typedef union _canGRP_sa_
{
UINT32 Word;
struct
{
UINT32 RSV_BIT2 :2;
UINT32 SADR_BIT :10;
UINT32 RSV_BIT20 :20;
}Bits;
}uCANGRP_sa,*P_uCANGRP_sa;
//LUT错误寄存器数据结构定义
typedef union _canLUTerr
{
UINT32 Word;
struct
{
UINT32 LERR_BIT :1;
UINT32 RSV_BIT31 :31;
}Bits;
}uCANLUTerr,*P_uCANLUTerr;
/*
**********************************************************************************************************************
** FullCAN滤波器和标准帧表格数据类型定义
**********************************************************************************************************************
*/
typedef struct _AF_SFF_CELL_
{
UINT32 UpId :11; // 11bit ID1
UINT32 UpRsv :1; //
UINT32 UpDis :1; // 禁能位
UINT32 UpCh :3; // CAN控制器号
UINT32 LoId :11; // 11bit ID0
UINT32 LoRsv :1; //
UINT32 LoDis :1; // 禁能位
UINT32 LoCh :3; // CAN控制器号
}stcAF_SFF_CELL,*P_stcAF_SFF_CELL;
/*
**********************************************************************************************************************
** 定义 CANRDx 寄存器:
1.This register contains the Data bytes of the current received message.
2.It is read-only in normal operation, but can be written for testing purposes if the RM bit in CANMOD is 1.
**********************************************************************************************************************
*/
typedef union _canrdx_
{
UINT32 Word; //字操作定义
struct
{
UINT32 Data1 :8; //数据字节
UINT32 Data2 :8;
UINT32 Data3 :8;
UINT32 Data4 :8;
}Bits;
}uCANRDx,*P_uCANRDx;
/*
************************************************************************************
** CAN滤波器扩展帧表格数据类型定义
************************************************************************************
*/
typedef struct _AF_EFF_CELL_
{
UINT32 Id :29; // 29bit EFF ID
UINT32 Ch :3; // CAN控制器号
}stcAF_EFF_CELL,*P_stcAF_EFF_CELL;
/*
***************************************************************************************
** FullCAN模式下自动接收的帧的结构
***************************************************************************************
*/
typedef struct _AF_AUTOSTORE_MSG
{
struct tag_Head
{
UINT32 ID :11;
UINT32 RSV5 :5;
UINT32 DLC :4;
UINT32 RSV12:4;
UINT32 SEM :2;
UINT32 RSV41:4;
UINT32 RTR :1;
UINT32 FF :1;
}Head;
uCANRDx da;
uCANRDx db;
}stcAF_AUTOSTORE_MSG,*P_stcAF_AUTOSTORE_MSG;
#endif
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -