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

📄 canreg.h

📁 基于ARM及CAN总线的源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        产品一部 
**                                 http://www.zlgmcu.com
**-----------------------------------------------------------文件信息--------------------------------------------------------------------------------
**	文   件  	名:	CANREG.H
** 	版  		本:	v1.0
** 	日		期:	2004年2月23日
**	描		述:	CAN模块寄存器类型定义、地址定义头文件
********************************************************************************************************/
#include "config.h"
#ifndef	_CANREG_H_
#define	_CANREG_H_
//验收滤波器RAM首地址
#define	CANAFRAM_GADR			0xE0038000
//CAN寄存器基地址定义
#define 	CANMOD_BADR			0xE0044000     	//模式寄存器
#define 	CANCMR_BADR			0xE0044004      	//命令寄存器
#define 	CANGSR_BADR			0xE0044008      	//全局状态寄存器
#define 	CANICR_BADR			0xE004400C     	//中断及捕获寄存器
#define 	CANIER_BADR			0xE0044010      	//中断使能寄存器
#define 	CANBTR_BADR			0xE0044014      	//总线时序寄存器
#define 	CANEWL_BADR			0xE0044018      	//报警限制寄存器
#define 	CANSR_BADR  			0xE004401C      	//状态寄存器
#define 	CANRFS_BADR			0xE0044020      	//接收帧信息寄存器
#define		CANRID_BADR			0xE0044024      	//接收报文ID寄存器

#define 	CANRDA_BADR			0xE0044028      	//接收数据1~4
#define 	CANRDB_BADR 			0xE004402C      	//接收数据5~8
#define 	CANTFI1_BADR			0xE0044030      	//CAN发送缓冲区1帧信息寄存器
#define 	CANTID1_BADR			0xE0044034      	// CAN发送缓冲区1报文ID寄存器
#define 	CANTDA1_BADR			0xE0044038      	// CAN发送缓冲区1发送数据1~4寄存器
#define 	CANTDB1_BADR			0xE004403C      	// CAN发送缓冲区1发送数据5~8寄存器
#define 	CANTFI2_BADR			0xE0044040      	// CAN发送缓冲区2帧信息寄存器
#define 	CANTID2_BADR			0xE0044044      	// CAN发送缓冲区2报文ID寄存器
#define 	CANTDA2_BADR			0xE0044048     	// CAN发送缓冲区2发送数据1~4寄存器
#define 	CANTDB2_BADR			0xE004404C      	// CAN发送缓冲区2发送数据5~8寄存器
#define 	CANTFI3_BADR			0xE0044050      	// CAN发送缓冲区3帧信息寄存器
#define 	CANTID3_BADR			0xE0044054      	// CAN发送缓冲区3报文ID寄存器
#define 	CANTDA3_BADR			0xE0044058      	// CAN发送缓冲区3发送数据1~4寄存器
#define 	CANTDB3_BADR			0xE004405C      	// CAN发送缓冲区3发送数据5~8寄存器
//定义RxBUF的基地址
#define	RxBUF_BADR				0xE0044020		
//定义TxBUF的基地址
#define	TxBUF1_BADR				0xE0044030		// CAN发送缓冲区1首地址
#define	TxBUF2_BADR				0xE0044040		// CAN发送缓冲区2首地址
#define	TxBUF3_BADR				0xE0044050		// CAN发送缓冲区3首地址
//定义全局应用的寄存器
#define 	CANTxSR_GADR   			0xE0040000      	//发送状态寄存器
#define 	CANRxSR_GADR      		0xE0040004      	//接收状态寄存器
#define 	CANMSR_GADR       		0xE0040008      	//错误状态寄存器
#define 	CANAFMR_GADR      		0xE003C000      	//验收滤波控制
#define 	CANSFF_sa_GADR      	0xE003C004      	//标准帧表格
#define 	CANSFF_GRP_sa_GADR 		0xE003C008      	//标准帧组表格
#define 	CANEFF_sa_GADR      	0xE003C00C      	//扩展帧表格
#define 	CANEFF_GRP_sa_GADR 		0xE003C010      	//扩展帧组表格
#define 	CANENDofTable_GADR  	0xE003C014      	//表格结束地址
#define 	CANLUTerrAd_GADR   		0xE003C018      	//LUT错误地址地址寄存器
#define 	CANLUTerr_GADR      	0xE003C01C		//LUT错误寄存器
//数据类型定义
//CAN控制器通道定义
typedef 	enum		_cannum_				
{ 
#if		CAN_MAX_NUM  == 4		//微处理器中含有4路CAN
	CAN1 = 0, 						//CAN1模块
	CAN2,							//CAN2模块
	CAN3,							//CAN3模块
	CAN4							//CAN4模块
#elif	CAN_MAX_NUM  == 2			//微处理器中含有2路CAN
	CAN1 = 0, 						//CAN1模块
	CAN2							//CAN2模块
#endif
} eCANNUM;		

//CAN滤波器标准帧表格数据类型定义
typedef	union		_fullcansffline_
{
	UINT32	Word;
	struct	
	{
		UINT32	CANSFFID1 	:11;	
		UINT32	RSV_BIT1		:1;	
		UINT32	EN_BIT1 		:1;	
		UINT32	Num_BIT1 	:3;	
		UINT32	CANSFFID2 	:11;
		UINT32	RSV_BIT2		:1;	
		UINT32	EN_BIT2 		:1;	
		UINT32	Num_BIT2 	:3;	
	}Bits;
}uFullCANSFFLine,*P_uFullCANSFFLine;
//CAN滤波器扩展帧表格数据类型定义
typedef	union		_fullcaneffline_
{
	UINT32	Word;
	struct	
	{
		UINT32	CANEFFID1 	:29;
		UINT32	Num_BIT 		:3;	
	}Bits;
}uFullCANEFFLine,*P_uFullCANEFFLine;
//CAN模式寄存器数据类型定义
typedef	union		_canmod_
{
	UINT32	Word;
	struct	{
		UINT32	RM_BIT 		:1;		//定义RM位
		UINT32	LOM_BIT 	:1;		//定义LOM位
		UINT32	STM_BIT		:1;		//定义STM位
		UINT32	TPM_BIT 	:1;		//定义TPM位
		UINT32	SM_BIT 		:1;		//定义SM位
		UINT32	RPM_BIT 	:1;		//定义RPM位
		UINT32	RSV_BIT1 	:1;		//保留位
		UINT32	TM_BIT 		:1;		//定义TM位
		UINT32	RSV_BIT24	:24;		//保留位
	}Bits;
}uCANMod,*P_uCANMod;
//命令寄存器的数据类型定义
typedef	union		_cancmr_
{
UINT32	Word;
	struct	
	{
		UINT32	TR_BIT 		:1;		//定义TR位
		UINT32	AT_BIT 		:1;		//定义AT位
		UINT32	RRB_BIT 	:1;		//定义RRB位
		UINT32	CDO_BIT 	:1;	
		UINT32	SRR_BIT 	:1;		//定义SRR位
		UINT32	STB1_BIT 	:1;		//定义SEND TxBUF1位
		UINT32	STB2_BIT 	:1;		//定义SEND TxBUF2位
		UINT32	STB3_BIT 	:1;		//定义SEND TxBUF3位
		UINT32	RSV_BIT24	:24;		//保留位
	}Bits;
}uCANCMR,*P_uCANCMR;
//全局状态寄存器的数据类型定义
typedef	union		_cangsr_
{
	UINT32	Word;				//字操作定义
	struct	
	{
		UINT32	RBS_BIT 		:1;	//接收缓冲区状态位
		UINT32	DOS_BIT 		:1; 	//数据溢出状态位
		UINT32	TBS_BIT 		:1;	//发送缓冲区状态锁定位
		UINT32	TCS_BIT 		:1;	//发送完成状态位
		UINT32	RS_BIT 		:1;	//正在接收状态
		UINT32	TS_BIT 		:1;	//正在发送状态
		UINT32	ES_BIT	 	:1;	//错误状态
		UINT32	BS_BIT 		:1;	//总线关闭
		UINT32	RSV_BIT8		:8;	//保留位
		UINT32	RXERR_BIT 	:8;	//接收错误计数
		UINT32	TXERR_BIT 	:8;	//发送错误计数
	}Bits;
}uCANGSR,*P_uCANGSR;
//中断捕获寄存器的数据类型定义
typedef	union		_canicr_
{
	UINT32	Word;				//字操作定义
	struct	
	{
		UINT32	RI_BIT 		:1;	//接收中断位
		UINT32	TI1_BIT 		:1;	//TxBUF1发送成功中断位
		UINT32	EI_BIT 		:1;	//错误报警中断位
		UINT32	DOI_BIT 		:1;	//数据溢出中断位
		UINT32	WUI_BIT 		:1;	//睡眠唤醒中断位
		UINT32	EPI_BIT 		:1;	//错误认可中断位
		UINT32	ALI_BIT 		:1;	//仲裁错误中断位
		UINT32	BEI_BIT 		:1;	//总线错误中断
		UINT32	IDI_BIT 		:1;	//接收到CAN标识符中断位
		UINT32	TI2_BIT 		:1;	// TxBUF2发送成功中断位
		UINT32	TI3_BIT 		:1;	// TxBUF3发送成功中断位
		UINT32	RSV_BIT5		:5;	//保留位
		UINT32	ERRBIT_BIT 	:5;	//错误代码捕获
		UINT32	ERRDIR_BIT 	:1;	//错误方向
		UINT32	ERRC_BIT 	:2;	//错误类型
		UINT32	ALCBIT_BIT 	:5;	//仲裁错误代码捕获
		UINT32	RSV_BIT3		:3;	//保留
	}Bits;
}uCANICR,*P_uCANICR;
//中断使能寄存器的数据类型定义
typedef	union		_canier_
{
	UINT32	Word;			//字操作定义
	struct	
	{
		UINT32	RIE_BIT 		:1;	//接收中断使能位
		UINT32	TIE1_BIT 		:1;	//TxBUF1发送完成中断使能位
		UINT32	EIE_BIT 		:1;	//错误报警中断使能位
		UINT32	DOIE_BIT 	:1;	//数据溢出中断使能位
		UINT32	WUIE_BIT 	:1;	//睡眠模式唤醒中断使能位
		UINT32	EPIE_BIT 	:1;	//错误认可中断使能位
		UINT32	ALIE_BIT 	:1;	//仲裁丢失中断使能位
		UINT32	BEIE_BIT 	:1;	//总线错误中断使能位
		UINT32	IDIE_BIT	 	:1;	//接收到CAN标识符中断使能位
		UINT32	TIE2_BIT 		:1;	//TxBUF2发送完成中断使能位
		UINT32	TIE3_BIT	 	:1;	//TxBUF3发送完成中断使能位
		UINT32	RSV_BIT21	:21;	//保留位
	}Bits;
}uCANIER,*P_uCANIER;
//总线时序寄存器的数据类型定义
typedef	union		_canbtr_
{
	UINT32	Word;					//字操作定义
	struct	
	{
		UINT32	BRP_BIT 		:10;		//预分频位组合定义
		UINT32	RSV_BIT4		:4;		//保留位
		UINT32	SJW_BIT 		:2;		//同步跳转宽度
		UINT32	TSEG1_BIT 	:4;		//时间段1
		UINT32	TSEG2_BIT 	:3;		//时间段2
		UINT32	SAM_BIT 	:1;		//采样模式位
		UINT32	RSV_BIT8		:8;		//保留
	}Bits;
}uCANBTR,*P_uCANBTR;
//出错警告界限寄存器的数据类型定义
typedef	union	_canewl_
{
	UINT32	Word;					//字操作定义
	struct	
	{
		UINT32	EWL_BIT 	:8;		///出错警告界限值
		UINT32	RSV_BIT24	:24;		//保留位
	}Bits;
}uCANEWL,*P_uCANEWL;
//状态寄存器的数据类型定义

⌨️ 快捷键说明

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