《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于AT89C52单片机的RS485-CAN智能转换器设计*
基于AT89C52单片机的RS485-CAN智能转换器设计*
来源:微型机与应用2012年第3期
姚发闪,陈志军
(新疆大学 电气工程学院,新疆 乌鲁木齐 830046)
摘要: 基于CAN总线和RS485总线的广泛应用和各自的优缺点,设计了基于AT89C52单片机的RS485-CAN智能转换器。在保留现有RS485系统硬件的基础上添加了一个CAN总线接口,实现了CAN总线与RS485之间的数据传输,具有一定的使用价值。
Abstract:
Key words :

摘  要: 基于CAN总线RS485总线的广泛应用和各自的优缺点,设计了基于AT89C52单片机的RS485-CAN智能转换器。在保留现有RS485系统硬件的基础上添加了一个CAN总线接口,实现了CAN总线与RS485之间的数据传输,具有一定的使用价值。
关键词: RS485总线;CAN总线;AT89C52单片机;串口通信

 现场总线是一种应用于生产现场,在现场设备之间、现场设备与控制器之间实行双向、串行、多节点数字通信的技术。RS485是一种平衡传输方式的串行接口标准,采用半双工异步数据通信方式。RS485的共线电路结构是在一对平衡传输线的两端都配置终端电阻,其收发器和接收器可以挂在平衡传输线的任何位置,实现在数据传输中多个驱动器和接收器共用一个传输线的多点应用。目前,在我国应用的现场总线中,RS485通信总线也是被广泛使用的数据通信总线。随着科技的发展,RS485总线的效率低、系统的实时性差、通信的可靠性低、后期不灵活等缺点逐渐暴露出来。但完全放弃RS485网络系统是不可能的,尤其是在已经具有现场的硬件网络中。而CAN现场总线作为一种由带CAN控制器组成的高性能串行数据通信网络,是国际上应用最广泛的现场总线之一,是一种技术先进、可靠性高、功能完善、成本合理的远程网络通信控制方式。因此,可以考虑一种折中的方法,就是在保留现有RS485系统硬件结构的基础上,添加一个CAN总线接口,以实现CAN总线接口和RS485接口之间的相互转换。
1 系统整体设计方案
 RS485-CAN智能转换器实现了RS485总线网络与CAN总线的网络互连,这种连接方法一般作为过渡性的方案,适合那些新旧系统并存,性能要求不高,新系统与旧系统有相同运行机制的地方。该设计有1个RS485通道和1个CAN通道,可以很方便地嵌入使用RS485接口通信的网络接口、工业现场控制单元、智能网络接口中。原有系统中的RS485网络与CAN网络是相互独立的,现在可以在不改变原有硬件结构的前提下,使用RS485总线设备通过RS485-CAN智能嵌入式网关,经由CAN总线网络与上位机进行通信。
2 硬件设计
 RS485-CAN智能转换器由微控制器模块、基本模块、CAN接口模块、RS485接口模块和储存模块组成。如果选择的微处理器中集成了CAN控制器,则无需外接CAN控制器;否则需要外接CAN控制器。硬件设计框图如图1所示。

2.1 微控制器模块
 本系统采用性价比较高的ATMEL单片机AT89C52,AT89C52是一个低电压、高性能CMOS 8 bit单片机,片内含8 KB的可反复擦写的只读程序存储器Flash和256 B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,内置通用8 bit中央处理器和Flash存储单元。AT89C52单片机电路如图2所示。

 D100为电源指示灯;P0口连接CAN控制器SJA1000的总线;P2.0控制SJA1000片选信号,SJA1000向微控制器发送数据通过INT0外部中断的方式通知,微控制器的RD、WD分别与SJA1000的读写信号相连;TXD、RXD与RS485收发器相连;P1.0~P1.3与储存器AT93C46相连;P2.6经上拉电阻与J100跳线相连。当不接跳线时,P2.6为高电平,表示进行正常的RS485总线数据传输;当连接跳线时,P2.6为低电平,表示串口作为配置参数使用。
2.2 CAN接口模块
2.2.1 CAN总线接口的结构

 一个CAN总线接口由微控制器、CAN控制器和CAN收发器三部分组成,它们分别对应于CAN总线的物理层、数据链路参和应用层。微控制器主要负责上层应用及系统控制,包括CAN协议的应用层协议的实现,协调系统各设备的工作。中间层为CAN控制器,主要负责处理数据帧,完成数据的打包、解包和错误界定,并提供报文缓冲和传输滤波。底层是CAN收发器,主要是接口电平的转换及接口电气特征的处理。
2.2.2 CAN总线控制器和收发器
 CAN控制器选用飞利浦公司生产的SJA1000 CAN总线控制模块。SJA1000是一种独立控制器,用于工业环境中的CAN总线。SJA1000的基本特征有:管脚及电气特性与独立CAN总线控制器PCA82C200兼容;软件与PCA82C200兼容(缺省为基本CAN模式);扩展接收缓冲器(64 B FIFO);支持CAN2.0B协议,同时支持11 bit和29 bit标识符;通信速率为1 Mb/s;增强CAN模式(PeliCAN),支持具有很多特性的CAN2.0协议;采用24 MHz时钟频率;支持多种微处理器接口。
 本设计选择TJA1050作为CAN总线收发器。TJA1050是CAN协议控制器和物理总线之间的接口,是一种标准的高速CAN收发器,可以为总线提供不同的发送性能,也为CAN控制器提供不同的接收性能。TJA1050的主要特征有[3]:完全符合ISO 11898标准;速率最高达1 Mb/s;电磁辐射(EME)极低;电磁抗干扰EMI性极高;不上电的节点不会对总线造成扰动;TXD引脚有防止箝位在显性总线电平的超时功能;静音模式中提供了只听模式和Babbling Idiot保护;保护总线引脚防止汽车环境中的瞬态干扰;输入级和3.3 V以及5 V的器件兼容;输出驱动器受到温度保护。
 CAN总线收发器TJA1050与CAN总线控制器SJA1000连接的电路图如图3所示。

 

 

 SJA1000的AD0~AD7与单片机的数据总线相连,P2.0引脚作为SJA1000的片选使能端,由ALE、WR、RD控制SJA1000数据的接收和发送;SJA1000的11脚MODE接高电平;SJA1000的16引脚是中断信号输出,与单片机的外部中断INT0引脚相连,在中断允许的情况下,当有中断发生时,16引脚出现由高电平到低电平的跳变,从而通知单片机进行相应处理;SJA1000的TX1脚悬空;RX1引脚的电位必须维持在0.5VCC以上,否则,将不能形成CAN总线所要求的电平逻辑;SJA1000的TD1和RD1分别通过高速光耦6N137与SJA1000的TXD和RXD相连,以提高CAN总线节点的抗干扰能力,保证各节点之间在电气上是完全隔离和独立的。
2.3 RS485接口模块和储存模块
 在RS485接口电路中采用MAX485芯片作为总线接收器,它是+5 V低功耗半双工器件。MAX485的驱动器输出是差分输出,完全满足RS485串行协议的要求,兼容工业标准规范。系统对储存模块的要求比较低,掉电不丢失,仅用来储存系统的配置信息,要求的储存空间较小,因此选用ATMEL公司的AT93C46芯片作为存储模块。
3 系统软件设计
 软件设计由主程序模块、初始化程序和中断程序三部分组成。CAN总线通信模块和RS485通信模块的主程序可以分为初始化部分和循环部分。CAN通信模块和RS485通信模块的接收和发送采用的是中断方式。CAN总线和RS485总线的数据接收和发送采用的是中断方式,在中断程序中设置相应的接收中断标志,然后在主程序中用查询的方式根据不同的标志进入到相应的中断程序。CAN控制器接收到数据后输出中断信号到微控制器,引起中断,RS485则利用微控制器的串口中断。初始化部分包括单片机初始化和SJA1000的初始化。AT89C52的初始化主要是对总线片选、串口工作方式、串口波特率、中断等寄存器赋初值。SJA1000初始化主要是对模式寄存器、时钟分频寄存器、验收滤波寄存器、验收屏蔽寄存器、总线定时器以及输出控制器进行设置。在设置前要检查SJA1000是否为复位模式,因为要得到配置信息的寄存器仅在复位模式可写。中断服务程序CAN总线的接收分为查询控制接收和中断控制接收两种,为了更好地处理实时数据和实时响应控制命令,CAN采用中断控制命令,主流程在中断控制的数据接收之前必须使能SJA1000的接收中断和全局中断,接收中断使能表示位于中断使能控制器中。首先读取SJAQ000的中断寄存器,然后判断是接收中断、发送中断、总线错误中断还是数据超载中断。判断出是哪种中断后进入该中断服务程序进行处理。
本文通过RS485-CAN智能转换器实现了RS485总线和CAN总线这两种串行数据总线之间的数据通信,而且可以设置CAN和RS485的波特率,并将参数保存到储存器中,具有一定的通用性。但本文在软件设计方面没有更多地考虑人机交互界面的设计,还需要不断完善。
参考文献
[1] 丁元杰.单片微机原理与应用技术[M].北京:北京航空航天大学出版社,2003.
[2] 广州周立功单片机发展有限公司.CJA1000独立CAN控制器[Z].2003.
[3] 广州周立功单片机发展有限公司.TJA1050CAN高速收发器应用指南[Z].2003.
[4] 刘泽祥.现场总线技术[M].北京:机械工业出版社,2011.

此内容为AET网站原创,未经授权禁止转载。