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

上传人:206****923 文档编号:90600044 上传时间:2019-06-13 格式:DOC 页数:20 大小:94.04KB
返回 下载 相关 举报
CAN总线控制器-SJA1000源程序(c语言)解读_第1页
第1页 / 共20页
CAN总线控制器-SJA1000源程序(c语言)解读_第2页
第2页 / 共20页
CAN总线控制器-SJA1000源程序(c语言)解读_第3页
第3页 / 共20页
CAN总线控制器-SJA1000源程序(c语言)解读_第4页
第4页 / 共20页
CAN总线控制器-SJA1000源程序(c语言)解读_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《CAN总线控制器-SJA1000源程序(c语言)解读》由会员分享,可在线阅读,更多相关《CAN总线控制器-SJA1000源程序(c语言)解读(20页珍藏版)》请在金锄头文库上搜索。

1、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 位和

2、29 位识别码 位速率可达1Mbits/s PeliCAN 模式扩展功能-可读/写访问的错误计数器-可编程的错误报警限制-最近一次错误代码寄存器-对每一个CAN 总线错误的中断-具体控制位控制的仲裁丢失中断-单次发送无重发-只听模式无确认无活动的出错标志-支持热插拔软件位速率检测-验收滤波器扩展4 字节代码4 字节屏蔽-自身信息接收自接收请求 24MHz 时钟频率 对不同微处理器的接口 可编程的CAN 输出驱动器配置 增强的温度适应-40-+125#include #include #include /-沿袭引脚和变量-#define uchar unsigned char /宏定义#defi

3、ne uint unsigned int /宏定义void MCU_init(void);/*P2口的管脚定义*/sbit LED1 = P26;sbit LED2 = P25;sbit SJA_CS = P27; /SJA1000片选管脚,低电平有效/sbit SJA_RST = P12;/*P3口的管脚定义*/sbit SJA_RD = P37;sbit SJA_WR = P36;/-定义寻址的基址-#define base_Adr 0x7F00 /-定义总线定时寄存器的值-#define SJA_BTR0 0x07 /该值需要用户根据需要的波特率进行计算,推荐使用周立功发布的波特率计算器

4、#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

5、 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 ID

6、H8; unsigned char IDL_R_DLC; unsigned char Frame_Data8; receive_BUF,send_BUF;/-/ 函数类别 供调用子函数/ 函数名称 send_BUF_init/ 入口函数 无/ 出口函数 无/ 函数功能 对MCU内公共变量结构send_BUF赋初值/-bit send_BUF_init(void) /调用send_now()函数的时候,所发送的数据是在这里初始化的。请用户根据具体情况自己调整 bit setting_success=0; send_BUF.IDH8 = 0x99; send_BUF.IDL_R_DLC = 0xE

7、8; /IDL_R_DLC。4即为RTR位,数据=0,远程=1; send_BUF.Frame_Data0 = 0x11; send_BUF.Frame_Data1 = 0x22; send_BUF.Frame_Data2 = 0x33; send_BUF.Frame_Data3 = 0x44; send_BUF.Frame_Data4 = 0x55; send_BUF.Frame_Data5 = 0x66; send_BUF.Frame_Data6 = 0x77; send_BUF.Frame_Data7 = 0x88; setting_success = 1; return(setting

8、_success);/-/ 函数类别 延时/ 函数名称 delay/ 入口函数 无/ 出口函数 无/ 函数功能 延时/-void delay(unsigned char time) while(time-);/-/ 函数类别 SJA1000基本操作/ 函数名称 CANREG_write/ 入口函数 SJAREG_ADR,setting/ 出口函数 无/ 函数功能 写SJA1000的寄存器/-void CANREG_write(unsigned char SJAREG_ADR, unsigned char setting) *(SJA_base_Adr+SJAREG_ADR)=setting;/-/ 函数类别 SJA1000基本操作/ 函数名称 CANREG_read/ 入口函数 SJAREG_ADR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号