CAN总线与RS-485转换电路板的设计

来源:期刊VIP网所属分类:软件开发发布时间:2012-10-19浏览:

  摘要:CAN总线已在变电站自动化系统中得到了广泛应用,而SJA1000作为PHILIPS公司最近推出的独立CAN器件也已得到了广泛关注。本论文的系统采用微控制器+CAN控制器+CAN收发器,微控制器为MCS-51系列,CAN控制器为PHILIPS公司SJA1000CAN控制器,CAN接收器选用82C250。介绍了SJA1000的基本原理和功能,并给出了SJA1000的典型硬件连接原理图及初始化程序和部分通信程序。CAN软件设计主要采用汇编语言,最主要的目的是实现CAN是发送报文与接收报文。并与RS485接口进行比较,最后试验传输率<5KBPS,传输距离用仿真电缆模拟是否可以达到10KM。

  关键词:CAN SJA1000 汇编语言

  Abstract:The principle and function of SJA1000 stand–alone CAN controller are introduced; the hardware connection diagram and the communication program of SJA1000 are given. The Design the system introduced in the book adopt the tiny controller + the controller of CAN+ the transceiver of CAN, the tiny controller is serieses MCS-51s, The CAN controller is SJA1000 of PHILIPS company .The CAN software design is main to adopt to edit collected materials the language, the purpose of the most is to realizes the CAN is to send out the report text with receive the report text.

  Key words:CAN; SJA1000;assemble; language

  中图分类号:TM13 文献标识码: A 文章编号:

  CAN(ControllerAreaNetwork)总线,又称控制器局域网,是Bosch公司在现代汽车技术中领先推出的一种多主机局部网,由于其卓越的性能,极高的可靠性,独特灵活的设计和低廉的价格,现已广泛应用于工业现场。控制智能大厦,小区安防,交通工具,医疗仪器,环境监控等众多领域CAN,已被公认为几种最有前途的现场总线之一。

  RS485仅仅是一种半双工通信的电气协议,其通信介质为双绞线,传输的信号在双绞线上呈现一对正负相反的电平信号用来表示逻辑“1”和逻辑“0”。在RS485的通信网络中,只能让一个节点向网络发送数据。系统中每一个节点的RS485驱动器都有一个发送使能控制端DE,其作用是驱动器发送数据时,控制该发送器有效,使其向网络发送数据;数据发送完后,DE则关闭发送器,使其处于高阻值状态,从而不影响网络中其它节点的数据传送。如果发生故障,出现几个节点同时向网络发送数据,这就等于多个RS485驱动器同时向一对双绞线上输出不同的电平信号,结果使得整个网络呈现短路状态,最终损坏其节点的驱动器,使故障范围进一步扩大。而CAN总线的传输距离远,通信速率高。

  我们的目的就是制作一个可以在原有的RS485接口的系统上实现CAN通信的数字式电路板。使用户不用改变原有的系统结构就可以实现具有相当优势的CAN系统通信,提高效率。

  1.系统介绍

  1.1 CAN总线的应用研究

  期刊论文提示您,现场总线是安装在生产现场装置与控制室内自动控制装置之间的数字式、串行、多点通讯双向传输的数据总线。它的最大优点是可以大幅度节约连接导线、降低安装和维护的费用;具有精度高、能传送多个过程变量,包括仪表的自诊断信息等。在十几种已出台的现场总线中,CAN总线也是一种很有应用前景的现场总线之一。

  1.2 MAX1487芯片内部的结构,管脚功能及其工作原理

  MAX1487采用+5v电源供电,当供电电流约为500ua时,传输率达到2.5MB/S。它适用于半双工通信。通信传输线上最多为±2v-±6v。MAX1487的管脚及内部结构框图如图所示。

  脚1RO:接受器输出;

  脚2RE:接受器使能;

  脚3DE:驱动器使能;

  脚4DI:驱动器输入;

  脚5GND:地;

  脚6A:接收器非反相输入或驱动器非反相输出;

  脚7B:接收器反相输入或驱动器反相输出;

  脚8VCC:电源;

  MAX1487的输入脚DI可与单片机CPU的TXD脚相连,输出脚RO与单片机CPU的RXD脚相连。MAX1487内部的驱动器与接收器三三太的,通过DE和RE进行发送与接收,发送与接受的两种控制信号是相反的。可将两者接相同的控制信号,即“1”电平控制发送,“0”电平控制接收。A,B实现多机联网。MAX1487的应用电路及通讯协议:在多机通信中,一般PC机作为上位机只有RS232标准的通讯接口,要实现RS485标准接口通信,须通过RS232/RS485转换接口电路,完成由EIA到TTL电平的转换。可用专门的带隔离RS232/485转换器来实现。MAX1487的RE与DE连接同一个控制信号,如下实际电路中8031的P3.5,严格保证收发信号在时间上错开通信协议:MC51中串行控制寄存器SCON设有多机通信控制位SM2,在编程前,定义从机的地址编号,分别为00H,02H等等从机系统在初始化程序中将串行口编程为约定的接收方式,且置为SM2,允许串行口中断在主机和某一从机通信之前,先向所有从机发出所选从机的地址,以设置第九位TB8为1表示为地址帧,这时SN2作为地址监听位,所有从机当接收到的第九位RB8位为1则置为中断标志RI,中断后判断主机送来的地址与本从机是否一致,若为本地址,则清SM2为0,准被发送主机送来的数据帧其他从机保持SM2为1状态。接着主机发送数据帧,各串行同时接收该数据帧,而只有已选中的从机才能产生中断并接受该数据,其余从机收到不产生中断响应,将数据丢失掉。这样就实现了多机一对一通信。

  1.3 8031单片机系统结构

  8031系列的基本结构如下:

  l 一个8位算术逻辑单元

  l 32个I/O口

  l 两个16位定时计数器

  l 全双工串行通信。

  l 6个中断源两个中断优先级

  l 128字节内置RAM。

  l 独立的64K字节可寻址数据和代码区。

  每个8031处理周期,包括12个振荡周期,每12个振荡周期,用来完成一项操作,如取指令和计算指令执行时间,可把时钟频率除以12,取倒数,然后指令执行所须的周期数,因此,如果你的系统时钟是11.059MHz,除以12,后就得到了每秒执行的指令个数,为921583条指令,取倒数将得到每条指令所须的时间1.085ms。

  1.4 看门狗

  大多数31系列单片机都有看门狗,当看门狗没有被定时清零时,将引起复位。这可防止程序跑飞。设计者必须清楚看门狗的溢出时间。以决定在合适的时候清看门狗。清看门狗也不能太过频繁,否则会造成资源浪费。X5045中的看门狗对系统提供了保护功能。当系统发生故障而超过设置时间时,电路中的看门狗将通过RESET信号向CPU作出反应。它所具有的电压监控功能还可以保护系统免受低电压的影响,当电源电压降到允许范围以下时,系统将复位,直到电源电压返回到稳定值为止。X5045的存储器与CPU可通过串行通信方式接口,共有4096个位,可以按512×8个字节来放置数据。

  1.5 SJA1000简介

  CAN控制模块的说明

  接口管理逻辑接口管理逻辑负责解释来自CPU的命令,控制CAN寄存器的寻址,向主控制器提供中断信息和状态信息。

  位流处理器(BSP)位流处理器是在发送缓冲器、RXFIFO和CAN总线之间控制数据流的程序装置。它还执行错误检测、仲裁、总线填充和错误处理。

  位时序逻辑(BTL)位时序逻辑监视串口的CAN总线和处理与总线有关的位时序。它在信息开头“弱势-支配”的总线传输时同步CAN总线位流(硬同步),接收信息时再次同步下一次传送(软同步)。BTL提供了可编程的时间段来补偿传播延迟时间、相位转换(如由于振荡漂移)和定义采样点及每一位的采样次数。

  错误管理逻辑(EML)EML负责传送层中调制解调器的错误管理。它接收BSP的出错报告,使BSP和IML进行错误统计。通常情况下,错误计数器计数达到255时,将关闭总线,并自动转入复位状态,并产生错误中断。经过128个周期的总线空闲后,重新开启总线。当错误计数器计数达到96时(警告限制),将产生错误中断。

  2.系统设计

  8031单片机的全双工串行口可编程为4种工作方式,现分述如下:

  方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。

  输出:串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。

  输入:当串行口以方式0接收时,先置位允许接收控制位REN。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。

  输出:当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。

  输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。

  方式2

  方式2:为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。

  输出:发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI。

  输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。且不置位RI。再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。

  工作方式3

  方式3:为波特率可变的11位UART方式。除波特率外,其余与方式2相同。波特率选择如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。

  方式0式0的波特率固定为主振频率的1/12。

  方式2

  方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:

  波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,

  当SMOD=0时,波特率为1/64fosc方式1和方式3定时器T1作为波特率发生器,

  其公式如下:波特率定时器T1溢出率T1溢出率=T1计数率/产生溢出所需的周期数式中T1计数率取决于它工作在定时器状态还是计数器状态。

  当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。

  定时器T1工作于方式0:

  溢出所需周期数=8192-x

  定时器T1工作于方式1:

  溢出所需周期数=65536-x

  定时器T1工作于方式2:溢出所需周期数=256-x

  因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶振就是这个道理。

  3.主程序设计

  CAN控制器SJA1000在复位模式下对各位寄存器的初始化程序。

  程序如下:

  MOV DPTR,#CR;控制寄存器CR的地址送DPTR

  MOV A,#01H

  MOV @DPTR,A;进入复位模式

  MOV DPTR,#IR;中断控制寄存器IR的地址送DPTR

  MOV A,#03H

  MOV @DPTR,A

  MOV DPTR,#ACR;接受代码寄存器ACR的地址送DPTR

  MOV A,#FFH

  MOV @DPTR,A

  MOV DPTR,#AMR;接收屏蔽寄存器AMR的地址送DPTR

  MOV A,#FFH

  MOV @DPTR,A

  MOV DPTR,#BTR0;总线定时寄存器BTR0的地址送DPTR

  MOV A,#FFH

  MOV @DPTR,A

  MOV DPTR,#BTR1;总线定时寄存器BTR1的地址送DPTR

  MOV A,#FFH

  MOV @DPTR,A

  MOV DPTR,#OCR;输出控制寄存器OCR的地址送DPTR

  MOV A,#FFH

  MOV @DPTR,A

  期刊标准论文格式参考文献

  [1] 张昆藏。IBMPC/XT微型计算机接口技术。北京:清华大学出版社,1990,281-286。

  [2]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1995.

  [3]何立民.MCS-51系列单片机应用与系统设计,系统配置与接口技术.北京:北京航空航天大学出版社,1990。

期刊VIP网,您身边的高端学术顾问

文章名称: CAN总线与RS-485转换电路板的设计

文章地址: http://www.qikanvip.com/ruanjiankaifa/4938.html