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

📄 sja1000t.h

📁 一个DSP2812的源代码
💻 H
字号:
/*******************************************************************************
  Copyright (c) 2005,2006 北京中盛华旭电子科技有限公司(VSUNTEK, Ltd.)
  FileName: SJA1000T.C
  Author: 王在东
  Date: 2008.05.25
  Version: 1.0
  Description:SJA1000配置文件 
  History:
    <Author>wzd
  <Date>  
  <Ver>    
  <Desc>  
  Todo:
*******************************************************************************/
#ifndef         PeliCAN 
#define         PeliCAN

#include "DSP281x_Device.h"     // DSP281x Headerfile Include File
#include "DSP281x_Examples.h"   // DSP281x Examples Include File

/*******************************************************************************
功能说明:   计算SJA1000在电路中的实际地址:基址+内部寄存器地址 
其它说明:   以下的定义为SJA1000的内部寄存器的地址,不可修改 
           各寄存器的具体功能清参阅sja1000的数据手册 
*******************************************************************************/ 
// 控制寄存器 
#define         REG_MODE          0x00       //内部控制寄存器 
#define         REG_COMMAND       0x01       //命令寄存器 
#define         REG_STATUS        0x02       //状态寄存器 
#define         REG_INTERRUPT     0x03       //中断寄存器 
#define         REG_INTENABLE     0x04       //中断使能寄存器
#define         REG_RESVER0       0x05       //保留0
#define         REG_BTR0          0x06       //总线定时寄存器0 
#define         REG_BTR1          0x07       //总线定时寄存器1 
#define         REG_OCR           0x08       //输出控制寄存器 
#define         REG_TEST          0x09       //测试寄存器 

#define         REG_RESVER1       0x0A       //保留1 
#define         REG_ARBITRATE     0x0B       //仲裁丢失捕捉 
#define         REG_ERRCATCH      0x0C       //错误代码捕捉 
#define         REG_ERRLIMIT      0x0D       //错误报警限额 

#define         REG_RXERR         0x0E         //接收错误计数器 
#define         REG_TXERR         0x0F         //发送错误计数器 

#define         REG_ACR1          0x10       //验收代码寄存器 
#define         REG_ACR2          0x11       //验收代码寄存器 
#define         REG_ACR3          0x12       //验收代码寄存器 
#define         REG_ACR4          0x13       //验收代码寄存器 
#define         REG_AMR1          0x14       //验收屏蔽寄存器 
#define         REG_AMR2          0x15       //验收屏蔽寄存器 
#define         REG_AMR3          0x16       //验收屏蔽寄存器 
#define         REG_AMR4          0x17       //验收屏蔽寄存器 

// 发送缓冲区寄存器 
#define         REG_TXD_FID       0x10         //发送缓冲区1 
#define         REG_TXD_ID1       0x11         //发送缓冲区2 
#define         REG_TXD_ID2       0x12         //发送缓冲区3 
#define         REG_TXD_ID3       0x13         //发送缓冲区4 
#define         REG_TXD_ID4       0x14         //发送缓冲区5 
#define         REG_TXBuffer1     0x15         //发送缓冲区6 
#define         REG_TXBuffer2     0x16         //发送缓冲区7 
#define         REG_TXBuffer3     0x17         //发送缓冲区8 
#define         REG_TXBuffer4     0x18         //发送缓冲区9 
#define         REG_TXBuffer5     0x19         //发送缓冲区10 
#define         REG_TXBuffer6     0x1A         //发送缓冲区11 
#define         REG_TXBuffer7     0x1B         //发送缓冲区12 
#define         REG_TXBuffer8     0x1C         //发送缓冲区13 
#define         REG_TXBuffer      0x15

// 接收缓冲区寄存器 
#define         REG_RXD_FID       0x10         //接收缓冲区1 
#define         REG_RXD_ID1       0x11         //接收缓冲区2 
#define         REG_RXD_ID2       0x12         //接收缓冲区3 
#define         REG_RXD_ID3       0x13         //接收缓冲区4 
#define         REG_RXD_ID4       0x14         //接收缓冲区5 
#define         REG_RXBuffer1     0x15         //接收缓冲区6 
#define         REG_RXBuffer2     0x16         //接收缓冲区7 
#define         REG_RXBuffer3     0x17         //接收缓冲区8 
#define         REG_RXBuffer4     0x18         //接收缓冲区9 
#define         REG_RXBuffer5     0x19         //接收缓冲区10 
#define         REG_RXBuffer6     0x1A         //接收缓冲区11 
#define         REG_RXBuffer7     0x1B         //接收缓冲区12 
#define         REG_RXBuffer8     0x1C         //接收缓冲区13 
#define         REG_RXBuffer      0x15

#define         REG_RXCOUNT       0x1D         //RX报文计数器 
#define         REG_RBSA          0x1E         //接收缓冲区起始地址 
#define         REG_CDR           0x1F         //时钟分频寄存器 

/******************************************************************************* 
功能说明:   CAN控制器SJA1000通讯波特率.SJA1000的晶振为必须为16MHZ 
其它说明: 
*******************************************************************************/ 
#define         BTR0_Rate_20k      0x53          //20KBPS的预设值 
#define         BTR1_Rate_20k      0x2F          //20KBPS的预设值 
#define         BTR0_Rate_40k      0x87          //40KBPS的预设值 
#define         BTR1_Rate_40k      0xFF          //40KBPS的预设值 
#define         BTR0_Rate_50k      0x47          //50KBPS的预设值 
#define         BTR1_Rate_50k      0x2F          //50KBPS的预设值 
#define         BTR0_Rate_80k      0x83          //80KBPS的预设值 
#define         BTR1_Rate_80k      0xFF          //80KBPS的预设值 
#define         BTR0_Rate_100k     0x43          //100KBPS的预设值 
#define         BTR1_Rate_100k     0x2f          //100KBPS的预设值 
#define         BTR0_Rate_125k     0x03          //125KBPS的预设值 
#define         BTR1_Rate_125k     0x1c          //125KBPS的预设值 
#define         BTR0_Rate_200k     0x81          //200KBPS的预设值 
#define         BTR1_Rate_200k     0xFA          //200KBPS的预设值 
#define         BTR0_Rate_250k     0x01          //250KBPS的预设值 
#define         BTR1_Rate_250k     0x1c          //250KBPS的预设值 
#define         BTR0_Rate_400k     0x80          //400KBPS的预设值 
#define         BTR1_Rate_400k     0xfa          //400KBPS的预设值 
#define         BTR0_Rate_500k     0x00          //500KBPS的预设值 
#define         BTR1_Rate_500k     0x1c          //500KBPS的预设值 
#define         BTR0_Rate_666k     0x80          //666KBPS的预设值 
#define         BTR1_Rate_666k     0xb6          //666KBPS的预设值 
#define         BTR0_Rate_800k     0x00          //800KBPS的预设值 
#define         BTR1_Rate_800k     0x16          //800KBPS的预设值 
#define         BTR0_Rate_1000k    0x00          //1000KBPS的预设值 
#define         BTR1_Rate_1000k    0x14          //1000KBPS的预设值 


/******************************************************************************* 
功能说明:   定义系统参数 
其它说明:   无 
*******************************************************************************/ 
// 本地的IP地址 
#define    Local_IP1   0xFF    // IP地址最高位 
#define    Local_IP2   0xFF 
#define    Local_IP3   0xFF 
#define    Local_IP4   0x00   // IP地址最低位 

// 本地的CAN标识 
#define    REG_ACR1_FID  Local_IP1   // 滤波器的标识符最高位 
#define    REG_ACR2_FID  Local_IP2 
#define    REG_ACR3_FID  Local_IP3 
#define    REG_ACR4_FID  Local_IP4   // 滤波器的标识符最低位 
#define    REG_AMR1_FID  0xFF        // 滤波器的屏蔽符最高位 
#define    REG_AMR2_FID  0xFF 
#define    REG_AMR3_FID  0xFF 
#define    REG_AMR4_FID  0xFF        // 滤波器的屏蔽符最低位 

// 发往目标CAN标识 
#define    SEND_MSG_ID1   0x04         
#define    SEND_MSG_ID2   0x40 
#define    SEND_MSG_ID3   0x00 
#define    SEND_MSG_ID4   0x00
#define    SEND_MSG_ID    0x00880000   

// 模式参数 
#define    REG_MODE_DATA         0x08    // 模式控制器:     单滤波器、自检测模式 
#define    REG_MODE_NORMAL       0x08    //正常模式
#define    REG_TEST_DATA         0xAA    // 测试值 
#define    REG_CDR_DATA          0xC8    // 时分控制的值:    PeilCAN模式、CLOCK无效 
#define    REG_INTENABLE_DATA    0x83    // 中断使能控制的值: 总线错误中断、发送中断、接收中断 
#define    REG_OCR_DATA          0x1A    // 输出控制的值: 

// 定义命令字 
#define    TXD_ONE_CMD      0x03    // 产生一次报文发送,当错误时不再生发(单次发送) 
#define    TXD_CMD          0x01    // 发送请求命令,当错误时可重发 
#define    T_R_CMD          0x12    // 产生一次自接收性质的报文发送,发送错误时不会重发 
#define    AT_CMD           0x02    // 中止发送命令 
#define    RRB_CMD          0x04    // 放接收缓冲区 
#define    COS_CMD          0x08    // 数据溢出清除命令 

/******************************************************************************* 
功能说明:   全局函数应用定义 
其它说明:   无 
*****************************************************************************/ 
extern void           BusLine_Direct_Set(int16 Direct); 
extern void           SJA1000_WRITE(unsigned char Device, unsigned char ADDRESS, unsigned char A_DATA); 
extern unsigned char  SJA1000_READ(unsigned char Device, unsigned char ADDRESS); 
extern void           Init_SJA1000_HardWare(void); 
extern unsigned char  Init_SJA1000_Soft(unsigned char Device); 
extern unsigned char  SJA1000_DATA_SEND(unsigned char Device, Uint32 *SendDataBuf, Uint32 Message_Longth); 
extern unsigned char  SJA1000_DATA_RECEIVE(unsigned char Device, unsigned char *ReceiveDataBuf, unsigned char Message_Longth); 
extern unsigned char  SJA1000_CMD_PRG(unsigned char Device, unsigned char cmd); 

#endif

⌨️ 快捷键说明

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