1CAN总线及RS–485总线简介
CAN总线(ControllerAreaNetwork)是由德国Bosch公司于20世纪80年代专门为轿车电子操控体系开发的一种串行数据通讯协议,特别合适运用于分布式操控或实时操控范畴。它的运用规模广泛高速网络和低本钱的分布式操控体系。CAN具有以下特色:
(1)无损坏的依据优先权的裁定;
(2)多主站点依据优先级进行总线拜访;
(3)严厉的过错检测和界定;
(4)支撑长途数据恳求;
(5)凭借接纳滤波的多地址帧传送;
(6)通讯介质多样,组合方法灵敏;
(7)全体系数据兼容,体系灵敏;
(8)最远传输距离为10Km(总线传输速率为5kbps),最大传输速率为1Mbps(总线传输距离为40m)。
RS-485规范是美国EIA(电子工业联合会)发布的串行通讯协议。它比RS-232C规范信号传输距离长、速度快、抗干扰性能好,广泛运用于各种工业、楼宇、动力等范畴。在实践运用中,许多工业操控设备(如PLC)都带有RS-485接口。因而,有必要规划CAN总线与RS-485总线的通讯接口电路。
2硬件规划
整个通讯接口电路由单片机AT89C52、CAN操控器SJA1000、CAN收发器82C250、高速光电耦合器6N137和RS-485收发器MAX485组成。如图1所示。单片机AT89C52首要完结SJA1000的初始化,及CAN总线和RS-485总线之间的数据通讯使命。SJA1000是CAN操控器82C200的替换产品。它首要由下列功能模块构成:接口管理逻辑、发送缓冲器、接纳缓冲器、接纳过滤器、位流处理器、位时序逻辑和过错管理逻辑。除了与82C200兼容之外,它增加了许多新功能:PeliCAN作业形式、读/写拜访的过错计数器、规范和扩展结构信息的接纳和发送、可编程的过错约束报警、只听形式和裁定丢掉中止。单片机对SJA1000内部寄存器的操控是以拜访外部寄存器的方法进行的。CAN收发器82C250是CAN总线操控器和物理总线之间的接口,首要担任供给对总线的差分发送才能和对CAN操控器的差分接纳才能。它的引脚8(RS)操控3种不同的作业方法的挑选:待机、斜率操控和高速。
(1)给RS接上高电平,则82C250以低电流待机方法作业;
(2)若RS经过衔接电阻接地,则进进斜率操控方法,该方法可以经过改动电阻的阻值来调理斜率,适用于低速和较短的总线长度的运用场合;
(3)假设RS接地,就挑选了高速作业方法。高速光电耦合器6N137完结了CAN操控器和收发器之间的电气阻隔,增强了体系的稳定性和抗干扰才能。RS-485收发器MAX485是一种差分平衡型的小功率收发器,包含一个驱动器和一个接纳器,运用单+5V电源供电,专门用于TTL协议(即通用于各型CPU的通讯协议)和485规范之间的彼此转化,使微操控器可以使用RS-485串行通讯协议直接进行串行通讯。
整个转化进程可分为:CAN总线转化到RS-485总线和RS-485总线转化到CAN总线。CAN总线转化到RS-485总线的流程如下:微操控器接纳到CAN总线节点发送的报文,依据CAN总线规则的数据格局取出报文的有用信息,然后由微操控器经过MAX485将信息发送到RS-485总线。而RS-485总线转化到CAN总线则是上述流程的逆进程。
3软件规划
软件规划的首要使命是完结数据和操控指令在CAN总线网络和RS-485总线之间的传输。它首要包含RS-485和CAN接口的初始化程序、报文发送和接纳程序、中止服务程序和过错处理程序等。其间,SJA1000的初始化程序是软件规划中的难点,需求完结各种作业参数的设置。其间,操控寄存器用来改动CAN操控器的行为,包含进进复位状况,激活不同类型的中止源,如接纳中止、发送中止和数据溢出中止等。检验代码寄存器和检验屏蔽寄存器一起效果界说了能被节点所接纳报文的条件:所收信息的标识符的相应位与检验代码寄存器检验码的相应位持平。检验屏蔽寄存器的效果是确认检验码的哪些位关于检验滤波是相关的或不相关的。总线时序寄存器0界说了波特率的预设值及同步跳转宽度;总线时序寄存器1则界说了位周期的长度、采样点的方位和采样数目。输出操控寄存器可以设置不同的输出形式(如正常输出形式、双相输出形式和时钟输出形式等)。时钟分频寄存器不只可以操控SJA1000的输出频率及屏蔽CLKOUT引脚,并且还可以对BasicCAN和PeliCAN形式进行挑选。详细的SJA1000初始化程序流程如图2所示。
CAN总线转化到RS-485总线的程序如下:
CAN-RS485_TRANSITION:
MOVDPTR,#SR;状况寄存器
MOVXA,@DPTR;
JNBACC.0,CAN_QUIT;
是否接纳到信息,无数据则退出转化程序
CAN-RS485_HANDLE:
MOVDPTR,#CANR;接纳缓冲区首地址
MOVXA,@DPTR;接纳帧的格局
JNBACC.6,RECEIVE_FRAME
;RTR=1则报文是长途恳求帧
LCALLTRANSMIT_DATA
;发送对方恳求的数据
LJMPCAN_QUIT;退出转化程序
RECEIVE_FRAME:MOVXA,@DPTR;
ANLA,#0FH;
ADDA,#05H
;取得接纳数据的长度
MOVR7,A
MOVR0,#43H
;设定MCU接纳数据缓冲区
DATAFRAME:MOVXA,@DPTR
;接纳数据
MOV@R0,A
LCALLRS485_SEND;将有用信息经过MAX485转发到RS-485总线
INCDPTR
INCR0
DJNZR7,DATAFRAME;断定接纳是否完毕
RECOUT:MOVDPTR,#CMR
MOVA,#04H
;开释接纳缓冲区
MOVX@DPTR,A
CAN_QUIT:RET;退出转化程序
4完毕语
CAN总线是当时运用最为广泛的现场总线之一,而RS-485总线则是常用的串行总线,两者之间的彼此转化具有很高的实用价值。本文规划的CAN-RS485通讯接口电路可以很好地处理这两种串行数据总线之间的彼此转化标题,并已成功运用于某区域的智能交通操控体系。