- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主要内容 基于SJA1000的CAN-bus网络 SJA1000的硬件电路 SJA1000的操作方法 常见问题及其解决办法 CAN节点构成 一个完整的CAN节点应该包括以下三个部分:微控制器、CAN控制器、CAN收发器。 含有CAN控制器的微处理器,如: P87C591、LPC2119。使用这些微处理器只需加一个CAN收发器。 使用不带有CAN控制器的微处理器,需另外加独立CAN控制器和CAN收发器。 单片机带有CAN控制器时的节点模型 单片机不带CAN控制器时的节点模型 CAN收发器芯片 通用CAN收发器 PCA82C250/251 高速CAN收发器 TJA1040/1050 高速CAN收发器 TJA1041 容错CAN收发器 TJA1054 单线CAN收发器 AU5790 …………. CAN收发器模块 SJA1000简介 SJA1000独立CAN 控制器在完全兼容PCA82C200的基础上,增加了一种新的工作模式PeliCAN。 支持CAN2.0A (BasicCAN模式)、CAN2.0B (PeliCAN模式); 内置接收FIFO缓冲区( 64 字节); 支持单/双验收滤波器; 可编程的错误限制报警; 错误代码捕获,仲裁丢失捕获; 可读/写访问的错误计数器; 支持单次发送功能; 具有只听模式、自检测模式。 SJA1000 的操作模式 BasicCAN模式 与PCA82C00兼容,支持CAN2.0A协议(11位标识符)。 PeliCAN模式 支持CAN2.0B协议(29位标识符),支持标准帧和扩展帧格式报文的接收和发送,只听模式等。 操作模式通过时钟分频寄存器中的CAN模式位来选择,复位默认模式为BasicCAN模式。 注意:两种模式下的寄存器定义不同! SJA1000的访问控制 对SJA1000的控制,是通过访问其内部寄存器来实现的。在PeliCAN模式下,SJA1000的内部寄存器分布于0-127的连续地址空间 ,包括控制段和信息缓冲区。对MCU来说,对SJA1000的内部寄存器的访问就是对外部数据存储器的操作。 SJA1000有两种模式可以供MCU访问其内部寄存器,分别为:工作模式和复位模式。在这两种模式下可以访问的内部寄存器是不同的,具体内容请参考SJA1000数据手册。 SJA1000 PeliCAN函数库 SJA1000 PeliCAN库头文件 SJA1000REG.H SJA1000_PELI.H SJA1000 PeliCAN库文件 SJA1000_PELI.LIB SJA1000 PeliCAN函数库定义了什么 SJA1000的寄存器操作函数 位清零函数(ClrBitMask) 位置 1 函数(SetBitMask) 读SJA1000 寄存器函数(ReadSJAReg) 读SJA1000 寄存器区间函数(ReadSJARegBlock) 写SJA1000 寄存器函数(WriteSJAReg) 写SJA1000 寄存器区间函数(WriteSJARegBlock) SJA1000的功能驱动函数 进入复位模式函数(SJAEntryResetMode) 退出复位模式函数(SJAQuitResetMode) 波特率设置函数(SJASetBaudrateStandard) 发送函数(SENDSJADATA) 接收函数(REVSJADATA) SJA1000 PeliCAN 函数库使用注意事项 用户根据实际情况,设置SJA1000 的基址。 如:unsigned char xdata CAN_BaseAdr _at_ 0x7F00; 调用报文发送函数( SENDSJADATA())时注意: 首先要保证在调用发送函数时,SJA1000 处于工作模式下; 其次, 用户用来存储发送数据的数组要符合帧格式; 发送数据的长度一定要加上报文头部的长度。标准帧的发送长度为DLC+3,扩展帧为DLC+5。如:SENDSJADATA(*p_msg,8);//发送一个总长度为8字节的报文。标准帧与扩展帧的判别有报文头部的帧信息字节决定(可参考CAN 2.0协议)。 清空接收缓冲区之前,请保证已经保存了这些报文。 REVSJADATA(unsigned char *REV_BUFFER,unsigned char len)将接收到的数据存放到用户指定的地址,并释放SJA1000接收缓冲区。 使用SJA1000 PeliCAN 函数库进行CAN 的初始化 SJA1000一般问题解决办法 硬件连接对了没有? 检查终端电阻。电阻值与线材,通讯距离有关,一般在60-80欧。 CANH、CANL连接是否正确? 波特率是否匹配?如果波特率不匹配则无法进行通讯,节点的反
文档评论(0)