SJA1000应用培训

上传人:n**** 文档编号:56685666 上传时间:2018-10-15 格式:PPT 页数:21 大小:2.32MB
返回 下载 相关 举报
SJA1000应用培训_第1页
第1页 / 共21页
SJA1000应用培训_第2页
第2页 / 共21页
SJA1000应用培训_第3页
第3页 / 共21页
SJA1000应用培训_第4页
第4页 / 共21页
SJA1000应用培训_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《SJA1000应用培训》由会员分享,可在线阅读,更多相关《SJA1000应用培训(21页珍藏版)》请在金锄头文库上搜索。

1、SJA1000 的应用,江庚炜 2007.12.08,主要内容,基于SJA1000的CAN-bus网络 SJA1000的硬件电路 SJA1000的操作方法 常见问题及其解决办法,CAN节点构成,一个完整的CAN节点应该包括以下三个部分:微控制器、CAN控制器、CAN收发器。含有CAN控制器的微处理器,如: P87C591、LPC2119。使用这些微处理器只需加一个CAN收发器。 使用不带有CAN控制器的微处理器,需另外加独立CAN控制器和CAN收发器。,单片机带有CAN控制器时的节点模型,单片机不带CAN控制器时的节点模型,CAN收发器芯片,通用CAN收发器 PCA82C250/251 高速C

2、AN收发器 TJA1040/1050 高速CAN收发器 TJA1041 容错CAN收发器 TJA1054 单线CAN收发器 AU5790 .,CAN收发器模块,使用隔离收发模块电路比较,简化电路提高可靠性降低成本减少采购风险缩短开发周期,SJA1000的硬件连接,SJA1000简介,SJA1000独立CAN 控制器在完全兼容PCA82C200的基础上,增加了一种新的工作模式PeliCAN。支持CAN2.0A (BasicCAN模式)、CAN2.0B (PeliCAN模式); 内置接收FIFO缓冲区( 64 字节); 支持单/双验收滤波器; 可编程的错误限制报警; 错误代码捕获,仲裁丢失捕获;

3、可读/写访问的错误计数器; 支持单次发送功能; 具有只听模式、自检测模式。,SJA1000 的操作模式,BasicCAN模式与PCA82C00兼容,支持CAN2.0A协议(11位标识符)。PeliCAN模式支持CAN2.0B协议(29位标识符),支持标准帧和扩展帧格式报文的接收和发送,只听模式等。操作模式通过时钟分频寄存器中的CAN模式位来选择,复位默认模式为BasicCAN模式。注意:两种模式下的寄存器定义不同!,SJA1000的访问控制,对SJA1000的控制,是通过访问其内部寄存器来实现的。在PeliCAN模式下,SJA1000的内部寄存器分布于0-127的连续地址空间 ,包括控制段和信

4、息缓冲区。对MCU来说,对SJA1000的内部寄存器的访问就是对外部数据存储器的操作。SJA1000有两种模式可以供MCU访问其内部寄存器,分别为:工作模式和复位模式。在这两种模式下可以访问的内部寄存器是不同的,具体内容请参考SJA1000数据手册。,SJA1000 PeliCAN模式地址分配示意图,内 部 R A M,SJA1000 PeliCAN函数库,SJA1000 PeliCAN库头文件 SJA1000REG.H SJA1000_PELI.H SJA1000 PeliCAN库文件 SJA1000_PELI.LIB,定义了PeliCAN模式寄存器,库的头文件,记得把我添加到工程,SJA1

5、000 PeliCAN函数库定义了什么,SJA1000的寄存器操作函数 位清零函数(ClrBitMask) 位置 1 函数(SetBitMask) 读SJA1000 寄存器函数(ReadSJAReg) 读SJA1000 寄存器区间函数(ReadSJARegBlock) 写SJA1000 寄存器函数(WriteSJAReg) 写SJA1000 寄存器区间函数(WriteSJARegBlock) SJA1000的功能驱动函数 进入复位模式函数(SJAEntryResetMode) 退出复位模式函数(SJAQuitResetMode) 波特率设置函数(SJASetBaudrateStandard)

6、发送函数(SENDSJADATA) 接收函数(REVSJADATA),SJA1000 PeliCAN 函数库使用注意事项,用户根据实际情况,设置SJA1000 的基址。 如:unsigned char xdata CAN_BaseAdr _at_ 0x7F00; 调用报文发送函数( SENDSJADATA())时注意: 首先要保证在调用发送函数时,SJA1000 处于工作模式下; 其次, 用户用来存储发送数据的数组要符合帧格式; 发送数据的长度一定要加上报文头部的长度。标准帧的发送长度为DLC+3,扩展帧为DLC+5。如:SENDSJADATA(*p_msg,8);/发送一个总长度为8字节的报

7、文。标准帧与扩展帧的判别有报文头部的帧信息字节决定(可参考CAN 2.0协议)。 清空接收缓冲区之前,请保证已经保存了这些报文。 REVSJADATA(unsigned char *REV_BUFFER,unsigned char len)将接收到的数据存放到用户指定的地址,并释放SJA1000接收缓冲区。,使用SJA1000 PeliCAN 函数库进行CAN 的初始化,void CAN_Config_Normal(unsigned char BTR0,unsigned char BTR1,unsigned char *filter) SJA_CS_Point= /使能SJA1000接收中断

8、,CAN报文发送程序示例,#include “sja1000_peli.h” #include “reg51.h“unsigned char Send_iCAN_Filter8=0,0,0,0,0xff,0xff,0xff,0xff; /验收滤波码-接收所有 unsigned char BTR0=0x00; /设置波特率,500k unsigned char BTR1=0x1c; void main() unsigned char msg_temp13=0X88,0,0,0,8,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08; /存储报文 地址CAN_Confi

9、g_Normal(BTR0,BTR1,Send_iCAN_Filter);/正常模式的初始化, 设置为1M波特率通信 while(1) Delay_ms(250); SendMsg(msg_temp,13); /使用扩展帧发送msg_temp地址的数据 ,帧头部,帧数据,验收码,屏蔽码,SJA1000一般问题解决办法,硬件连接对了没有? 检查终端电阻。电阻值与线材,通讯距离有关,一般在60-80欧。 CANH、CANL连接是否正确? 波特率是否匹配?如果波特率不匹配则无法进行通讯,节点的反映为:发送(或者接收)错误计数器加1。当发送错误计数器或接收错误计数器的值超过“错误报警限制”寄存器的预设

10、值时,进入“总线关闭”状态。 检查SJA1000的工作模式。由于在BasicCAN模式下与PeliCAN模式在的寄存器定义不同。而且,BasicCAN模式不支持29位ID的扩展帧。 读写寄存器错误。注意控制器当前的模式。 某些寄存器在工作模式与复位模式的定义不同。如:SJA1000内部CAN地址16-23的寄存器在工作模式下为报文缓冲区,而在复位模式下却被定义为验收屏蔽代码寄存器。 有些寄存器只在工作模式下可写,而某些寄存器却只有在复位模式下可写。如:模式寄存器(MOD)的睡眠模式位(SM)只能在工作模式下才能进行设置;而错误报警限制寄存器(EMLR)在复位模式下为可读可写,在工作模式下为只读

11、的。,在硬件连接都正确的情况下,报文发送不出去。在每次报文发送前,保证状态寄存器(SR)为OXOC,即“最后一次发送已被成功处理”和“发送缓冲器”为释放状态。 对于只能接收一帧或几帧报文的情况,大概有这两种问题。 中断是否设为“边缘触发”,如果为电平触发则反复进入中断,导致死机。 是否及时清空接收缓冲区。如果未及时清空缓冲区则将导致接收缓冲区满而数据溢出。SJA1000接收缓冲区(RXFIFO)共有64个信息字节的空间,存储报文数量由报文长度决定。当进行一次释放缓冲区操作后,导致下一未读报文有效。如果接收缓冲区没有可以信息时,状态寄存器(SR)的“接收缓冲区状态”(RBS)位为0。释放接收缓冲区方法:在工作模式下,置位控制寄存器(CMR)的“释放接收缓冲器”(RBB)。 CAN网络上如果只有单个节点时,采用“正常发送”模式发送报文是不能成功的。因为CAN控制器在发送完一帧报文后会等待一个“响应”,在接收到此“响应”之前,认为此次发送不成功; 上位机向节点发送报文时显示“发送失败”。如果排除是CAN节点的问题的话,有可能是上位机的问题,重新启动上位机软件可以恢复正常。 验收滤波的问题比较复杂,可以让广州研发部支持。,

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

当前位置:首页 > 电子/通信 > 综合/其它

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