📄 sja_basiccan.h
字号:
//----------------------------------------------------------------------
// FileName : SJA_BasicCan.h
// Description: BasicCan 头文件
// DateTime : 2005-08-31 Create
// Author : jztx-liuweiming
// Version : TxCmsPrj Ver1.0
//----------------------------------------------------------------------
// SJA1000, 16M晶振 BasicCan模式, 2005年8月31日调试完成, 参考周立功源代码
// 锦州拓新电力电子公司 刘伟明
//----------------------------------------------------------------------
/************************************************************************
* 广州周立功单片机发展有限公司 http://www.zlgmcu.com *
************************************************************************
************************************************************************
* *
* 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 0xA000 //定义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 //时钟分频寄存器
/************************************************************************
*定义指针 *
************************************************************************/
extern unsigned char xdata *Sja_BasicCan;
/************************************************************************
*定义命令字 *
************************************************************************/
#define CMD_SEND 0x01 //发送请求命令
#define CMD_ABORT_SEND 0x02 //夭折发送命令
#define CMD_RELEASE_RXBUFF 0x04 //释放接收缓冲区
#define CMD_CLEAR_OVER_STAT 0x08 //清除超载状态
#define CMD_GOTO_SLEEP 0x10 //进入睡眠状态命令
/************************************************************************
*定义16M的晶体下,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
/*-------------------------------------------------------------------------------------------
* 以下为BASICCAN SJA1000的错误字
-------------------------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -