📄 sja1000_peli.h
字号:
/************************************************************************
* File: sja1000_peli.h *
* Author: embest *
* Desc: hardware definition of CAN controller SJA1000 (PeliCAN Mode)*
* History: H.T.Zhang, Programming start, September 27, 2005 *
*************************************************************************/
#ifndef PeliCAN
#define PeliCAN
/************************************************************************
*adjust the chip selection address according to the real circuit *
************************************************************************/
//define the chip selection address of sja1000
//#ifdef ARM_2410
#define SJA_DATA (*(volatile unsigned char *)(0x08100000))
#define SJA_ADDR (*(volatile unsigned char *)0x08700000)
//#else //44B0
//#define SJA_DATA (*(volatile unsigned char *)(0x02100000))
//#define SJA_ADDR (*(volatile unsigned char *)0x02700000)
//#endif
/************************************************************************
* define the address of interior register of SJA1000, can't be modified*
************************************************************************/
#define REG_MODE 0x00 //模式寄存器
#define REG_COMMAND 0x01 //命令寄存器
#define REG_STATUS 0x02 //状态寄存器
#define REG_INTERRUPT 0x03 //中断寄存器
#define REG_INT_EN 0x04 //中断使能寄存器
//05保留
#define REG_BTR0 0x06 //总线时序寄存器0
#define REG_BTR1 0x07 //总线时序寄存器1
#define REG_OCR 0x08 //输出控制寄存器
#define REG_TEST 0x09 //
//0a保留
#define REG_ALC 0x0b //仲裁丢失捕捉寄存器
#define REG_ECC 0x0c //错误代码捕捉寄存器
#define REG_EML 0x0d //错误报警限额寄存器
#define REG_RxErr_Counter 0x0e//RX错误计数寄存器
#define REG_TxErr_Counter 0x0f//TX错误计数寄存器
#define REG_ACR0 0x10 //验收代码0
#define REG_ACR1 0x11 //验收代码1
#define REG_ACR2 0x12 //验收代码2
#define REG_ACR3 0x13 //验收代码3
#define REG_AMR0 0x14 //验收屏蔽0
#define REG_AMR1 0x15 //验收屏蔽1
#define REG_AMR2 0x16 //验收屏蔽2
#define REG_AMR3 0x17 //验收屏蔽3
#define REG_RxBuffer0 0x10 //
#define REG_RxBuffer1 0x11 //
#define REG_RxBuffer2 0x12 //
#define REG_RxBuffer3 0x13 //
#define REG_RxBuffer4 0x14 //
#define REG_TxBuffer0 0x10 //
#define REG_TxBuffer1 0x11 //
#define REG_TxBuffer2 0x12 //
#define REG_TxBuffer3 0x13 //
#define REG_TxBuffer4 0x14 //
#define REG_DataBuffer1 0x15 //
#define REG_DataBuffer2 0x16 //
#define REG_DataBuffer3 0x17 //
#define REG_DataBuffer4 0x18 //
#define REG_DataBuffer5 0x19 //
#define REG_DataBuffer6 0x1a //
#define REG_DataBuffer7 0x1b //
#define REG_DataBuffer8 0x1c //
#define REG_RBSA 0x1e //RX缓冲区起始地址寄存器
#define REG_CDR 0x1f //时钟分频寄存器
#define REG_Rcv_Counter 0x1d //RX报文计数器
/************************************************************************
*define command-string *
************************************************************************/
#define TR_CMD 0x01 //transmission request command
#define AT_CMD 0x02 //Abort Transmission command
#define RRB_CMD 0x04 //Release Receive Buffer
#define COS_CMD 0x08 //Clear Data Overrun
#define SRR_CMD 0x10 //Self Reception Request
/************************************************************************
*define baudrate of CAN bus ,with 12M Oscillator *
************************************************************************/
#define ByteRate_20k 0x00 //baudrate 20kbps
#define ByteRate_40k 0x01 //baudrate 40kbps
#define ByteRate_50k 0x02 //baudrate 50kbps
#define ByteRate_80k 0x03 //baudrate 80kbps
#define ByteRate_100k 0x04 //baudrate 100kbps
#define ByteRate_125k 0x05 //baudrate 125kbps
#define ByteRate_200k 0x06 //baudrate 200kbps
#define ByteRate_250k 0x07 //baudrate 250kbps
#define ByteRate_400k 0x08 //baudrate 400kbps
#define ByteRate_500k 0x09 //baudrate 500kbps
#define ByteRate_666k 0x0a //baudrate 666kbps
#define ByteRate_800k 0x0b //baudrate 800kbps
#define ByteRate_1000k 0x0c //baudrate 1000kbps
/************************************************************************
*Bisic function declare(BasicCAN) *
************************************************************************/
int sja_create_communication(void);
int sja_enter_resetmode(void);
int sja_quit_resetmode(void);
int sja_set_baudrate(unsigned char CAN_ByteRate);
int sja_set_object(unsigned char * PCAN_ACR,unsigned char * PCAN_AMR);
int sja_set_outclock (unsigned char Out_Control,
unsigned char Clock_Out);
int sja_bcan_init(unsigned char BCAN_ACR,
unsigned char BCAN_AMR,
unsigned char Bus_Timing0,
unsigned char Bus_Timing1,
unsigned char Out_Control,
unsigned char Clock_Out
);
int sja_write_data(unsigned char *SendDataBuf);
int sja_receive_data(unsigned char *RcvDataBuf);
int sja_command_prg(unsigned char cmd);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -