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

📄 canreg.h

📁 ZLG MINIARM-N20源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
      interrupt.
    2.Bits 7:0 in this register correspond 1-to-1 with bits 7:0 in the CANICR register.

*********************************************************************************************************/
typedef	union		_canier_
{
	INT32U	DWord;			                                            /*  字操作定义                  */
	struct	
	{
		INT32U	RIE 	:1;	                                            /*  接收中断使能位              */
		INT32U	TIE1 	:1;	                                            /*  TxBUF1发送完成中断使能位    */
		INT32U	EIE 	:1;	                                            /*  错误报警中断使能位          */
		INT32U	DOIE 	:1;	                                            /*  数据溢出中断使能位          */
		INT32U	WUIE 	:1;	                                            /*  睡眠模式唤醒中断使能位      */    
		INT32U	EPIE 	:1;	                                            /*  错误认可中断使能位          */
		INT32U	ALIE 	:1;	                                            /*  仲裁丢失中断使能位          */
		INT32U	BEIE 	:1;	                                            /*  总线错误中断使能位          */
		INT32U	IDIE	:1;	                                            /*  接收到CAN标识符中断使能位   */
		INT32U	TIE2 	:1;	                                            /*  TxBUF2发送完成中断使能位    */
		INT32U	TIE3	:1;	                                            /*  TxBUF3发送完成中断使能位    */
		INT32U	RSV21	:21;                                            /*  保留位                      */ 
	}Bits;
}uCANIER,*P_uCANIER;

#define 	CANIER(CanNum)		(*((volatile P_uCANIER)( CANIER_BADR+CanNum* CAN_OFFSET_ADR )))

/*********************************************************************************************************
   定义 CANBTR 寄存器:
    1.This register controls how various CAN timings are derived from the VPB clock.
    2.It can be read at any time, but can only be written if the RM bit in CANmod is 1.
*********************************************************************************************************/
typedef	union		_canbtr_
{
	INT32U	DWord;					                                    /*  字操作定义                  */
	struct	
	{
		INT32U	BRP 	:10;	                                        /*  预分频位组合定义            */
		INT32U	RSV4	:4;		                                        /*  保留位                      */
		INT32U	SJW 	:2;		                                        /*  同步跳转宽度                */
		INT32U	TSEG1 	:4;		                                        /*  时间段1                     */
		INT32U	TSEG2 	:3;		                                        /*  时间段2                     */    
		INT32U	SAM 	:1;		                                        /*  采样模式位                  */
		INT32U	RSV8	:8;		                                        /*  保留                        */
	}Bits;
}uCANBTR,*P_uCANBTR;

#define 	CANBTR(CanNum)		(*((volatile P_uCANBTR)( CANBTR_BADR+CanNum* CAN_OFFSET_ADR )))

/*********************************************************************************************************
   定义 CANEWL 寄存器:
    1.This register sets a limit on Tx or Rx errors at which an interrupt can occur.
    2.It can be read at any time, but can only be written if the RM bit in CANmod is 1.
*********************************************************************************************************/
typedef	union	_canewl_
{
	INT32U	DWord;					                                    /*  字操作定义                  */
	struct	
	{
		INT32U	EWL 	:8;		                                        /*  出错警告界限值              */
		INT32U	RSV24	:24;	                                        /*  保留位                      */
	}Bits;
}uCANEWL,*P_uCANEWL;

#define 	CANEWL(CanNum)		(*((volatile P_uCANEWL)( CANEWL_BADR+CanNum* CAN_OFFSET_ADR )))
/*********************************************************************************************************
  定义 CANSR 寄存器:
    1.This register contains three status bytes, in which the bits not related to tranmission are identical
        to the corresponding bits in the Global Status Register, while those relating to transmission 
        reflect the status of each of the 3 Tx Buffers.
*********************************************************************************************************/
typedef	union	_cansr_
{
	INT32U	DWord;					                                    /*  字操作定义                  */
	struct	
	{
		INT32U	RBS1 	:1;		                                        /*  接收缓冲区有效              */
		INT32U	DOS1 	:1;		                                        /*  数据溢出                    */
		INT32U	TBS1 	:1;		                                        /*  TxBUF1锁定位  "0":锁定      */
		INT32U	TCS1 	:1;		                                        /*  TxBUF1的数据发送完成        */
		INT32U	RS1 	:1;		                                        /*  正在接收                    */
		INT32U	TS1 	:1;		                                        /*  TxBUF1的数据正在发送        */
		INT32U	ES1 	:1;		                                        /*  错误认可                    */
		INT32U	BS1 	:1;		                                        /*  总线错误                    */
		INT32U	RBS2 	:1;		                                                       
		INT32U	DOS2 	:1;		                                          
		INT32U	TBS2 	:1;		                                        /*  TxBUF2锁定                  */
		INT32U	TCS2 	:1;		                                        /*  TxBUF2的数据发送完成        */
		INT32U	RS2 	:1;		                                          
		INT32U	TS2 	:1;		                                        /*  TxBUF2的数据正在发送        */
		INT32U	ES2 	:1;		                                          
		INT32U	BS2 	:1;		                                          
		INT32U	RBS3 	:1;		                                          
		INT32U	DOS3 	:1;		                                          
		INT32U	TBS3 	:1;		                                        /*   TxBUF3锁定                 */
		INT32U	TCS3 	:1;		                                        /*   TxBUF3的数据发送完成       */
		INT32U	RS3 	:1;		                                              
		INT32U	TS3 	:1;		                                        /*   TxBUF3的数据正在发送       */
		INT32U	ES3 	:1;		                                          
		INT32U	BS3 	:1;		                                          
		INT32U	RSV8	:8;		                                          
	}Bits;
}uCANSR,*P_uCANSR;

#define 	CANSR(CanNum)		(*((volatile P_uCANSR)( CANSR_BADR+CanNum* CAN_OFFSET_ADR )))

/*********************************************************************************************************
    定义 CANRFS 寄存器:
    1.This register defines the characteristics 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		_canrfs_
{
	INT32U		DWord;				                                    /*  字操作定义                  */
	struct	        
	{
		INT32U	IDIN 	:10;	                                        /*  ID索引值                    */
		INT32U	BP 		:1;		                                        /*  BP                          */
		INT32U	RSV5 	:5;		                                        /*  保留                        */
		INT32U	DLC 	:4;		                                        /*  数据长度                    */
		INT32U	RSV10	:10;	                                        /*  保留                        */
		INT32U	RTR 	:1;		                                        /*  远程帧、数据帧识别位        */
		INT32U	FF 		:1;		                                        /*  扩展帧、标准帧识别位        */
	}Bits;
}uCANRFS,*P_uCANRFS;

#define 	CANRFS(CanNum)		(*((volatile P_uCANRFS)( CANRFS_BADR+CanNum* CAN_OFFSET_ADR )))
/*********************************************************************************************************
     定义 CANRID 寄存器:
    1.This register contains the Identifier field 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.
    3.It has two different formats depending on the FF bit in CANRFS.	FF=0 (11 Bits  10:0)
        FF=1 (29 Bits  28:0)	
*********************************************************************************************************/
typedef	union		_canrid_
{
	INT32U		DWord;					                                /*  字操作定义                  */
	struct
	{
		INT32U	ID 		:29;
		INT32U	RSV3 	:3;
	}Bits;
}uCANRID,*P_uCANRID;

#define 	CANRID(CanNum)		(*((volatile P_uCANRID)(CANRID_BADR+CanNum* CAN_OFFSET_ADR)))
#define		CANTID1(CanNum)		(*((volatile P_uCANRID)(CANTID1_BADR+CanNum*CAN_OFFSET_ADR)))
#define		CANTID2(CanNum)		(*((volatile P_uCANRID)(CANTID2_BADR+CanNum*CAN_OFFSET_ADR)))
#define		CANTID3(CanNum)		(*((volatile P_uCANRID)(CANTID3_BADR+CanNum*CAN_OFFSET_ADR)))

/*********************************************************************************************************
     定义 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_
{
	INT32U		DWord;					                                /*  字操作定义                  */
	struct	
	{
		INT32U	Data1 	:8;			                                    /*  数据字节                    */
		INT32U	Data2 	:8;	
		INT32U	Data3 	:8;	
		INT32U	Data4 	:8;	
	}Bits;
}uCANRDx,*P_uCANRDx;

#define 	CANRDA(CanNum)		(*((volatile P_uCANRDx)(CANRDA_BADR+CanNum* CAN_OFFSET_ADR)))	
#define 	CANRDB(CanNum)		(*((volatile P_uCANRDx)(CANRDB_BADR+CanNum* CAN_OFFSET_ADR)))	
#define		CANTDA1(CanNum)		(*((volatile P_uCANRDx)(CANTDA1_BADR+CanNum*CAN_OFFSET_ADR)))   
#define		CANTDB1(CanNum)		(*((volatile P_uCANRDx)(CANTDB1_BADR+CanNum*CAN_OFFSET_ADR)))
#define		CANTDA2(CanNum)		(*((volatile P_uCANRDx)(CANTDA2_BADR+CanNum*CAN_OFFSET_ADR)))
#define		CANTDB2(CanNum)		(*((volatile P_uCANRDx)(CANTDB2_BADR+CanNum*CAN_OFFSET_ADR)))
#define		CANTDA3(CanNum)		(*((volatile P_uCANRDx)(CANTDA3_BADR+CanNum*CAN_OFFSET_ADR))) 
#define		CANTDB3(CanNum)		(*((volatile P_uCANRDx)(CANTDB3_BADR+CanNum*CAN_OFFSET_ADR)))

/*********************************************************************************************************
    定义 CANTFIx 寄存器:
    1.When the corresponding TBS bit in CANSR is 1, software can write to one of these registers to 
        define the format of the next transmit message for that Tx buffer.
    2.Bits not listed read as 0 and should be written as 0.
*********************************************************************************************************/
typedef	union		_cantfix_
{
	INT32U		DWord;				                                    /*  字节操作定义                */
	struct	
	{
		INT32U	PRIO 	:8;		                                        /*  缓冲区数据发送优先级的值    */
		INT32U	RSV8	:8;						    
		INT32U	DLC 	:4;		                                        /*  发送数据长度                */
		INT32U	RSV10	:10;
		INT32U	RTR 	:1;		                                        /*  远程帧、数据帧辨别位        */
		INT32U	FF 		:1;		                                        /*  扩展帧、标准帧辨别位        */
	}Bits;
}uCANTFIx,*P_uCANTFIx;

#define CANTFI1(CanNum)		(*((volatile P_uCANTFIx)(CANTFI1_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTFI2(CanNum)		(*((volatile P_uCANTFIx)(CANTFI2_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTFI3(CanNum)		(*((volatile P_uCANTFIx)(CANTFI3_BADR+CanNum*CAN_OFFSET_ADR)))

/*********************************************************************************************************
    定义发送帧的结构
*********************************************************************************************************/
typedef	struct		_stcTXBUF_
{
	uCANTFIx	TxFrameInfo;	                                        /*  发送帧信息结构              */
	uCANRID		TxCANID;		                                        /*  发送帧信息ID                */
	uCANRDx		TDA;			                                        /*  发送数据1~4字节            */
	uCANRDx		TDB;			                                        /*  发送数据5~8字节            */
}*P_stcTxBUF,stcTxBUF;

#define	TxBUF1(CanNum)		(*((volatile P_stcTxBUF)( TxBUF1_BADR+CanNum*CAN_OFFSET_ADR)))
#define	TxBUF2(CanNum)		(*((volatile P_stcTxBUF)( TxBUF2_BADR+CanNum*CAN_OFFSET_ADR)))
#define	TxBUF3(CanNum)		(*((volatile P_stcTxBUF)( TxBUF3_BADR+CanNum*CAN_OFFSET_ADR)))

/*********************************************************************************************************
    定义 CANTxSR 寄存器:
*********************************************************************************************************/
typedef	union		_uCANTxSR_

⌨️ 快捷键说明

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