CAN总线控制器 SJA1000源程序(c语言)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CAN总线控制器sja1000源程序

SJA1000 是一种独立控制器用于移动目标和一般工业环境中的区域网络控制CAN 它是PHILIPS 半导体PCA82C200 CAN 控制器BasicCAN 的替代产品而且它增加了一种新的工作模式PeliCAN , 这种模式支持具有很多新特性的CAN 2.0B 协议。

1 特性

和PCA82C200 独立CAN 控制器引脚兼容

和PCA82C200 独立CAN 控制器电气兼容

PCA82C200 模式即默认的BasicCAN 模式

扩展的接收缓冲器64 字节先进先出FIFO

和CAN2.0B 协议兼容PCA82C200 兼容模式中的无源扩展帧

同时支持11 位和29 位识别码

位速率可达1Mbits/s

PeliCAN 模式扩展功能

--可读/写访问的错误计数器

--可编程的错误报警限制

--最近一次错误代码寄存器

--对每一个CAN 总线错误的中断

--具体控制位控制的仲裁丢失中断

--单次发送无重发

--只听模式无确认无活动的出错标

--支持热插拔软件位速率检测

--验收滤波器扩展4 字节代码4 字节屏蔽

--自身信息接收自接收请求

24MHz 时钟频率

对不同微处理器的接口

可编程的CAN 输出驱动器配置

增强的温度适应-40-+125

#include

#include

#include

//-----------------------沿袭引脚和变量----------------------------------------------

#define uchar unsigned char //宏定义

#define uint unsigned int //宏定义

void MCU_init(void);

/*P2口的管脚定义*/

sbit LED1 = P2^6;

sbit LED2 = P2^5;

sbit SJA_CS = P2^7; //SJA1000片选管脚,低电平有效

//sbit SJA_RST = P1^2;

/*P3口的管脚定义*/

sbit SJA_RD = P3^7;

sbit SJA_WR = P3^6;

//-----------------------定义寻址的基址--------------------------------------------------------

#define base_Adr 0x7F00

//-----------------------定义总线定时寄存器的值--------------------------------------------------------

#define SJA_BTR0 0x07 //该值需要用户根据需要的波特率进行计算,推荐使用周立功发布的波特率计算器

#define SJA_BTR1 0x2F

//-----------------------设置接收报文类型(标示符)--------------------------------------------------------

//该值需要用户根据实际需要重新配置

#define SJA_ACR 0x11 //验收代码寄存器的值

#define SJA_AMR 0xFF //验收屏蔽寄存器的值

//-----------------------设置输出时钟类型--------------------------------------------------------

//该值需要用户根据实际需要重新配置

#define SJA_OCR 0xaa //输出控制寄存器的值

#define SJA_CDR 0x40 //时钟分频寄存器的值

//-----------------------设置SJA中断,1为开中断-------------------------------------------------------- #define SJA_OIE 1 //溢出中断

#define SJA_EIE 1 //错误中断

#define SJA_TIE 1 //发送中断

#define SJA_RIE 1 //接收中断

//-----------------------定义地址指针,指向基址-------------------------------------------------------- unsigned char xdata *SJA_base_Adr = base_Adr;

//-----------------------定义硬件故障标志位--------------------------------------------------------

bit bdata connect_OK=0; //connect_OK=1设备连接正常

//connect_OK=0设备连接故障

//-----------------------定义硬件故障标志位--------------------------------------------------------

bit bdata SJA_workmode=1; //SJA_workmode=1SJA工作在工作模式

//SJA_workmode=0工作在复位模式

//-----------------------定义SJA1000读写缓冲区的数据结构--------------------------------------------------------

struct BASICCAN_BUFStruct{

unsigned char IDH8;

unsigned char IDL_R_DLC;

unsigned char Frame_Data[8];

}receive_BUF,send_BUF;

相关文档
最新文档