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

📄 sja_bcanconf.h

📁 单片机和GPS接收机构成的车载卫星定位系统
💻 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 + -