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

📄 sja1000_peli.h

📁 MDK环境下CAN通信实验源码包fors3c2410,含有测试程序
💻 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 + -