?? sja1000.h
字號(hào):
/***********************************
汽車電控系統(tǒng)診斷儀CAN總線診斷座程序頭文件
SJA1000工作在Peli CAN模式
***********************************/
/**********************************
定義SJA1000片選基地址
**********************************/
#define SJA1000_BASEADDR 0x7f00
/*********************************
定義SJA1000內(nèi)部寄存器地址
*********************************/
#define SJA1000_MODEL SJA1000_BASEADDR+0x00 //內(nèi)部控制寄存器
#define SJA1000_COMMAND SJA1000_BASEADDR+0x01 //命令寄存器
#define SJA1000_STATE SJA1000_BASEADDR+0x02 //狀態(tài)寄存器
#define SJA1000_INTERR SJA1000_BASEADDR+0x03 //中斷寄存器
#define SJA1000_ENINTERR SJA1000_BASEADDR+0x04 //中斷使能寄存器
#define SJA1000_BUSTIME0 SJA1000_BASEADDR+0x06 //總線定時(shí)0寄存器
#define SJA1000_BUSTIME1 SJA1000_BASEADDR+0x07 //總線定時(shí)1寄存器
#define SJA1000_OUTCONTR SJA1000_BASEADDR+0x08 //輸出控制寄存器
#define SJA1000_TEST SJA1000_BASEADDR+0x09 //測(cè)試寄存器
#define SJA1000_CLOCKDIR SJA1000_BASEADDR+0x1f //時(shí)鐘分頻寄存器
#define SJA1000_ALC SJA1000_BASEADDR+0x0b //仲裁丟失捕捉寄存器
#define SJA1000_ECC SJA1000_BASEADDR+0x0c //錯(cuò)誤代碼捕捉寄存器
#define SJA1000_EWLR SJA1000_BASEADDR+0x0d //錯(cuò)誤限制警告寄存器
#define SJA1000_RX_ERR SJA1000_BASEADDR+0x0e //接收錯(cuò)誤計(jì)數(shù)寄存器
#define SJA1000_TX_ERR SJA1000_BASEADDR+0x0f //發(fā)送錯(cuò)誤計(jì)數(shù)寄存器
#define SJA1000_TX_BUF0 SJA1000_BASEADDR+0x60; //TX專用緩沖區(qū)BUF0
#define SJA1000_TX_BUF1 SJA1000_BASEADDR+0x61; //TX專用緩沖區(qū)BUF1
#define SJA1000_TX_BUF2 SJA1000_BASEADDR+0x62; //TX專用緩沖區(qū)BUF2
#define SJA1000_TX_BUF3 SJA1000_BASEADDR+0x63; //TX專用緩沖區(qū)BUF3
#define SJA1000_TX_BUF4 SJA1000_BASEADDR+0x64; //TX專用緩沖區(qū)BUF4
#define SJA1000_TX_BUF5 SJA1000_BASEADDR+0x65; //TX專用緩沖區(qū)BUF5
#define SJA1000_TX_BUF6 SJA1000_BASEADDR+0x66; //TX專用緩沖區(qū)BUF6
#define SJA1000_TX_BUF7 SJA1000_BASEADDR+0x67; //TX專用緩沖區(qū)BUF7
#define SJA1000_TX_BUF8 SJA1000_BASEADDR+0x68; //TX專用緩沖區(qū)BUF8
#define SJA1000_TX_BUF9 SJA1000_BASEADDR+0x69; //TX專用緩沖區(qū)BUF9
#define SJA1000_TX_BUF10 SJA1000_BASEADDR+0x6A; //TX專用緩沖區(qū)BUF10
#define SJA1000_TX_BUF11 SJA1000_BASEADDR+0x6B; //TX專用緩沖區(qū)BUF11
#define SJA1000_TX_BUF12 SJA1000_BASEADDR+0x7C; //TX專用緩沖區(qū)BUF12
/*********************************
定義SJA1000接收和發(fā)送寄存器
*********************************/
#define SJA1000_RXBUF SJA1000_BASEADDR+0x10 //接收緩沖區(qū)首址,共13個(gè)字節(jié)
#define SJA1000_TXBUF SJA1000_BASEADDR+0x10 //發(fā)送緩沖區(qū)首址,共13個(gè)字節(jié)
#define SJA1000_ACRRX0 SJA1000_BASEADDR+0x10 //驗(yàn)收代碼寄存器,共4個(gè)字節(jié)
#define SJA1000_ACRRX1 SJA1000_BASEADDR+0x11
#define SJA1000_ACRRX2 SJA1000_BASEADDR+0x12
#define SJA1000_ACRRX3 SJA1000_BASEADDR+0x13
#define SJA1000_AMRRX0 SJA1000_BASEADDR+0x14 //驗(yàn)收屏蔽寄存器,共4個(gè)字節(jié)
#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緩沖區(qū)起始地址寄存器
/*********************************
定義接收?qǐng)?bào)文ID號(hào)
*********************************/
#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復(fù)位模式
#define SJA1000_WORK_MODEL 0x08 //SJA1000工作模式,單濾波方式
#define SJA1000_SELF_MODEL 0x04 //SJA1000工作在自檢測(cè)模式
#define SJA1000_HEAR_MODEL 0x0a //SJA1000工作在只聽(tīng)模式
#define SJA1000_SENT_COMMAND 0x01 //正常發(fā)送請(qǐng)求命令
#define SJA1000_ONE_SENT_COMMAND 0x03 //單次發(fā)送請(qǐng)求命令
#define SJA1000_SELF_SENT_RECEIVE 0x10 //自發(fā)自收請(qǐng)求命令,此時(shí)模式寄存器工作在自檢測(cè)
#define SJA1000_ONE_SENT_RECEIVE 0x12 //單次自發(fā)自收請(qǐng)求命令
#define SJA1000_CLEAR_DATA_OVER 0x08 //清除數(shù)據(jù)溢出
#define SJA1000_RELEASE_FIFO 0x04 //釋放接收緩沖器命令
#define SJA1000_IER_COMMAND 0xfd //中斷使能命令,錯(cuò)誤中斷、接收中斷、復(fù)位中斷
#define SJA1000_IE_COMMAND 0x0d //開(kāi)放總線錯(cuò)誤、接收中斷
#define SJA1000_CDR_COMMAND 0xc0 //時(shí)鐘分頻寄存器命令,使用Peli CAN模式,1/2分頻輸出
#define SJA1000_CDRCOL_COMMAND 0xc7 //時(shí)鐘分頻寄存器命令,使用Peli CAN模式,不分頻輸出
#define SJA1000_CDR_BASIC_COMMAND 0x80 //使用BASIC模式,1/2分頻
#define SJA1000_OUT_COMMAND 0xaa //正常輸出模式
#define SJA1000_FIFO_ADD 0x0 //接收緩沖區(qū)FIFO起始為內(nèi)部RAM的0地址
#define SJA1000_CLEAR_TX_ERR 0x0 //清除發(fā)送錯(cuò)誤寄存器
/********************************
SJA1000狀態(tài)
********************************/
#define SJA1000_RECEIVING 0x10 //正在接收狀態(tài)
#define SJA1000_SENDING 0x20 //正在發(fā)送狀態(tài)
#define SJA1000_OVERRUN 0x02 //數(shù)據(jù)溢出狀態(tài)
#define SJA1000_SENT_OVER 0x08 //發(fā)送完畢狀態(tài)
#define SJA1000_SENT_LOCK 0x04 //發(fā)送緩沖區(qū)鎖定狀態(tài)
#define SJA1000_BUS_CLOSE 0x80 //總線關(guān)閉狀態(tài)
#define SJA1000_BUS_LIMIT 0x40 //總線錯(cuò)誤限制警告
#define SJA1000_BUS_ERR 0xc3 //總線有錯(cuò)狀態(tài)
/********************************
SJA1000中斷狀態(tài)
********************************/
#define SJA1000_BUS_ERR_INTERR 0x04 //總線錯(cuò)誤中斷
#define SJA1000_DATA_OVER_INTERR 0x08 //數(shù)據(jù)溢出中斷
#define SJA1000_RI_INTERR 0x01 //接收中斷
#define SJA1000_TI_INTERR 0x02 //發(fā)送中斷
/*******************************
SJA1000晶振為16M標(biāo)準(zhǔn)波特率
*******************************/
#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工作模式
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -