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

📄 canreg.h

📁 基于ARM及CAN总线的源码
💻 H
📖 第 1 页 / 共 2 页
字号:
typedef	union	_cansr_
{
	UINT32	Word;					//字操作定义
	struct	
	{
		UINT32	RBS1_BIT 	:1;		//接收缓冲区有效
		UINT32	DOS1_BIT 	:1;		//数据溢出
		UINT32	TBS1_BIT 	:1;		//TxBUF1锁定
		UINT32	TCS1_BIT 	:1;		//TxBUF1的数据发送完成
		UINT32	RS1_BIT 		:1;		//正在接收
		UINT32	TS1_BIT 		:1;		//TxBUF1的数据正在发送
		UINT32	ES1_BIT 		:1;		//错误认可
		UINT32	BS1_BIT 		:1;		//总线错误
		UINT32	RBS2_BIT 	:1;		//
		UINT32	DOS2_BIT 	:1;		//
		UINT32	TBS2_BIT 	:1;		// TxBUF2锁定
		UINT32	TCS2_BIT 	:1;		// TxBUF2的数据发送完成
		UINT32	RS2_BIT 		:1;		//
		UINT32	TS2_BIT 		:1;		// TxBUF2的数据正在发送
		UINT32	ES2_BIT 		:1;		//
		UINT32	BS2_BIT 		:1;		//
		UINT32	RBS3_BIT 	:1;		//
		UINT32	DOS3_BIT 	:1;		//
		UINT32	TBS3_BIT 	:1;		// TxBUF3锁定
		UINT32	TCS3_BIT 	:1;		// TxBUF3的数据发送完成
		UINT32	RS3_BIT 		:1;		//
		UINT32	TS3_BIT 		:1;		// TxBUF3的数据正在发送
		UINT32	ES3_BIT 		:1;		//
		UINT32	BS3_BIT 		:1;		//
		UINT32	RSV_BIT8		:8;		//
	}Bits;
}uCANSR,*P_uCANSR;
//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;
	uCANID	RxCANID;
	uCANDF	CANRDA;
	uCANDF	CANRDB;
}*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;

#endif
/*********************************************************************************************************
**                            			End Of File
********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -