?? sja_bcanconf.h
字號:
/************************************************************************
* *
* CAN 控制器SJA1000基本的硬件定義(BasicCAN 工作方式) *
* *
***********************************************************************/
/************************************************************************
* *
* 目的: SJA1000基本寄存器\功能位定義,便于用戶使用SJA1000時 *
* 只需作與其硬件系統相適合的簡單的修改,便能實現SJA1000的 *
* BasicCAN工作方式的功能 *
* *
* 文件名: SJA_BCANCONF.H *
* *
* 模塊名: -- *
* *
* 目標系統: 任何基于任何兼容8051指令的微處理器同SJA1000組成的CAN *
* 系統 *
* *
* 應用語言: Keil C51 *
* *
************************************************************************
* 版本 :V1.0 *
***********************************************************************/
#ifndef BasicCAN
#define BasicCAN
/************************************************************************
*SJA1000與微處理器的接口是以外部存儲器的方式,所以以下的基址定義,用戶 *
*應根據自己的實際電路來進行調整 *
************************************************************************/
#define SJA_BaseAdr 0x7f00 //定義sja1000的片選基址
//計算SJA1000在電路中的實際地址:基址+內部寄存器地址
/************************************************************************
* 以下的定義為SJA1000的內部寄存器的地址,不可修改 *
* 各寄存器的具體功能清參閱sja1000的數據手冊 *
************************************************************************/
#define REG_CONTROL SJA_BaseAdr+0x00 //內部控制寄存器
#define REG_COMMAND SJA_BaseAdr+0x01 //命令寄存器
#define REG_STATUS SJA_BaseAdr+0x02 //狀態寄存器
#define REG_INTERRUPT SJA_BaseAdr+0x03 //中斷寄存器
#define REG_ACR SJA_BaseAdr+0x04 //驗收代碼寄存器
#define REG_AMR SJA_BaseAdr+0x05 //驗收屏蔽寄存器
#define REG_BTR0 SJA_BaseAdr+0x06 //總線定時寄存器0
#define REG_BTR1 SJA_BaseAdr+0x07 //總線定時寄存器1
#define REG_OCR SJA_BaseAdr+0x08 //輸出控制寄存器
#define REG_TEST SJA_BaseAdr+0x09 //測試寄存器
//以下為發送緩沖區寄存器定義
#define REG_TxBuffer1 SJA_BaseAdr+0x0A //發送緩沖區1
#define REG_TxBuffer2 SJA_BaseAdr+0x0B //發送緩沖區2
#define REG_TxBuffer3 SJA_BaseAdr+0x0C //發送緩沖區3
#define REG_TxBuffer4 SJA_BaseAdr+0x0D //發送緩沖區4
#define REG_TxBuffer5 SJA_BaseAdr+0x0E //發送緩沖區5
#define REG_TxBuffer6 SJA_BaseAdr+0x0F //發送緩沖區6
#define REG_TxBuffer7 SJA_BaseAdr+0x10 //發送緩沖區7
#define REG_TxBuffer8 SJA_BaseAdr+0x11 //發送緩沖區8
#define REG_TxBuffer9 SJA_BaseAdr+0x12 //發送緩沖區9
#define REG_TxBuffer10 SJA_BaseAdr+0x13 //發送緩沖區10
//以下為接收緩沖區寄存器定義
#define REG_RxBuffer1 SJA_BaseAdr+0x14 //接收緩沖區1
#define REG_RxBuffer2 SJA_BaseAdr+0x15 //接收緩沖區2
#define REG_RxBuffer3 SJA_BaseAdr+0x16 //接收緩沖區3
#define REG_RxBuffer4 SJA_BaseAdr+0x17 //接收緩沖區4
#define REG_RxBuffer5 SJA_BaseAdr+0x18 //接收緩沖區5
#define REG_RxBuffer6 SJA_BaseAdr+0x19 //接收緩沖區6
#define REG_RxBuffer7 SJA_BaseAdr+0x1A //接收緩沖區7
#define REG_RxBuffer8 SJA_BaseAdr+0x1B //接收緩沖區8
#define REG_RxBuffer9 SJA_BaseAdr+0x1C //接收緩沖區9
#define REG_RxBuffer10 SJA_BaseAdr+0x1D //接收緩沖區10
/************************************************************************
*內部地址 01EH 備用 *
************************************************************************/
/************************************************************************
*時鐘分頻寄存器(內部地址01FH) *
************************************************************************/
#define REG_CDR SJA_BaseAdr+0x1F //時鐘分頻寄存器
/************************************************************************
*定義命令字 *
************************************************************************/
#define TR_CMD 0x01 //發送請求命令
#define AT_CMD 0x02 //夭折發送命令
#define RRB_CMD 0x04 //釋放接收緩沖區
#define COS_CMD 0x08 //清除超載狀態
#define GTS_CMD 0x10 //進入睡眠狀態命令
/************************************************************************
*定義12M的晶體下,CAN總線波特率 *
************************************************************************/
#define ByteRate_20k 0x00 //波特率20kbps
#define ByteRate_40k 0x01 //波特率40kbps
#define ByteRate_50k 0x02 //波特率50kbps
#define ByteRate_80k 0x03 //波特率80kbps
#define ByteRate_100k 0x04 //波特率100kbps
#define ByteRate_125k 0x05 //波特率125kbps
#define ByteRate_200k 0x06 //波特率200kbps
#define ByteRate_250k 0x07 //波特率250kbps
#define ByteRate_400k 0x08 //波特率400kbps
#define ByteRate_500k 0x09 //波特率500kbps
#define ByteRate_666k 0x0a //波特率666kbps
#define ByteRate_800k 0x0b //波特率800kbps
#define ByteRate_1000k 0x0c //波特率1000kbps
/************************************************************************
*定義指針 *
************************************************************************/
static unsigned char xdata *SJA_BCANAdr;
/************************************************************************
*以下為基本的函數說明(BasicCAN) *
************************************************************************/
/************************************************************************
*函數原型: bit BCAN_CREATE_COMMUNATION(void) *
*參數說明: 無 *
*返回值: *
* 0 ; 表示SJA1000接口正常 *
* 1 ; 表示SJA1000與處理器接口不正常 *
* *
*說明:該函數用于檢測CAN控制器的接口是否正常 *
************************************************************************/
bit BCAN_CREATE_COMMUNATION(void);
/************************************************************************
*函數原型: bit BCAN_ENTER_RETMODEL(void) *
*參數說明: 無 *
*返回值: *
* 0 ; 表示成功進入復位工作模式 *
* 1 ; 表示不能進入復位工作模式 *
* *
*說明: CAN控制器進入復位工作模式 *
************************************************************************/
bit BCAN_ENTER_RETMODEL(void);
/************************************************************************
*函數原型: bit BCAN_QUIT_RETMODEL(void) *
*參數說明: 無 *
*返回值: *
* 0 ; 表示成功退出復位工作模式 *
* 1 ; 表示不能退出復位工作模式 *
* *
*說明: CAN控制器退出復位工作模式 *
************************************************************************/
bit BCAN_QUIT_RETMODEL(void);
/************************************************************************
;*函數原型: bit BCAN_SET_BANDRATE(unsigned char CAN_ByteRate) *
;*參數說明: CAN_ByteRate 波特率(Kbit/s) BTR0 BTR1 *
;* 0 500 000H, 01cH *
*
;*返回值: *
;* 0 ;波特率設置成功 *
;* 1 ;波特率設置失敗 *
;* * *
;************************************************************************/
bit BCAN_SET_BANDRATE();
/************************************************************************
;*函數原型: bit BCAN_SET_OBJECT(unsigned char BCAN_ACR, *
unsigned char BCAN_AMR) *
*參數說明: *
* BCAN_ACR:存放驗收代碼寄存器(ACR)的參數設置 *
* BCAN_AMR:存放接收屏蔽寄存器(AMR)的參數設置 *
;*返回值: *
;* 0 ;通信對象設置成功 *
;* 1 ;通信對象設置失敗 *
;* *
;*說明:設置CAN節點的通訊對象,允許接收的報文ID號的高8位(D10--D3) 。 *
;* 允許接收的報文,是由AMR和ACR共同決定的. *
;* 滿足以下條件的ID號的報文才可以被接收 *
;*[(ID.10-ID.3)≡(AC.7-AC.0)]||(AM.7-AM.0)≡11111111 *
;* 該子程序只能用于復位模式 * *
;************************************************************************/
bit BCAN_SET_OBJECT(unsigned char BCAN_ACR,unsigned char BCAN_AMR);
/************************************************************************
;*函數原型: bit BCAN_SET_OUTCLK (unsigned char Out_Control, *
unsigned char Clock_Out); *
;*參數說明: *
* Out_Control:存放輸出控制寄存器 (OC) 的參數設置 *
* Clock_Out:存放時鐘分頻寄存器 (CDR) 的參數設置 *
* *
;*返回值: *
;* 0 ;設置成功 *
;* 1 ;設置失敗 *
;* *
;*說明:設置SJA1000的輸出模式和時鐘分頻 。該子程序只能用于復位模式 * *
;************************************************************************/
bit BCAN_SET_OUTCLK (unsigned char Out_Control,
unsigned char Clock_Out);
/************************************************************************
*函數原型: bit BCAN_DATA_WRITE(unsigned char *SendDataBuf) *
*參數說明: 特定幀各式的數據
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -