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

📄 sja_pelican.h

📁 SJA1000 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        XBYTE       ((unsigned char volatile xdata *) 0xA000) 
 
/************************************************************************ 
 *定义指针                                                              * 
 ************************************************************************/ 
 extern unsigned char             xdata  *Sja_PeliCan;     
 
 
//计算SJA1000在电路中的实际地址: 基址 + 内部寄存器地址 
 
/************************************************************************ 
 * 以下的定义为SJA1000的内部寄存器的地址(Peli模式),不可修改            * 
 *     各寄存器的具体功能清参阅sja1000的数据手册                        * 
 ************************************************************************/ 
#define         REG_ModeControl    XBYTE[0]        //模式和控制寄存器 
// 0x01  复位模式(请求)位 
// 0x02  仅听模式位 
// 0x04  自我测试模式位 
// 0x08  验收滤波器模式位 
// 0x10  进入休眠模式位 
#define         REG_Command       XBYTE[1]        //命令寄存器 
// 0x01  发送请求位 
// 0x02  终止发送位 
// 0x04  释放接收缓冲器位 
// 0x08  清除数据超载位 
// 0x10  自身接收请求位 
#define         REG_Status        XBYTE[2]        //状态寄存器 
// 0x01  接收缓冲器状态位 
// 0x02  数据超载状态位 
// 0x04  发送缓冲器状态位 
// 0x08  发送完成状态位 
// 0x10  接收状态位 
// 0x20  发送状态位 
// 0x40  错误状态位 
// 0x80  总线状态位 
#define         REG_Interrupt    XBYTE[3]        //中断寄存器 
// 0x01  接收中断位 
// 0x02  发送中断位 
// 0x04  警告错误中断位 
// 0x08  数据超载中断位 
// 0x10  唤醒中断位 
// 0x20  错误隐性中断位 
// 0x40  仲裁丢失中断位 
// 0x80  总线错误中断位 
#define         REG_InterruptEn  XBYTE[4]        //中断使能和控制寄存器 
// 0x01  接收中断使能位 
// 0x02  发送中断使能位 
// 0x04  警告错误中断使能位 
// 0x08  数据超载中断使能位 
// 0x10  唤醒中断使能位 
// 0x20  错误隐性中断使能位 
// 0x40  仲裁丢失中断使能位 
// 0x80  总线错误中断使能位 
#define         REG_BusTiming0    XBYTE[6]        //总线定时寄存器0  
#define         REG_BusTiming1    XBYTE[7]        //总线定时寄存器1  
// 0x80  采样模式位 1=总线被采样三次  0=总线被采样一次 
#define         REG_OutControl    XBYTE[8]        //输出控制寄存器 
//OCMODE0  OCMODE1 
// 0x00  双相输出模式 
// 0x02  正常输出模式 
// 0x03  时钟输出模式 
 
//TX1的输出管脚配置 
// 0x20  输出极性控制位 
// 0x00  配置为悬空 
// 0x40  配置为下拉 
// 0x80  配置为上拉 
// 0xc0  配置为推挽 
 
 //TX0的输出管脚配置 
// 0x04  输出极性控制位 
// 0x00  配置为悬空 
// 0x08  配置为下拉 
// 0x10  配置为上拉 
// 0x18  配置为推挽 
 
#define         REG_Test           XBYTE[9]        //测试寄存器 
 
//验收代码和屏蔽寄存器 
#define         REG_AcceptCode0    XBYTE[16] 
#define         REG_AcceptCode1    XBYTE[17] 
#define         REG_AcceptCode2    XBYTE[18] 
#define         REG_AcceptCode3    XBYTE[19] 
#define         REG_AcceptMask0    XBYTE[20] 
#define         REG_AcceptMask1    XBYTE[21] 
#define         REG_AcceptMask2    XBYTE[22] 
#define         REG_AcceptMask3    XBYTE[23] 
 
//其他寄存器 
#define         REG_ArbLostCap    XBYTE[11]        //仲裁丢失捕捉 
#define         REG_ErrCodeCap    XBYTE[12]        //错误代码捕捉 
#define         REG_ErrWarnLimit  XBYTE[13]        //出错警告界限 
#define         REG_RxErrCount    XBYTE[14]        //RX错误记数 
#define         REG_TxErrCount    XBYTE[15]        //TX错误记数 
#define         REG_RxMsgCount    XBYTE[29]        //RX报文记数器 
#define         REG_RxBufStartAdr XBYTE[30]        //RX缓冲器其始位置 
 
#define         REG_ClockDivide   XBYTE[31]        //时钟分频寄存器 0x1F=31 
// 0x07  CLKOUT=震荡器频率 
// 0x00  CLKOUT=1/2震荡器频率 
 
// 0x08  时钟关闭位,时钟输出管脚控制位 
// 0x20  用于接收中断的管脚TX1 
// 0x40  CAN比较器旁路控制位 
// 0x80  CAN模式控制位 
 
//以下为发送缓冲区寄存器定义 仅写地址 
#define         REG_TxFramInfo    XBYTE[16]         //发送缓冲区1 
#define         REG_TxBuffer1     XBYTE[17]         //发送缓冲区1 
#define         REG_TxBuffer2     XBYTE[18]         //发送缓冲区2 
#define         REG_TxBuffer3     XBYTE[19]         //发送缓冲区3 
#define         REG_TxBuffer4     XBYTE[20]         //发送缓冲区4 
#define         REG_TxBuffer5     XBYTE[21]         //发送缓冲区5 
#define         REG_TxBuffer6     XBYTE[22]         //发送缓冲区6 
#define         REG_TxBuffer7     XBYTE[23]         //发送缓冲区7 
#define         REG_TxBuffer8     XBYTE[24]         //发送缓冲区8 
#define         REG_TxBuffer9     XBYTE[25]         //发送缓冲区9 
#define         REG_TxBuffer10    XBYTE[26]         //发送缓冲区10 
#define         REG_TxBuffer11    XBYTE[27]         //发送缓冲区11 
#define         REG_TxBuffer12    XBYTE[28]         //发送缓冲区12 
 
//以下为发送缓冲区寄存器定义 仅读地址 
#define         REG_TxFramInfoRd    XBYTE[96]       //发送缓冲区1 
#define         REG_TxBufferRd1     XBYTE[97]       //发送缓冲区1 
#define         REG_TxBufferRd2     XBYTE[98]       //发送缓冲区2 
#define         REG_TxBufferRd3     XBYTE[99]       //发送缓冲区3 
#define         REG_TxBufferRd4     XBYTE[100]      //发送缓冲区4 
#define         REG_TxBufferRd5     XBYTE[101]      //发送缓冲区5 
#define         REG_TxBufferRd6     XBYTE[102]      //发送缓冲区6 
#define         REG_TxBufferRd7     XBYTE[103]      //发送缓冲区7 
#define         REG_TxBufferRd8     XBYTE[104]      //发送缓冲区8 
#define         REG_TxBufferRd9     XBYTE[105]      //发送缓冲区9 
#define         REG_TxBufferRd10    XBYTE[106]      //发送缓冲区10 
#define         REG_TxBufferRd11    XBYTE[107]      //发送缓冲区11 
#define         REG_TxBufferRd12    XBYTE[108]      //发送缓冲区12 
 
//以下为接收缓冲区寄存器定义 
#define         REG_RxFramInfo    XBYTE[16]         //发送缓冲区1 
#define         REG_RxBuffer1     XBYTE[17]         //接收缓冲区1 
#define         REG_RxBuffer2     XBYTE[18]         //接收缓冲区2 
#define         REG_RxBuffer3     XBYTE[19]         //接收缓冲区3 
#define         REG_RxBuffer4     XBYTE[20]         //接收缓冲区4 
#define         REG_RxBuffer5     XBYTE[21]         //接收缓冲区5 
#define         REG_RxBuffer6     XBYTE[22]         //接收缓冲区6 
#define         REG_RxBuffer7     XBYTE[23]         //接收缓冲区7 
#define         REG_RxBuffer8     XBYTE[24]         //接收缓冲区8 
#define         REG_RxBuffer9     XBYTE[25]         //接收缓冲区9 
#define         REG_RxBuffer10    XBYTE[26]         //接收缓冲区10 
#define         REG_RxBuffer11    XBYTE[27]         //接收缓冲区11 
#define         REG_RxBuffer12    XBYTE[28]         //接收缓冲区12 
 
/************************************************************************ 
 *定义命令字                                                            * 
 ************************************************************************/  
#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总线波特率                                        * 
 ************************************************************************/ 
/************************************************************************ 
;*参数说明:  CAN_ByteRate  波特率(Kbit/s) BTR0     BTR1               * 
;*           0	            20              053H,    02FH               * 
;*           1	            40              087H,    0FFH               *   
;*           2	            50              047H,    02FH               * 
;*           3	            80              083H,    0FFH               * 
;*           4	            100             043H,    02fH               * 
;*           5	            125             03H,     01cH               * 
;*           6              200             081H,    0faH               * 
;*           7	            250             01H,     01cH               * 
;*           8	            400             080H,    0faH               * 
;*           9	            500             00H,     01cH               * 
;*           10	            666             080H,    0b6H               * 
;*           11	            800             00H,     016H               * 
;*           12	            1000            00H,     014H               * 
;*以上设置CAN控制器SJA1000通讯波特率. SJA1000的晶振为必须为16MHZ,       * 
/////////////////////////////////////////////////////////////////////////  
;*参数说明:  CAN_ByteRate    波特率(Kbit/s) BTR0     BTR1             * 
;*           0              5                 0EFH     0FFH             * 
;*           1              10                0D7H     0FFH             * 
;*           2              20                0CBH     0FFH             * 
;*           3              40                0C5H     0FFH             * 
;*           4              50                0C9H     0A7H             * 
;*           5              80                0C2H     0FFH             * 
;*           6              100               04H      0A7H             * 
;*           7              200               02H      025H             * 
;*           8              250               01H      045H             * 
;*           9              300               01H      025H             * 
;*           10             500               01H      012H             * 
;*           11             600               00H      025H             * 
;*           12             1000              00H      012H             * 
;*                                                                      * 
;*以上设置CAN控制器SJA1000通讯波特率. SJA1000的晶振为必须为12MHZ,       * 
/////////////////////////////////////////////////////////////////////////  
;*说明:其它晶体的频率的值的波特率,需自己计算 。该只能用于复位模式      * 
;************************************************************************/ 
#endif /* PeliCAN */ 

⌨️ 快捷键说明

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