rs485-can转换器的设计_第1页
rs485-can转换器的设计_第2页
rs485-can转换器的设计_第3页
rs485-can转换器的设计_第4页
rs485-can转换器的设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、RS485-CAN 转换器的设计The design of RS485-CAN converter(长沙理工大学)蒋加伏, 刘清华 JIANG JIAFU LIU QINGHUA 摘要:文章首先介绍了 RS48总线和CA总线的特点,然后结合RS48总线的缺点与CA总线 的优点,给出了 RS485-CA转换器的设计方法,最后描述了具体的硬软件设计。关键词:RS485;CAN转换器;中图分类号: TP27文献标识码: BAbstract: The article first introduced the CAN bus and RS485 bus characteristics,then gave

2、 the design method of RS485-CAN converter combining with the shortcomings of RS485 bus and the advantages of CAN bus, and finally describled the specific hardware and software design Key word :RS485;CAN;converter;1 RS485及CAN总线简介RS485 是一种平衡传输方式的串行接口标准,采用半双工异步数据通信方式。基于在RS485 总线上只能有一个主机的特点, 它往往应用在集中控制枢

3、纽和分散控制单元之间。 同 时 RS485 的总线效率低,系统的实时性差,通信的可靠性低,后期维护成本高,网络工程 调试复杂,传输距离不理想,单总线可挂接的节点少等缺点也局限了其应用。CAN(Controller Area Network, 控制器局域网 )现场总线是一种由带CAN 控制器组成的高性能串行数据局域通信网络, 是国际上应用最广泛的现场总线之一。 它的总线长度最远可达 10千米(速率5Kbps以下),数据传输速率最高可达1Mbps (通讯距离40米以内)。它在多主方式下工作,不分主从。采用非破坏总线仲裁技术, 即使网络负载很重也不会出现网络瘫痪 现象。此外, CAN 的每帧信息都有

4、 CRC 校验和其它检错措施,有很好的检错效果。由于 CAN 总线具备以上优点,它目前已经被广泛应用到汽车电子、电力系统、航空工业和自动 工作等领域中,并形成了国际标准,被公认为几种最有前途的现场总线之一1。一时间完全放弃RS485网络系统是有困难的,尤其是在已经具有现成的硬件网络中。因 此考虑一种折中的方法,就是在保留现有RS485系统硬件结构的基础上,添加一个CAN总线接口,从而实现RS485网络与CAN网络的互联。2 系统硬件设计RS485-CAN转换器硬件设计框图如图1所示,整个硬件系统分为 5个模块:微控制器模块,基本模块,CAN接口模块,RS485模块和储存模块。其中CAN接口模块

5、的CAN控制器的 选用要依据微控制器模块,如果选择的微控制器中集成了CAN控制器,则无需外接 CAN控制器,否则需要外接CAN控制器。2.1微控制器模块,基本模块以及储存模块 这三个模块的设计属于常规设计, 因此省去具体的电路图。 需要说明的是微控制器可以 选择内部集成了 CAN 控制器的单片机,但是本设计基于系统成本,性价比以及微控制器的 应用普遍性的考虑,使用的是 ATMEL 的 AT89C52 单片机;基本模块主要是完成微控制器 的外围电路设计,主要包括电源和晶振以及复位电路等; 储存模块主要是用来储存系统的配 置信息,如CAN波特率,RS485波特率等,要求的储存空间较小,1K的片外E

6、EPROM足KS485接口模块厂一 CAN接口模块一1 CAN HSPI;EEPR8I亭话垂够使用,当然也可以选择自带EEPROM的微处理器。一基本模块.电源晶抿复位1:11SN>N衣戈磊犠拎制器 模块艱4Sft发垂!存储模块-图1 :系统硬件设计框图2.2 CAN接口模块CAN接口模块包括总线控制器和收发器两部分。CAN总线控制器选择的是 SJA1000,它是Philips公司推出的一款完全符合CAN总线协议规定的 CAN控制器,可完成报文控制,数据滤波等CAN控制器功能,SJA1000不仅兼容PCA82C200支持的BasicCAN(CANBUS 2.0A)模式,还支持功能更强的Pe

7、liCAN(CANBUS 2.0B)模式2;收发器选择的是 TJA1050,它是CAN协议控制器和物理总线的接口,是一种标准的高速CAN收发器。L'Jta KIALM0-也 t 引 .k£jjADO.SI伸伽ADaTXIiAIWRXt_EIH7r ( jAlXAiVSSV5SJ KTVMJ丫_D广 YJlMMP/-r«L /.THT#*)厂詐i .! !(!? npr- nW*:IM-T5C&we < AK1IKKDC AMUWDsiTll图2: CAN模块电路图如图2所示SJA1OOO的AD0-AD7与单片机的数据总线相连,P2.0引脚作为SJA1O

8、OO的片选使能端,由ALE,WR,RD控制SJA1000的数据的发送和接收。11脚MODE接高电平,选用 51系列的8位微控制器的In tel二分频模式。16脚是中断信号,接单片机的外部中断引脚。TX1脚悬空,RX1脚的电位必须维持在0.5VCC以上,否则将不能形成CAN总线所要求的电平逻辑。高速光耦6N137提高了总线节点的抗干扰能力,TVS能避免数据受到不必要的外界影响并能保护元器件;另外在总线两端的设备加120欧姆的匹配电阻会使数据通信的抗干扰性以及可靠性大大加强,CANH和CANL与地之间并联两个30PF的小电容,可以滤除总线上的高频干扰并且具有一定的防电磁辐射的能力。这些额外的保护电

9、路同样适合RS485模块的设计。2.3 RS485接口模块RS485接口模块采用 MAX485芯片作为总线收发器,它是 +5V低功耗半双工器件。 MAX485的驱动器输出是差分输出,完全满足 RS485串行协议的要求,兼容工业标准规范, 符合RS485串行协议的电气规范。电路连接如图 3。3系统软件设计本系统的软件设计除了实现单个模块的驱动程序以外,最主要的就是实现两种网络间不同协议的转换。CAN协议参考模型中定义了物理层和数据链路层,RS485协议参考模型中只定义了物理层。因此建立图 4所示的协议模型。CAN的帧格式中,有一个标识符域,CAN控制器的全局滤波器会检测这个标识域,决定是否接收本

10、帧数据。由于 RS485网络上,所有节点都会同时收到数据,因此可以为所有的 RS485从设备设定同一个标识符。一个CAN节点若要发送数据给 RS485设备,只需在该帧把标识符域设定为相应的标识符即可;RS485本质上仅仅是一个物理层标准,其帧格式完全由用户自己定义。最终在 RS485总线中传输还是以帧为单位,其中包含了地址信息。RS485设备会自动根据接收到的帧,自动判断该帧是否发往本节点,然后做出相应处理。因此,在 RS485设备要发送数据时,RS485-CAN总线转换器只需把RS485总线的数据进行帧打包后送 入CAN的数据帧中,然后发送到 CAN网络上;而RS485设备在接收数据时,RS

11、485-CAN总线转换器则把RS485总线的数据帧从接收到的 CAN数据帧中提取出来,发往RS485设备即可。RS435-C.V;协议桓型1F1r物理屋 4Vt-彳CAN数据RS4拓数裾图4: RS485-CAN协议模型3.1CAN接口软件设计CAN总线数据链路层结构可分为逻辑链路控制LLC子层主要完成帧接收滤波,超载通告和恢复管理,而(LLC)子层和媒体访问控制(MAC)子层。 MAC子层结构功能模块包括发送SJA1000芯片中,应用和接收两个部分。对于CAN总线数据链路层的各种协议已经被集成到时只要对SJA1000芯片的控制寄存器进行相应的初始化即可进行通信,而数据的接收和发送 等也是通过

12、读写SJA1000内部寄存器来实现的。这里只给出程序可参考文献2进行编写。SJA1000开始工作之前,首先要判断SJA1000的初始化源程序,其它SJA1000与微处理器的连接是否正确,在确认正确后开始SJA1000的初始化,之后SJA1000进入工作模式,然后才可以进行数据的读写。typedef struct _CAN_PORTSTRUCTFIL filter;/*LIS lise n;TES test;SLE sleep;BAUD baud_rate;/*MODEL workmodel ;UCHARmask1;UCHARmask2;UCHARmask3;UCHARmask4;UCHARco

13、de1;UCHARcode2;UCHARcode3;UCHARcode4;CAN_PORT,*CANPORTPTR;STATUS sja1OOOI nit(CANPORTPTR pDev) /*SJA1000初始化配置文件结构体*/滤波方式*/*只听模式/正常模式*/*自测试模式/正常模式*/*睡眠模式设置*/波特率*/*工作模式*/*SJA1000 初始化 */UCHAR value;canBoardInit() ;/* 进入复位模式 */canBoard_canOutByte(SJA1OOO_MOD,MOD_RM); /* 确定 CAN 控制器工作模式 */ value = ca nBoa

14、rd_ca nln Byte(SJA1000_CDR);elseif(pDev->workmodel = Peli) value|= PeliCANvalue &= PeliCAN;/*设置模式寄存器(只在PeliCAN模式可访问)*/canBoard_canOutByte(SJA1000_CDR,value|0x48);value = canBoard_canInByte(SJA1000_MOD);if(pDev->sleepelseif(pDev->lisen = SNORM) value &=(MOD_SM); /*睡眠模式 */value|= MOD_

15、SM;/*正常模式 */= LNORM) value&= (MOD_LOM); /* 正常模式 */elsevalue|= MOD_LOM;/*只听模式 */if(pDev->test = TNORM) value&= (MOD_STM); /* 正常模式 */ elsevalue|= MOD_STM;/*自检测模式 */if(pDev->filter = SINGLE) value|= MOD_AFM;/*单向验收滤波 */elsevalue &=(MOD_AFM);/*双向验收滤波 */canBoard_canOutByte(SJA1000_MOD,va

16、lue);switch (pDev->baud_rate)case B20:/波特率为 20kpbscanBoard_canOutByte(SJA1000_BTR0,0x07);canBoard_canOutByte(SJA1000_BTR1,0x7F);break;case B80:/波特率为 80kpbscanBoard_canOutByte(SJA1000_BTR0,0x01);canBoard_canOutByte(SJA1000_BTR1,0x7F);break;case B250:/波特率为 250kpbscanBoard_canOutByte(SJA1000_BTR0,0x

17、00); canBoard_canOutByte(SJA1000_BTR1,0x1C);break;case B500:/波特率为 500kpbscanBoard_canOutByte(SJA1000_BTR0,0x00);canBoard_canOutByte(SJA1000_BTR1,0x14);break;default:/默认波特率为 20kpbscanBoard_canOutByte(SJA1000_BTR0,0x07); canBoard_canOutByte(SJA1000_BTR1,0x7F);canBoard_canOutByte(SJA1000_CMR,0);/*设置命令寄

18、存器 */输出控制寄存器设置 */设置发送错误计数器 */ 设置接受错误计数器 */ 设置接收报文计数器 */canBoard_canOutByte(SJA1000_EWLR,0x60); /* 设置错误报警限额寄存器 */ canBoard_canOutByte(SJA1000_IER,0); /* 不使能所有中断 */canBoard_canOutByte(SJA1000_OCR,0xaa); /* canBoard_canOutByte(SJA1000_TXERR,0x0); /* canBoard_canOutByte(SJA1000_RXERR,0x0); /* canBoard_c

19、anOutByte(SJA1000_RMC,0); /* canBoard_canOutByte(SJA1000_ACR0,pDev->code1);canBoard_canOutByte(SJA1000_ACR1,pDev->code2); /* 设置验收代码寄存器 */ canBoard_canOutByte(SJA1000_ACR2,pDev->code3);canBoard_canOutByte(SJA1000_ACR3,pDev->code4); canBoard_canOutByte(SJA1000_AMR0,pDev->mask4);canBoard

20、_canOutByte(SJA1000_AMR1,pDev->mask4); /* 设置验收屏蔽寄存器 */ canBoard_canOutByte(SJA1000_AMR2,pDev->mask4);canBoard_canOutByte(SJA1000_AMR3,pDev->mask4);return OK;3.2 RS485接口软件设计RS485接口软件设计主要包括串口的初始化,串口中断处理等函数的编写,因为RS485接口的软件设计比较简单,所以这部分可参考文献4设计,这里省略。结束语CAN总线是当前应用最为广泛的现场总线之一,而RS485总线是最常用的串行总线,二者之间的转换具有很高的使用价值。设计应注意以下几点: (1)RS485-CAN 转换器的主要任 务是将数据以最快的速度转发, 流量和差错控制应由通信双方的应用层来完成, 因此设计不 能过于复杂。 (2)处理速度是设计时首先考虑的一点,这将影响芯片的选型。 (3)RS485-CAN 的通用性取决于软件方面的设计和协议的使用,硬件上都是兼容的。本文作者创新点:1.在保留了 RS485系统硬件结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论