作者:汪建平;陶春;周伟
1 CAN总线简介
CAN(Controller Area Network)总线属于现场总线的范畴,是一种有效支持分布式控制或实时控制的串行通信网络。CAN协议目前已纳入ISO国际标准(ISO11898),它分为物理层、数据链路层和应用层,其中物理层和数据链路层协议已经集成在芯片中,可通过硬件自动完成数据的成帧与发送和接收,从而大大减少软件的工作量,因此,特别适用于工业自动化领域,尤其是那些强调低层监测与控制且要求可靠性高、实时性好的恶劣条件下的工业现场使用。
CAN总线具有以下突出特点:
● 能够以多主节点方式工作,网络上任一节点均可设成主节点以其它节点主动发送信息。
●报文传输不含目标地址,它以全网广播为基础,各个接收站可根据报文中反映的数据性质标识符来过滤报文以决定是否接收。同时可通过报文标识符将报文设定为不同的发送优先级,以满足不同的实时要求。
●非破坏性总线仲裁和错误界定,利用现有的产品,可由控制器自动解决总线冲突和出错界定,并对用户完全透明,同时还能区分暂时和永久故障,并可自动关闭故障节点。
●通信距离可达10km(速率5kb/s),速度可达1MB/s(距离40m以内)。
●理论上,CAN总线的网上节点数不受限制,它有2032种不同的报文标识符,但具体数量取决于物理层的承受能力,通常CAN总线上的节点数可达110个。CAN总线系统一般采用总线式网络拓扑结构,其优点是结构简单,成本低,系统可靠性高。其总体模式如图1所示。
2 CAN总线适配卡的功能特点
CAN总线通信适配卡是插在PC机ISA插槽内的智能通讯卡,它可使PC机方便地连接到CAN总线上,其特点如下:
(1)采用高性能的8位微处理器89C52(12MHz),可减轻PC主机的通信负担,而且可以运行复杂的用户通信任务。 (2)卡上带有lkB的高速双口RAM存储器,可直接映射到主机内存空间以实现CAN总线与主机PC的高速数据交换,并可设置双口RAM在ISA总线中的基地址。
(3)采用16MHz CAN控制器SJAl000时,其通讯速率可高达1Mbps。
(4)中断申请电路能够保证PC机和适配卡上的微处理器实时处理对方的处理要求。
(5)适配卡上带有光电隔离,可保护PC机避免由于地环流而造成的损坏,并可增强系统在恶劣环境中使用的可靠性。
(6)为方便系统调试,可用LED指示系统状态和CAN的接收和发送状态。
3 CAN总线适配卡的硬件设计
CAN通信适配卡由双口RAM电路、微控制器电路、CAN通信控制电路三部分组成,其结构框图如图2所示。
3.1 双口RAM及其控制电路
双口RAM是一种性能优越的快速通信器件,它能提供两种完全独立的端口,每个端口都有完整的地址、数据和控制线。对于器件两边的使用者CPU而言,它与一般的RAM无多大区别,只有在两边同时读写同一地址单元时,才会出现竞争现象。在CAN通信适配卡中,通常利用双口RAM IDT7130来建立双向数据交换通道,以实现PC机和CAN控制器之间的数据传送。
PC机与扩展存储器的接口有两种方法:一种是把双口RAM当成外部设备,使用端口I/O指令进行访问,这种方法一次只能传送一个字节(或字),因而传送速度较慢;另一种是内存映像法,即把双口RAM地址配置于PC机主存储器的高端(一般为C0000H-DFFFFH),以使PC机像访问主存储器一样访问双口RAM,同时使所有能够访问主存储器的指令也可以以同样的方式访问双口RAM。内存映像法可以以字符块为单位进行传送,因而可实现快速访问双口RAM。正是基于这些优点,在本适配卡设计中采用了内存映射的存储器寻址方式。
图3为双口RAM的控制电路,其访问原理为:ISA总线共有24条地址线,可寻址16MB存储空间。地址线A12-A19接到比较器74LS688的P0-P7,比较器的Q0-Q5接一个六位的拨码开关,Q6、Q7接高电平。74LS688的输出接可编程逻辑器件GALl6V8。这样,当P0-7=Q0-7时,74LS688的输出为低电平,地址选择有效。另外,通过设置拨码开关,用户可以选择双口RAM在PC机存储器中的初始地址。如置拨码开关为Q0-5=001011,则双口RAM在ISA总线的初始地址为D0000H。这样,通过可编程逻辑器件GALl6V8便可将1SA总线的各种信号进行逻辑组合,以形成三个控制信号,从而实现PC机对双口RAM的访问。这三个信号为:
P19=P1*P2*P3*P6*P7 RAM片选信号
P18=P1*P2*P3*P6*P7*P5 RAM读信号
P17=P1*P2*P3*P6*P7*P4 RAM写信号
3.2微控制器电路
微控制器89C52是ATMEL公司的产品,它与MCS51系列CPU完全兼容,并带有8k字节的在系统可编程FLASH MEMORY(最多可以擦写100次),同时带有256B的片内RAM,因此一般不需要扩展片外ROM。
当89C52与CAN总线通信时,通常需要较大的数据缓冲区,因此该系统中扩展了8kB的片外RAM来满足通信的需要。
在该适配卡中,有一些数据(如下层CAN节点的数目、CAN通信的初始化参数等)在适配卡断电以后仍需要保存,因此应扩展一片EEPROM。本卡采用的是一个8k X 8位的非易失性存储器2864,它的快速读时间最大为250ns,存储的数据可以保存10年。如果程序在运行过程中需要对适配卡的通信参数进行重新配置,可通过调用PC机对CAN适配卡参数配置子程序来完成,并可在设置成功的同时将相应的参数存入2864,以备下次适配卡启动时调用。
考虑到电路调试和系统故障的处理,本卡设计了三种复位方式。其中上电复位方式为在PC机通电时,使CAN适配器也同时复位;在调试出现问题时可通过手动复位键复位,以便解决调试中出现的问题;第三种是软件复位,该方式可通过调用PC机管理程序中的初始化模块并通过软件指令对CAN适配卡进行复位。
3.3 CAN通信控制电路
CAN通信控制器选用PHILIPS公司的sJAl000,它具有完成高性能通信协议所要求的全部必要特征,支持CAN协议约定的4种不同帧格式(即数据帧、远程帧、错误帧和超载帧),具有简单总线连接的SJAl000可完成物理层和数据链路层的所有功能,并在与CPU连接时可确保SJAl000以存储器映像的外围设备出现。为加强CAN总线的差动发送和接收能力,该电路采用了CAN总线收发接口电路82C250。82C250的引脚8允许选择高速、斜率控制和待机三种不同的工作方式,并可通过设置拨码开关切换不同的工作方式。在SJAl000与82C250之间接入光电耦合器可增强系统的抗干扰能力,光耦可采用高速光耦6N137,光耦两侧应采用5V的DC-DC隔离电源。图4所示是一种CAN通信接口电路。
4 适配卡的软件设计
适配卡主要承担的是计算机和CAN节点之间的数据转发任务,因而其软件设计也包括两部分:其一是PC机端的应用程序,用于负责完成PC机和双口RAM的通信。实际上,运行时需要开发虚拟设备驱动程序(VxD)来完成对双口RAM的读写、对双口RAM中断的处理以及和应用程序的通信。其二是卡上单片机端的程序设计,该程序采用FranklinC51编写,可完成单片机与双口RAM以及与CAN控制器之间的通信。图5为该适配卡的简化程序流程图。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !