📄 复件 sja_pelican.h
字号:
//----------------------------------------------------------------------
// 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 + -