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

📄 复件 sja_pelican.h

📁 参考周立功的basic模式的CAN通讯
💻 H
📖 第 1 页 / 共 2 页
字号:
//----------------------------------------------------------------------
// FileName   : SJA_PeliCan.h
// Description: PeliCan 头文件
// DateTime   : 2006-05-11 Create
// Author     : jztx-liuweiming
// Version    : TxCmsPrj Ver1.0
//----------------------------------------------------------------------
// SJA1000, 16M晶振 PeliCan模式, 2006年5月11日开始调试, 参考周立功源代码
// 锦州拓新电力电子公司 刘伟明
//----------------------------------------------------------------------

/************************************************************************
 *   锦州拓新电力电子公司            http://www.jztxdl.com              *
 ************************************************************************
 ************************************************************************
 *                                                                      *
 *   CAN 控制器SJA1000基本的硬件定义(PeliCAN 工作方式)                 *
 *                                                                      *
 ************************************************************************
 ************************************************************************
 *                                                                      *
 *  目的:       SJA1000基本寄存器\功能位定义,便于用户使用SJA1000时     * 
 *              只需作与其硬件系统相适合的简单的修改,便能实现SJA1000   *
 *              的PeliCAN工作方式的功能                                 *
 *                                                                      *
 *  文件名:     SJA_PeliCan.H                                           *
 *                                                                      *
 *  模块名:     --                                                      *
 *                                                                      *
 *  目标系统:   任何基于任何兼容8051指令的微处理器同SJA1000组成的CAN    *
 *              系统                                                    *
 *                                                                      *
 *  应用语言:   Keil C51                                                *
 *                                                                      *
 ************************************************************************
 *                                                                      *
 *  版本 : V1.1                                                         *
 *                                                                      *
 ************************************************************************
 *  锦州拓新电力电子公司 保留所有的版权                                 *
 ************************************************************************/

#ifndef         PeliCAN
#define         PeliCAN

/************************************************************************
 *SJA1000与微处理器的接口是以外部存储器的方式,所以以下的基址定义,     *
 *用户应根据自己的实际电路来进行调整                                    *
 ************************************************************************/
#define         SJA_PeliAdr       0xA000     //定义sja1000的片选基址

/************************************************************************
 *定义指针                                                              *
 ************************************************************************/
 extern unsigned char             xdata  *Sja_PeliCan;    


//计算SJA1000在电路中的实际地址: 基址 + 内部寄存器地址

/************************************************************************
 * 以下的定义为SJA1000的内部寄存器的地址(Peli模式),不可修改            *
 *     各寄存器的具体功能清参阅sja1000的数据手册                        *
 ************************************************************************/
#define         REG_CONTROL       SJA_PeliAdr + 10        //模式和控制寄存器
// 0x01  复位模式(请求)位
// 0x02  仅听模式位
// 0x04  自我测试模式位
// 0x08  验收滤波器模式位
// 0x10  进入休眠模式位
#define         REG_COMMAND       SJA_PeliAdr + 1        //命令寄存器
// 0x01  发送请求位
// 0x02  终止发送位
// 0x04  释放接收缓冲器位
// 0x08  清除数据超载位
// 0x10  自身接收请求位
#define         REG_STATUS        SJA_PeliAdr + 2        //状态寄存器
// 0x01  接收缓冲器状态位
// 0x02  数据超载状态位
// 0x04  发送缓冲器状态位
// 0x08  发送完成状态位
// 0x10  接收状态位
// 0x20  发送状态位
// 0x40  错误状态位
// 0x80  总线状态位
#define         REG_INTERRUPT     SJA_PeliAdr + 3        //中断寄存器
// 0x01  接收中断位
// 0x02  发送中断位
// 0x04  警告错误中断位
// 0x08  数据超载中断位
// 0x10  唤醒中断位
// 0x20  错误隐性中断位
// 0x40  仲裁丢失中断位
// 0x80  总线错误中断位
#define         REG_ACR           SJA_PeliAdr + 4        //中断使能和控制寄存器
// 0x01  接收中断使能位
// 0x02  发送中断使能位
// 0x04  警告错误中断使能位
// 0x08  数据超载中断使能位
// 0x10  唤醒中断使能位
// 0x20  错误隐性中断使能位
// 0x40  仲裁丢失中断使能位
// 0x80  总线错误中断使能位
#define         REG_BTR0          SJA_PeliAdr + 6        //总线定时寄存器0 
#define         REG_BTR1          SJA_PeliAdr + 7        //总线定时寄存器1 
// 0x80  采样模式位 1=总线被采样三次  0=总线被采样一次
#define         REG_OCR           SJA_PeliAdr + 8        //输出控制寄存器
#define         REG_TEST          SJA_PeliAdr + 9        //测试寄存器
// 0x00  双相输出模式
// 0x02  正常输出模式
// 0x03  时钟输出模式
#define         REG_CDR           SJA_PeliAdr + 31        //时钟分频寄存器 0x1F=31
// 0x07  CLKOUT=震荡器频率
// 0x00  CLKOUT=1/2震荡器频率
// 0x08  时钟关闭位,时钟输出管脚控制位
// 0x20  用于接收中断的管脚TX1
// 0x40  CAN比较器旁路控制位
// 0x80  CAN模式控制位

//验收代码和屏蔽寄存器
#define         REG_AcceptCode0    SJA_PeliAdr + 16
#define         REG_AcceptCode1    SJA_PeliAdr + 17
#define         REG_AcceptCode2    SJA_PeliAdr + 18
#define         REG_AcceptCode3    SJA_PeliAdr + 19
#define         REG_AcceptMask0    SJA_PeliAdr + 20
#define         REG_AcceptMask1    SJA_PeliAdr + 21
#define         REG_AcceptMask2    SJA_PeliAdr + 22
#define         REG_AcceptMask3    SJA_PeliAdr + 23

//其他寄存器
#define         REG_ArbLostCap    SJA_PeliAdr + 11        //仲裁丢失捕捉
#define         REG_ErrCodeCap    SJA_PeliAdr + 12        //错误代码捕捉
#define         REG_ErrWarnLimit  SJA_PeliAdr + 13        //出错警告界限
#define         REG_RxErrCount    SJA_PeliAdr + 14        //RX错误记数
#define         REG_TxErrCount    SJA_PeliAdr + 15        //TX错误记数
#define         REG_RxMsgCount    SJA_PeliAdr + 29        //RX报文记数器
#define         REG_RxBufStartAdr SJA_PeliAdr + 30        //RX缓冲器其始位置

//以下为发送缓冲区寄存器定义 仅写地址
#define         REG_TxFramInfo    SJA_PeliAdr + 16         //发送缓冲区1
#define         REG_TxBuffer1     SJA_PeliAdr + 17         //发送缓冲区1
#define         REG_TxBuffer2     SJA_PeliAdr + 18         //发送缓冲区2
#define         REG_TxBuffer3     SJA_PeliAdr + 19         //发送缓冲区3
#define         REG_TxBuffer4     SJA_PeliAdr + 20         //发送缓冲区4
#define         REG_TxBuffer5     SJA_PeliAdr + 21         //发送缓冲区5
#define         REG_TxBuffer6     SJA_PeliAdr + 22         //发送缓冲区6
#define         REG_TxBuffer7     SJA_PeliAdr + 23         //发送缓冲区7
#define         REG_TxBuffer8     SJA_PeliAdr + 24         //发送缓冲区8
#define         REG_TxBuffer9     SJA_PeliAdr + 25         //发送缓冲区9
#define         REG_TxBuffer10    SJA_PeliAdr + 26         //发送缓冲区10
#define         REG_TxBuffer11    SJA_PeliAdr + 27         //发送缓冲区11
#define         REG_TxBuffer12    SJA_PeliAdr + 28         //发送缓冲区12

//以下为发送缓冲区寄存器定义 仅读地址
#define         REG_TxFramInfoRd    SJA_PeliAdr + 96       //发送缓冲区1
#define         REG_TxBufferRd1     SJA_PeliAdr + 97       //发送缓冲区1
#define         REG_TxBufferRd2     SJA_PeliAdr + 98       //发送缓冲区2
#define         REG_TxBufferRd3     SJA_PeliAdr + 99       //发送缓冲区3
#define         REG_TxBufferRd4     SJA_PeliAdr + 100      //发送缓冲区4
#define         REG_TxBufferRd5     SJA_PeliAdr + 101      //发送缓冲区5
#define         REG_TxBufferRd6     SJA_PeliAdr + 102      //发送缓冲区6
#define         REG_TxBufferRd7     SJA_PeliAdr + 103      //发送缓冲区7
#define         REG_TxBufferRd8     SJA_PeliAdr + 104      //发送缓冲区8
#define         REG_TxBufferRd9     SJA_PeliAdr + 105      //发送缓冲区9
#define         REG_TxBufferRd10    SJA_PeliAdr + 106      //发送缓冲区10
#define         REG_TxBufferRd11    SJA_PeliAdr + 107      //发送缓冲区11
#define         REG_TxBufferRd12    SJA_PeliAdr + 108      //发送缓冲区12

//以下为接收缓冲区寄存器定义
#define         REG_RxFramInfo    SJA_PeliAdr + 16         //发送缓冲区1
#define         REG_RxBuffer1     SJA_PeliAdr + 17         //接收缓冲区1
#define         REG_RxBuffer2     SJA_PeliAdr + 18         //接收缓冲区2
#define         REG_RxBuffer3     SJA_PeliAdr + 19         //接收缓冲区3
#define         REG_RxBuffer4     SJA_PeliAdr + 20         //接收缓冲区4
#define         REG_RxBuffer5     SJA_PeliAdr + 21         //接收缓冲区5
#define         REG_RxBuffer6     SJA_PeliAdr + 22         //接收缓冲区6
#define         REG_RxBuffer7     SJA_PeliAdr + 23         //接收缓冲区7
#define         REG_RxBuffer8     SJA_PeliAdr + 24         //接收缓冲区8
#define         REG_RxBuffer9     SJA_PeliAdr + 25         //接收缓冲区9
#define         REG_RxBuffer10    SJA_PeliAdr + 26         //接收缓冲区10
#define         REG_RxBuffer11    SJA_PeliAdr + 27         //接收缓冲区11
#define         REG_RxBuffer12    SJA_PeliAdr + 28         //接收缓冲区12

⌨️ 快捷键说明

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