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

📄 sja1000.h

📁 SJA1000_CAN协议,目前该通信协议主要应用于汽车方面,它具有较好的稳定性和纠错能力.
💻 H
字号:
/***********************************
汽车电控系统诊断仪CAN总线诊断座程序头文件
SJA1000工作在Peli CAN模式
***********************************/


/**********************************
定义SJA1000片选基地址
**********************************/
#define  SJA1000_BASEADDR  0x7f00   


/*********************************
定义SJA1000内部寄存器地址
*********************************/
#define  SJA1000_MODEL     SJA1000_BASEADDR+0x00   //内部控制寄存器
#define  SJA1000_COMMAND   SJA1000_BASEADDR+0x01   //命令寄存器
#define  SJA1000_STATE     SJA1000_BASEADDR+0x02   //状态寄存器
#define  SJA1000_INTERR    SJA1000_BASEADDR+0x03   //中断寄存器
#define  SJA1000_ENINTERR  SJA1000_BASEADDR+0x04   //中断使能寄存器
#define  SJA1000_BUSTIME0  SJA1000_BASEADDR+0x06   //总线定时0寄存器
#define  SJA1000_BUSTIME1  SJA1000_BASEADDR+0x07   //总线定时1寄存器
#define  SJA1000_OUTCONTR  SJA1000_BASEADDR+0x08   //输出控制寄存器
#define  SJA1000_TEST	   SJA1000_BASEADDR+0x09   //测试寄存器
#define  SJA1000_CLOCKDIR  SJA1000_BASEADDR+0x1f   //时钟分频寄存器
#define  SJA1000_ALC       SJA1000_BASEADDR+0x0b   //仲裁丢失捕捉寄存器
#define  SJA1000_ECC       SJA1000_BASEADDR+0x0c   //错误代码捕捉寄存器
#define  SJA1000_EWLR	   SJA1000_BASEADDR+0x0d   //错误限制警告寄存器
#define  SJA1000_RX_ERR    SJA1000_BASEADDR+0x0e   //接收错误计数寄存器
#define  SJA1000_TX_ERR    SJA1000_BASEADDR+0x0f   //发送错误计数寄存器

#define	 SJA1000_TX_BUF0   SJA1000_BASEADDR+0x60;	//TX专用缓冲区BUF0
#define	 SJA1000_TX_BUF1   SJA1000_BASEADDR+0x61;	//TX专用缓冲区BUF1
#define	 SJA1000_TX_BUF2   SJA1000_BASEADDR+0x62;	//TX专用缓冲区BUF2
#define	 SJA1000_TX_BUF3   SJA1000_BASEADDR+0x63;	//TX专用缓冲区BUF3
#define	 SJA1000_TX_BUF4   SJA1000_BASEADDR+0x64;	//TX专用缓冲区BUF4
#define	 SJA1000_TX_BUF5   SJA1000_BASEADDR+0x65;	//TX专用缓冲区BUF5
#define	 SJA1000_TX_BUF6   SJA1000_BASEADDR+0x66;	//TX专用缓冲区BUF6
#define	 SJA1000_TX_BUF7   SJA1000_BASEADDR+0x67;	//TX专用缓冲区BUF7
#define	 SJA1000_TX_BUF8   SJA1000_BASEADDR+0x68;	//TX专用缓冲区BUF8
#define	 SJA1000_TX_BUF9   SJA1000_BASEADDR+0x69;	//TX专用缓冲区BUF9
#define	 SJA1000_TX_BUF10  SJA1000_BASEADDR+0x6A;	//TX专用缓冲区BUF10
#define	 SJA1000_TX_BUF11  SJA1000_BASEADDR+0x6B;	//TX专用缓冲区BUF11
#define	 SJA1000_TX_BUF12  SJA1000_BASEADDR+0x7C;	//TX专用缓冲区BUF12


/*********************************
定义SJA1000接收和发送寄存器
*********************************/
#define  SJA1000_RXBUF    SJA1000_BASEADDR+0x10     //接收缓冲区首址,共13个字节
#define  SJA1000_TXBUF    SJA1000_BASEADDR+0x10     //发送缓冲区首址,共13个字节

#define  SJA1000_ACRRX0   SJA1000_BASEADDR+0x10     //验收代码寄存器,共4个字节
#define  SJA1000_ACRRX1   SJA1000_BASEADDR+0x11
#define  SJA1000_ACRRX2   SJA1000_BASEADDR+0x12
#define  SJA1000_ACRRX3   SJA1000_BASEADDR+0x13

#define  SJA1000_AMRRX0   SJA1000_BASEADDR+0x14     //验收屏蔽寄存器,共4个字节
#define  SJA1000_AMRRX1   SJA1000_BASEADDR+0x15
#define  SJA1000_AMRRX2   SJA1000_BASEADDR+0x16
#define  SJA1000_AMRRX3   SJA1000_BASEADDR+0x17

#define  SJA1000_RBSA     SJA1000_BASEADDR+0x1e     //RX缓冲区起始地址寄存器
 

/*********************************
定义接收报文ID号
*********************************/
#define  ACR_ID0   0xfd
#define  ACR_ID1   0x00 
#define  ACR_ID2   0x00  
#define  ACR_ID3   0x00


/*********************************
接收屏蔽寄存器屏蔽值
*********************************/
#define  AMR_CODE0     0x00
#define  AMR_CODE1     0x1f
#define  AMR_CODE2     0xff
#define  AMR_CODE3     0xff

                
/*********************************
定义指针
*********************************/
unsigned char  xdata  *SJA1000_ADDRESS;         


/********************************
定义命令字
********************************/
#define  SJA1000_RESET_MODEL       0x01         //SJA1000复位模式
#define  SJA1000_WORK_MODEL        0x08         //SJA1000工作模式,单滤波方式 
#define  SJA1000_SELF_MODEL        0x04         //SJA1000工作在自检测模式
#define  SJA1000_HEAR_MODEL        0x0a         //SJA1000工作在只听模式 

#define  SJA1000_SENT_COMMAND      0x01         //正常发送请求命令
#define  SJA1000_ONE_SENT_COMMAND  0x03         //单次发送请求命令
#define  SJA1000_SELF_SENT_RECEIVE 0x10         //自发自收请求命令,此时模式寄存器工作在自检测
#define  SJA1000_ONE_SENT_RECEIVE  0x12         //单次自发自收请求命令

#define  SJA1000_CLEAR_DATA_OVER   0x08         //清除数据溢出
#define  SJA1000_RELEASE_FIFO      0x04         //释放接收缓冲器命令
#define  SJA1000_IER_COMMAND       0xfd         //中断使能命令,错误中断、接收中断、复位中断
#define	 SJA1000_IE_COMMAND	       0x0d		    //开放总线错误、接收中断
#define  SJA1000_CDR_COMMAND       0xc0         //时钟分频寄存器命令,使用Peli CAN模式,1/2分频输出	   
#define  SJA1000_CDRCOL_COMMAND    0xc7			//时钟分频寄存器命令,使用Peli CAN模式,不分频输出
#define  SJA1000_CDR_BASIC_COMMAND 0x80			//使用BASIC模式,1/2分频
#define  SJA1000_OUT_COMMAND       0xaa         //正常输出模式
#define  SJA1000_FIFO_ADD          0x0          //接收缓冲区FIFO起始为内部RAM的0地址
#define  SJA1000_CLEAR_TX_ERR      0x0          //清除发送错误寄存器


/********************************
SJA1000状态
********************************/
#define  SJA1000_RECEIVING      0x10         //正在接收状态
#define  SJA1000_SENDING        0x20         //正在发送状态
#define  SJA1000_OVERRUN        0x02         //数据溢出状态
#define  SJA1000_SENT_OVER      0x08         //发送完毕状态
#define  SJA1000_SENT_LOCK      0x04         //发送缓冲区锁定状态
#define  SJA1000_BUS_CLOSE      0x80         //总线关闭状态
#define  SJA1000_BUS_LIMIT      0x40		 //总线错误限制警告
#define  SJA1000_BUS_ERR        0xc3         //总线有错状态


/********************************
SJA1000中断状态
********************************/
#define  SJA1000_BUS_ERR_INTERR      0x04         //总线错误中断
#define  SJA1000_DATA_OVER_INTERR    0x08         //数据溢出中断
#define  SJA1000_RI_INTERR           0x01         //接收中断
#define  SJA1000_TI_INTERR           0x02         //发送中断

/*******************************
SJA1000晶振为16M标准波特率
*******************************/
#define  BTR0_10Kbps    0xb1                     //10Kbps
#define  BTR1_10Kbps    0xba           

#define  BTR0_12.5Kbps	0x5c					//12.5Kbps
#define	 BTR1_12.5Kbps  0xed

#define  BTR0_20Kbps    0x53                     //20Kbps
#define  BTR1_20Kbps    0xeb

#define  BTR0_25Kbps	0x4f					//25Kbps
#define  BTR1_25Kbps	0xcd

#define  BTR0_50Kbps    0x47                    //50Kbps
#define  BTR1_50Kbps    0xcd

#define  BTR0_80Kbps	0x44					//80Kbps
#define  BTR1_80Kbps	0xcd

#define  BTR0_100Kbps   0x43                    //100Kbps
#define  BTR1_100Kbps   0xcd

#define  BTR0_125Kbps   0x43                    //125Kbps
#define  BTR1_125Kbps   0xc9

#define  BTR0_250Kbps   0x41                    //250Kbps
#define  BTR1_250Kbps   0xc9

#define  BTR0_500Kbps   0x40                    //500Kbps
#define  BTR1_500Kbps   0xab

#define  BTR0_800Kbps   0x40                    //800Kbps
#define  BTR1_800Kbps   0xa5

#define  BTR0_1000Kbps  0x40                    //1000Kbps
#define  BTR1_1000Kbps  0xa3


/*********************************
TJA1050工作模式
*********************************/
#define  TJA1050_CLOSE  S_MODE=1                //TJA1050静音模式
#define  TJA1050_WORK   S_MODE=0                //TJA1050工作模式        

⌨️ 快捷键说明

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