CAN总线年代初发展起来的一种新型现场总线技术,它的总线Kbps以下),数据传输速率最高可达1Mbps(通讯距离40米以内)。它在多主方式下工作,不分主从;节点数的数目主要取决于总线个。采用非总线仲裁技术,即使网络负载很重也不会出现网络瘫痪现象。此外,CAN的每帧信息都有CRC校验和其它检错措施,有很好的检错效果[1]。
由于CAN总线具备以上优点,它目前已经被广泛应用到汽车电子、电力系统、航空工业和自动工作等领域中,并形成了国际标准,被为几种最有前途的现场总线]。
然而,由于RS485和CAN总线的电压不兼容,帧格式也不相同,因此,大量现有的RS485总线设备若要在CAN总线上使用,就必须使用RS485-CAN总线系统硬件原理框图
当要向RS485设备写数据时,就将要写的数据发送到CAN总线上。通过CAN总线收发器的电平转换之后,CAN控制器将收到一帧CAN数据,当确认这帧数据是发往本节点时,微控制器就将数据发送到UART控制器上,通过RS485总线设备发送数据时,数据将通过RS485和UART控制器传送到微处理器上。微处理器就将这个数据通过CAN控制器和CAN总线收发器发送到CAN总线上,让其它节点接收。
本文介绍的RS485-CAN总线转换器选用飞利浦公司的LPC2119作为系统的微控制器。LPC2119是一款集成有CAN和UART控制器的ARM7核的工业级单片机。具有低功耗和稳定可靠的特点[3]。由于LPC2119本身集成了CAN和UART控制器,因此只需再增加一块CAN总线总线收发芯片,以及一些外围器件即可完成系统的电搭建。
CAN总线,该芯片是飞利浦公司生产的、用来替代82C250的高速CAN总线的主要特性外,由于TJA1050采用了先进的SOI(silicon on insulator)技术,因此抗电磁干扰性能得到大幅提高。[4]
RS485总线收发器选用了Sipex公司的SP485E,该芯片是一半双工收发器,具有增强型ESD性能,可承受15kV的人体放电模式和接触放电模式。系统电图如图2所示:
图中,TD1和RD1分别为LPC2119内建CAN控制器的发送和接收引脚,TXD0和RXD0分别为LPC2119内建UART控制器的发送和接收引脚。TJA1050的S引脚是静音模式选择引脚。S引脚高电平时,TJA1050进入静音模式,发送器完全禁能,执行只听功能。SP485E的/RE引脚和DE引脚分别是接收使能和发送使能,一个是低电平起效,一个是高电平起效。由于SP485E是一半双工的收发器,因此可以把/RE引脚和DE接在一起,由微控制器的一个IO来控制SP485E是处于接收状态还是发送状态。
系统的软件设计主要包括三大部分:系统初始化程序、RS485设备数据发送中断程序,RS485设备数据接收中断程序。
系统的初始化包括微控制器的初始化、UART控制器初始化和CAN控制器初始化。微控制器初始化的流程可见图3(源代码略)。