RS485-CAN转换器的设计

发布者:真情相伴最新更新时间:2016-04-12 来源: eefocus关键字:RS485  CAN  转换器 手机看文章 扫描二维码
随时随地手机看文章
  1 RS485 及CAN 总线简介

  RS485 是一种平衡传输方式的串行接口标准,采用半双工异步数据通信方式。基于在RS485 总线上只能有一个主机的特点,它往往应用在集中控制枢纽和分散控制单元之间。同时RS485 的总线效率低,系统的实时性差,通信的可靠性低,后期维护成本高,网络工程调试复杂,传输距离不理想,单总线可挂接的节点少等缺点也局限了其应用。

  CAN(Controller Area Network,控制器局域网)现场总线是一种由带CAN 控制器组成的高性能串行数据局域通信网络,是国际上应用最广泛的现场总线之一。它的总线长度最远可达10 千米(速率5Kbps 以下),数据传输速率最高可达1Mbps(通讯距离40 米以内)。它在多主方式下工作,不分主从。采用非破坏总线仲裁技术,即使网络负载很重也不会出现网络瘫痪现象。此外,CAN 的每帧信息都有CRC 校验和其它检错措施,有很好的检错效果。由于CAN 总线具备以上优点,它目前已经被广泛应用到汽车电子、电力系统、航空工业和自动工作等领域中,并形成了国际标准,被公认为几种最有前途的现场总线之一。

  一时间完全放弃RS485网络系统是有困难的,尤其是在已经具有现成的硬件网络中。因此考虑一种折中的方法,就是在保留现有RS485系统硬件结构的基础上,添加一个CAN总线接口,从而实现RS485网络与CAN网络的互联。

  2 系统硬件设计

  RS485-CAN转换器硬件设计框图如图1所示,整个硬件系统分为5个模块:微控制器模块,基本模块,CAN接口模块,RS485模块和储存模块。其中CAN接口模块的CAN控制器的选用要依据微控制器模块,如果选择的微控制器中集成了CAN控制器,则无需外接CAN控制器,否则需要外接CAN控制器。

  2.1 微控制器模块,基本模块以及储存模块

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

图1:系统硬件设计框图

  2.2 CAN 接口模块

  CAN 接口模块包括总线控制器和收发器两部分。CAN 总线控制器选择的是SJA1000,它是Philips 公司推出的一款完全符合CAN 总线协议规定的CAN 控制器,可完成报文控制,数据滤波等CAN 控制器功能,SJA1000 不仅兼容PCA82C200 支持的BasicCAN(CANBUS2.0A)模式,还支持功能更强的PeliCAN(CANBUS 2.0B)模式;收发器选择的是TJA1050,它是CAN 协议控制器和物理总线的接口,是一种标准的高速CAN 收发器。

图2:CAN 模块电路图

  如图2所示SJA1000的AD0-AD7与单片机的数据总线相连,P2.0引脚作为SJA1000的片选使能端,由ALE,WR,RD控制SJA1000的数据的发送和接收。11脚MODE接高电平,选用51系列的8位微控制器的Intel二分频模式。16脚是中断信号,接单片机的外部中断引脚。TX1脚悬空,RX1脚的电位必须维持在0.5VCC以上,否则将不能形成CAN总线所要求的电平逻辑。

  高速光耦6N137提高了总线节点的抗干扰能力,TVS能避免数据受到不必要的外界影响并能保护元器件;另外在总线两端的设备加120欧姆的匹配电阻会使数据通信的抗干扰性以及可靠性大大加强,CANH和CANL与地之间并联两个30PF的小电容,可以滤除总线上的高频干扰并且具有一定的防电磁辐射的能力。这些额外的保护电路同样适合RS485模块的设计。

  2.3 RS485 接口模块

  RS485 接口模块采用MAX485 芯片作为总线收发器,它是+5V 低功耗半双工器件。MAX485 的驱动器输出是差分输出,完全满足RS485 串行协议的要求,兼容工业标准规范,符合RS485 串行协议的电气规范。电路连接如图3。

图 3:RS485 模块电路图

  3 系统软件设计

  本系统的软件设计除了实现单个模块的驱动程序以外,最主要的就是实现两种网络间不同协议的转换。CAN协议参考模型中定义了物理层和数据链路层,RS485协议参考模型中只定义了物理层。因此建立图4所示的协议模型。

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

图4:RS485-CAN 协议模型

  3.1CAN 接口软件设计

  CAN总线数据链路层结构可分为逻辑链路控制(LLC)子层和媒体访问控制(MAC)子层。LLC子层主要完成帧接收滤波,超载通告和恢复管理,而MAC子层结构功能模块包括发送和接收两个部分。对于CAN总线数据链路层的各种协议已经被集成到SJA1000芯片中,应用时只要对SJA1000芯片的控制寄存器进行相应的初始化即可进行通信,而数据的接收和发送等也是通过读写SJA1000内部寄存器来实现的。这里只给出SJA1000的初始化源程序,其它程序可参考文献[2]进行编写。

  SJA1000开始工作之前,首先要判断SJA1000与微处理器的连接是否正确,在确认正确后开始SJA1000的初始化,之后SJA1000进入工作模式,然后才可以进行数据的读写。

  typedef struct _CAN_PORTSTRUCT /*SJA1000初始化配置文件结构体*/

  {

  FIL filter; /*滤波方式*/

  LIS lisen; /*只听模式/正常模式*/

  TES test; /*自测试模式/正常模式*/

  SLE sleep; /*睡眠模式设置*/

  BAUD baud_rate; /*波特率*/

  MODEL workmodel ; /*工作模式*/

  UCHAR mask1;

  UCHAR mask2;

  UCHAR mask3;

  UCHAR mask4;

  UCHAR code1;

  UCHAR code2;

  UCHAR code3;

  UCHAR code4;

  }CAN_PORT,*CANPORTPTR;

  STATUS sja1000Init(CANPORTPTR pDev) /*SJA1000初始化*/

  {

  UCHAR value;

  canBoardInit(); /*进入复位模式*/

  canBoard_canOutByte(SJA1000_MOD,MOD_RM); /*确定CAN控制器工作模式*/

  value = canBoard_canInByte(SJA1000_CDR);

  if(pDev->workmodel == Peli) value|= PeliCAN ;

  else value &= ~PeliCAN;

  /*设置模式寄存器(只在PeliCAN模式可访问)*/

  canBoard_canOutByte(SJA1000_CDR,value|0x48);

  value = canBoard_canInByte(SJA1000_MOD);

  if(pDev->sleep == SNORM) value &=~(MOD_SM); /*睡眠模式*/

  else value|= MOD_SM; /*正常模式*/

  if(pDev->lisen == LNORM) value&= ~(MOD_LOM); /*正常模式*/

  else value|= MOD_LOM; /*只听模式*/

  if(pDev->test == TNORM) value&= ~(MOD_STM); /*正常模式*/

  else value|= MOD_STM; /*自检测模式*/

  if(pDev->filter == SINGLE) value|= MOD_AFM; /*单向验收滤波*/

  else value &=(~MOD_AFM); /*双向验收滤波*/

  canBoard_canOutByte(SJA1000_MOD,value);

  switch (pDev->baud_rate)

  {

  case B20: //波特率为20kpbs

  canBoard_canOutByte(SJA1000_BTR0,0x07);

  canBoard_canOutByte(SJA1000_BTR1,0x7F);

  break;

  case B80: //波特率为80kpbs

  canBoard_canOutByte(SJA1000_BTR0,0x01);

  canBoard_canOutByte(SJA1000_BTR1,0x7F);

  break;

  case B250: //波特率为250kpbs

  canBoard_canOutByte(SJA1000_BTR0,0x00);

  canBoard_canOutByte(SJA1000_BTR1,0x1C);

  break;

  case B500: //波特率为500kpbs

  canBoard_canOutByte(SJA1000_BTR0,0x00);

  canBoard_canOutByte(SJA1000_BTR1,0x14);

  break;

  default: //默认波特率为20kpbs

  canBoard_canOutByte(SJA1000_BTR0,0x07);

  canBoard_canOutByte(SJA1000_BTR1,0x7F);

  }

  canBoard_canOutByte(SJA1000_CMR,0); /*设置命令寄存器*/

  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_canOutByte(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_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的通用性取决于软件方面的设计和协议的使用,硬件上都是兼容的。

关键字:RS485  CAN  转换器 引用地址:RS485-CAN转换器的设计

上一篇:单片机IO口扩展技术
下一篇:基于CAN总线的环境测控系统设计

推荐阅读最新更新时间:2024-03-16 14:50

基于CAN_GSM车辆监控系统设计
0 引言 近年来,随着我国经济的高速发展及汽乍保有量和驾驶员总数的快速增长,道路交通事故数一直居高不下,道路交通状况日趋复杂和恶化。群死群伤特大恶性道路交通事故时有发生,给人们的牛命安全和家庭幸福造成了极大的影响。因此,加强车辆管理就显得尤为重要。而交通安全主要由两方面来保证,一是车辆具有良好的车况,另一方面是驾驶员规范的操作。因此如何监控管理车辆和规范驾驶员操作是当前迫切需要解决的问题。 汽车行驶记录仪,又称“汽车黑匣子”,是对车辆行驶速度、时间、里程以及有关车辆行驶的其他状态信息进行记录、存储并可通过接口实现数据输出的数字式 电子 记录装置。然而行驶记录仪不能实时地向监控中心传回车辆的运行情况,属于事后监督,因此在预防交通安全
[单片机]
基于<font color='red'>CAN</font>_GSM车辆监控系统设计
增强型并行口EPP协议及其在CAN监控节点中的应用
        摘 要: 针对微机并行口在CAN监控节点中的实际应用,详细介绍了微机并行口EPP协议和CAN监控节点的设计。     关键词: 并行口EPP协议 CAN总线 CAN总线监控节点SJA1000CAN控制芯片82C250CAN控制器接口芯片     1 增强型并行口EPP协议     利用微机的标准串并口进行通信、控制和数据采集等是微机应用者所关心的课题。在过去,通常采用标准并行口(SPP)或RS232来进行通信、控制和数据采集,其速度和灵活性受到了很大的限制。这是因为RS232通讯速率较低;而标准并行口(SPP)进行数据采集时,由于数据线是单向的,因而不得不用状态线来完成数据的输入,状态线可用
[应用]
基于C-MOS转换器的石英晶体振荡电路
电路的功能 近来出现了把TTL器件换成C-MOS器件的趋势,而且74HC系列产品也得到了进一步的充实。用2级TTL构成的时钟振荡电路已可用C-MOS IC构成的振荡电路替代,因为TTL IC如果置偏电阻等元件参数选择不当,容易停振或产生异常,而本电路却可简便构成,振荡精确。 电路工作原理 为了使C-MOS转换工作在线线性状态,把自置偏电阻R1接在输入、输出端之间,使输入端固定在门限电压。如果把高速C-MOS直接作为振荡回路,就容易产生异常振荡,所以数K的电阻与石英振子串联,由电容器C2形成低通滤波器。 用接在C-MOS输入端的电容对振荡频率进行调整,如果要进行准确的调整,可用微调电容VC1进行微调。
[电源管理]
基于C-MOS<font color='red'>转换器</font>的石英晶体振荡电路
浅析影响DC-DC转换器效率的主要因素
直流稳压电源制造专家,特牛电源-电源解决方案领导者,专业定制各种大功率直流电源、直流稳压电源、开关电源、高压电源、特种变频电源,广泛应用于汽车、新能源、污水处理、电子元件、特种电镀、高端研究等相关领域。20年研发经验,军工品质,值得信赖.ISO、CE、军工认证、国家级高新技术企业、几十项专利,多项发明专利,世界500强企业指定品牌,中国直流电源市场的主要供应商之一。   本文详细介绍了开关电源(SMPS)中各个元器件损耗的计算和预测技术,并讨论了提高开关调节器效率的相关技术和特点,以选择最合适的芯片来达到高效指标。本文介绍了影响开关电源效率的基本因素,可以以此作为新设计的准则。我们将从一般性介绍开始,然后针对特定的开关元件的损耗进
[电源管理]
浅析影响DC-DC<font color='red'>转换器</font>效率的主要因素
《初学者C51自学笔记》之DAC0832转换器
T型电阻网络D/A转换器 : 2R与2R并联,所以为1R再串联1R总是2R,所以所有总电阻为1R;把I7下的开关与1闭合,则I7=1/2 I,其余同理; #include reg52.h #define uchar unsigned char #define uint unsigned int sbit cs=P3^1; sbit wr=P3^4; //延时函数,在12MHz的晶振频率下 //大约50us的延时 void delay_50us(uint t) { uchar j; for(;t 0;t--) for(j=19;j 0;j--); } void main() { uchar a
[单片机]
《初学者C51自学笔记》之DAC0832<font color='red'>转换器</font>
dsPIC3F3013的CAN总线数据采集系统
在工业控制中,为了保证系统的可靠运行,需要检测周围的环境变量(如温度、气压、湿度等)。通常的做法是将分布在各处的传感器采集到的信号通过各自的线路连接到监控中心,这种方式在有效地完成检测任务的同时也造成了线路资源的极大浪费。因此,提出了简化线路布局的要求。CAN(控制器局域网)是串行通信协议,能有效支持高安全等级的分布实时控制,同时在理论上,CAN总线网络内的节点近乎没有限制。基于此,本设计将一种基于数字信号控制器的CAN总线数据采集系统作为一个CAN节点,每一个需要监控的区域放置一个CAN节点,各个节点通过CAN总线与监控中心实施通信。系统总体框图如图1所示。      1 硬件构成   该数据采集系统由两部分构成
[嵌入式]
dsPIC3F3013的<font color='red'>CAN</font>总线数据采集系统
采用RS485中继器有效解决RS485总线问题?
485总线中如果485传输线达到一定的距离,或者485总线中的485设备的增多,会使得485信号不断的衰减,最后可能导致485总线不稳定甚至不能使用,而且处于复杂的外部环境,从而容易受到外部环境的电磁感应等外部干扰。RS485中继器可以对已有的485信号进行增强和放大,增加RS-422/RS-485总线网络中485设备的数目。 中继器中的高效的防雷管可以有效地抑制闪电(Lightning)和ESD,并且提供每线600W的雷击浪涌保护功率。可以吸收外部环境的电磁感应等外部干扰。从而保护485总线的稳定性。 在现场施工当中,由于485总线的距离比较远,在其中形成了电位差,从而产生了共模干扰,导致稳定性降低。RS485中
[嵌入式]
基于CAN总线和双传感器仿人机器人运动控制系统研究
一。引言 机器人研究是自动化领域最复杂。最具挑战性的课题,它集机械。电子。计算机。材料。传感器。控制技术等多门学科于一体,是多学科高技术成果的集中体现。而仿人步行机器人技术的研究更是处于机器人课题研究的前沿,它在一定程度上代表了一个国家的高科技发展水平。运动控制系统是机器人控制技术的核心,也是机器人研究领域的关键技术之一,在机器人控制中具有举足轻重的地位,因此,各研究机构都把对机器人运动控制系统的研究作为首要任务。 动作协调。具有一定智能。能实现无线实时行走已经成为当今机器人发展的主题。随着以电子计算机和数字电子技术为代表的现代高技术的不断发展,特别是以DSP为代表的高速数字信号处理器和大规模可编程逻辑器件(以CPLD和FPG
[工业控制]
基于<font color='red'>CAN</font>总线和双传感器仿人机器人运动控制系统研究
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved