1、CAN 总线通信适配卡的设计与实现山东大学计算机学院 高胜法 王金富 刘平摘要:CAN 总线是一种可有效支持分布式控制或实时控制的串行通信网络,CAN 协议目前已纳入 ISO 国际标准之中。文中介绍了 CAN 总线及其主要特点,提出了一种 CAN总线通信适配卡的设计方案,同时介绍了该 CAN 总线通信适配卡的软、硬件实现过程。关键词:CAN 总线; 双口 RAM; 内存映射分类号:TP336 文献标识码:B 文章编号:1006-6977(2003)01-0068-031 CAN 总线简介CAN(Controller Area Network)总线属于现场总线的范畴,是一种有效支持分布式控制或实
2、时控制的串行通信网络。CAN 协议目前已纳入 ISO 国际标准(ISO11898) ,它分为物理层、数据链路层和应用层,其中物理层和数据链路层协议已经集成在芯片中,可通过硬件自动完成数据的成帧与发送和接收,从而大大减少软件的工作量,因此,特别适用于工业自动化领域,尤其是那些强调低层监测与控制且要求可靠性高、实时性好的恶劣条件下的工业现场使用。CAN 总线具有以下突出特点: 能够以多主节点方式工作,网络上任一节点均可设成主节点以其它节点主动发送信息。报文传输不含目标地址,它以全网广播为基础,各个接收站可根据报文中反映的数据性质标识符来过滤报文以决定是否接收。同时可通过报文标识符将报文设定为不同的
3、发送优先级,以满足不同的实时要求。非破坏性总线仲裁和错误界定,利用现有的产品,可由控制器自动解决总线冲突和出错界定,并对用户完全透明,同时还能区分暂时和永久故障,并可自动关闭故障节点。通信距离可达 10km(速率 5kbs) ,速度可达 1MBs(距离 40m 以内)。理论上,CAN 总线的网上节点数不受限制,它有 2032 种不同的报文标识符,但具体数量取决于物理层的承受能力,通常 CAN 总线上的节点数可达 110 个。CAN 总线系统一般采用总线式网络拓扑结构,其优点是结构简单,成本低,系统可靠性高。其总体模式如图 1 所示。2 CAN 总线适配卡的功能特点CAN 总线通信适配卡是插在
4、PC 机 ISA 插槽内的智能通讯卡,它可使 PC 机方便地连接到 CAN 总线上,其特点如下:(1)采用高性能的 8 位微处理器 89C52(12MHz),可减轻 PC 主机的通信负担,而且可以运行复杂的用户通信任务。 (2)卡上带有 lkB 的高速双口 RAM 存储器,可直接映射到主机内存空间以实现 CAN 总线与主机 PC 的高速数据交换,并可设置双口 RAM 在 ISA 总线中的基地址。(3)采用 16MHz CAN 控制器 SJAl000 时,其通讯速率可高达 1Mbps。(4)中断申请电路能够保证 PC 机和适配卡上的微处理器实时处理对方的处理要求。(5)适配卡上带有光电隔离,可保
5、护 PC 机避免由于地环流而造成的损坏,并可增强系统在恶劣环境中使用的可靠性。(6)为方便系统调试,可用 LED 指示系统状态和 CAN 的接收和发送状态。3 CAN 总线适配卡的硬件设计CAN 通信适配卡由双口 RAM 电路、微控制器电路、CAN 通信控制电路三部分组成,其结构框图如图 2 所示。3.1 双口 RAM 及其控制电路双口 RAM 是一种性能优越的快速通信器件,它能提供两种完全独立的端口,每个端口都有完整的地址、数据和控制线。对于器件两边的使用者 CPU 而言,它与一般的 RAM无多大区别,只有在两边同时读写同一地址单元时,才会出现竞争现象。在 CAN 通信适配卡中,通常利用双口
6、 RAM IDT7130 来建立双向数据交换通道,以实现 PC 机和 CAN 控制器之间的数据传送。PC 机与扩展存储器的接口有两种方法:一种是把双口 RAM 当成外部设备,使用端口IO 指令进行访问,这种方法一次只能传送一个字节(或字) ,因而传送速度较慢;另一种是内存映像法,即把双口 RAM 地址配置于 PC 机主存储器的高端( 一般为 C0000H-DFFFFH),以使 PC 机像访问主存储器一样访问双口 RAM,同时使所有能够访问主存储器的指令也可以以同样的方式访问双口 RAM。内存映像法可以以字符块为单位进行传送,因而可实现快速访问双口 RAM。正是基于这些优点,在本适配卡设计中采用
7、了内存映射的存储器寻址方式。图 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。这样,通过
8、可编程逻辑器件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 写信号32 微控制器电路微控制器 89C52 是 ATMEL 公司的产品,它与 MCS51 系列 CPU 完全兼容,并带有8k 字节的在系统可编程 FLASH MEMORY(最多可以擦写 100 次),同时带有 256B 的片内RAM,因此一般不需要扩展片外 ROM。当 89C52 与
9、CAN 总线通信时,通常需要较大的数据缓冲区,因此该系统中扩展了 8kB 的片外 RAM 来满足通信的需要。在该适配卡中,有一些数据(如下层 CAN 节点的数目、CAN 通信的初始化参数等)在适配卡断电以后仍需要保存,因此应扩展一片 EEPROM。本卡采用的是一个 8k X 8 位的非易失性存储器 2864,它的快速读时间最大为 250ns,存储的数据可以保存 10 年。如果程序在运行过程中需要对适配卡的通信参数进行重新配置,可通过调用 PC 机对 CAN 适配卡参数配置子程序来完成,并可在设置成功的同时将相应的参数存入 2864,以备下次适配卡启动时调用。考虑到电路调试和系统故障的处理,本卡
10、设计了三种复位方式。其中上电复位方式为在 PC 机通电时,使 CAN 适配器也同时复位;在调试出现问题时可通过手动复位键复位,以便解决调试中出现的问题;第三种是软件复位,该方式可通过调用 PC 机管理程序中的初始化模块并通过软件指令对 CAN 适配卡进行复位。33 CAN 通信控制电路 CAN 通信控制器选用 PHILIPS 公司的 sJAl000,它具有完成高性能通信协议所要求的全部必要特征,支持 CAN 协议约定的 4 种不同帧格式(即数据帧、远程帧、错误帧和超载帧),具有简单总线连接的 SJAl000 可完成物理层和数据链路层的所有功能,并在与 CPU连接时可确保 SJAl000 以存储
11、器映像的外围设备出现。为加强 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 为该适配卡的简化程序流程图。