资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
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 = 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 /该值需要用户根据需要的波特率进行计算,推荐使用周立功发布的波特率计算器#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_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 = 0xE8; /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_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
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号