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

📄 sja_bcanconf.h

📁 这是一个基于51单片机的can总线转串口的程序
💻 H
📖 第 1 页 / 共 2 页
字号:

#ifndef         BasicCAN 
#define         BasicCAN


/************************************************************************
 *SJA1000与微处理器的接口是以外部存储器的方式,所以以下的基址定义,用户 *
 *应根据自己的实际电路来进行调整                                        *
 ************************************************************************/
#define         SJA_BaseAdr       0x7e00     //定义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          //时钟分频寄存器

/************************************************************************
 *定义指针                                                              *
 ************************************************************************/
 unsigned        char       xdata  *SJA_BCANAdr;    

/************************************************************************
 *定义命令字                                                            *
 ************************************************************************/ 
#define         TR_CMD           0x01          //发送请求命令
#define         AT_CMD           0x02          //夭折发送命令
#define         RRB_CMD          0x04          //释放接收缓冲区
#define         COS_CMD          0x08          //清除超载状态
#define         GTS_CMD          0x10          //进入睡眠状态命令  


/*-------------------------------------------------------------------------------------------
 *  以下为BASICCAN SJA1000的错误字                                                          *
 -------------------------------------------------------------------------------------------*/
#define     CAN_INTERFACE_0K    0                                                        /*SJA1000接口正常                       */
#define     CAN_BUS_0K          0                                                       /*CAN总线工作正常                       */
#define     CAN_INTERFACE_ERR   0XFF                                                    /*SJA1000接口错误?                     */
#define     CAN_ENTRESET_ERR    0XFE                                                    /*SJA1000不能进入复位模式   */
#define     CAN_QUITRESET_ERR   0XFD                                                    /*SJA1000不能退出复位模式       */
#define     CAN_INITOBJECT_ERR  0XFC                                                    /*初始化报文验收滤波器错    */
#define     CAN_INITBTR_ERR     0XFB                                                    /*初始化总线定时器器错          */
#define     CAN_INITOUTCTL_ERR  0XFA                                                    /*初始化输出控制错误            */
#define     CAN_INTCLKDIV_ERR   0XF9                                                    /*初始化时钟分频控制器错        */
#define     CAN_BUS_ERR         0XF8                                                    /*SJA1000发送数据错                     */

#define     NO_BANDRATE_SIZE    0xe7

/************************************************************************
 *以下为基本的函数说明(BasicCAN)                                       *
 ************************************************************************/



/************************************************************************
 *函数原型:      bit   BCAN_ENTER_RETMODEL(void)                            *
 *参数说明:  无                                                         *
 *返回值:                                                               *
 *           0 ; 表示成功进入复位工作模式                               *
 *           1 ; 表示不能进入复位工作模式                               *
 *                                                                      * 
 *说明:      CAN控制器进入复位工作模式                                  *
 ************************************************************************/ 
 bit   BCAN_ENTER_RETMODEL(void);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -