CAN总线PC适配卡设计
扫描二维码
随时随地手机看文章
引 言
分布式工业测控系统需要有现场总线来连接各现场设备及处理控制单元。CAN总线就是一种具有较高性能价格比、能满足分布式控制要求的现场总线,具有广泛的应用前景。它实际上是一种简化型网络结构,在构造单片处理器网络中极为有用。为了使上位机也能和CAN总线相连,使微机成为系统的上位机,增强控制系统的功能,从而进一步延伸CAN总线连通范围,就需要提供一个微机和CAN总线的接口。本文介绍作者设计制作的一种CAN总线PC I适配器。
接口的硬件设计
PCI接口的实现
目前市面上有些CAN总线的适配器,但大多都是基于PC/104或者ISA总线,传输速度较慢,效率低下。作者在设计中使用高效的PCI总线,实现了数据的高速传输。与ISA总线相比较,PCI总线具有如下特点: ①传输速度高。PCI总线宽度为32位(可扩展为64 位)。时钟频率为0~33MHz。并且支持突发传送,传输速度可以达到132Mb/s。相比较, ISA总线宽度为8/16位,时钟频率为132Mb/s。相比较, ISA总线为8位/16位,时钟频率为8MHz,不支持突发传送,传输速率仅为8Mb/s;②即插即用。PC I实现了真正的即插即用。系统可以实现对PCI设备的自动配置;③生命周期长。PCI总线与处理器无关(通过桥或直接集成) ,可支持多种系列处理器,包括将来会出现的新一代处理器。
由于PCI总线规范十分复杂,其接口设计难度较大,但目前有许多厂商提供了专用的PCI接口芯片。这些接口芯片大多对PCI总线规范2.1、2.2版完全兼容,从而大大减轻了PC I板卡设计的工作量。PCI设备可以分为主模式和从模式。主模式可以执行DMA操作,而从模式只可以执行读写操作。根据PCI提供的传输数据带宽(最大132Mb/s) 和CAN总线(最大1Mbps)的要求,加上经济和开发难度与周期上的考虑(主模式桥芯片较昂贵,开发难度较大) ,又因不需要DMA功能,采用从模式桥芯片足以满足传输数据的需要。此外,选择芯片不仅考虑性能和经济上的要求,而且还需要考虑硬件开发和驱动程序开发的难易。如不提供足够的芯片说明和应用样例及开发工具,将大大增加开发难度和延长开发周期。这里我们采用PLX公司的PCI总线目标接口芯片PCI9052作为CAN总线适配器的PCI总线接口芯片,负责与计算机之间的数据通信。9052是PLX公司开发的低价格PC I总线从模式接口芯片,低功耗,符合PCI2.1规范,提供的局部总线可通过编程设置为8/16/32位的(非)复用总线。
CAN总线接口的实现
CAN总线之所以在国内乃至全球范围内一直保持高速发展,完全取决于其卓越的性能。CAN总线主要应用在汽车领域,随着集成工艺的发展和成本的降低,被越来越多的控制领域内的软硬件工程师所接受,广泛的应用于各行各业的控制领域网中。其主要性能指标如下: ①多站仲裁结构(分地址优先级,非破坏方式仲裁) ;②支持主从广播方式;③不加任何扩展最多110个节点;④最高通信速率1Mbps,最远通信距离5km;⑤通常CAN控制器内部设有接收和发送缓冲;⑥通信以帧为单位,最多8个字节的数据;⑦硬件自动进行16 位CRC校验;⑧具有极强的总线和通信错误的管理能力。
由于PCI9052可以启动局部总线的读写, CAN卡不再需要微控制器,采用CAN通信控制器即可,本卡采用SJA1000。SJA1000支持基本AN(BisicCAN)和增强CAN(PeliCAN)两种工作模式,支持具有新功能的CAN2.0B协议规范。具有FIFO、支持热插拔等功能,不但可以实现CAN总线接口功能,而且芯片可以根据晶振的频率,输出可编程的信号CLKOUT,该信号正好可作为PCI9052局部总线的总线频率,节省了器件,方便了设计。CAN总线的总线频率可为12MHz、6MHz或24MHz, PCI9052自动实现局部总线与PCI总线的访问同步。CAN总线收发器采用82C250。该芯片是CAN总线控制器和物理总线的接口,可以提供对CAN总线的差动发送和接收能力,具有抗瞬间干扰、保护总线的能力,可以通过调整CAN总线上通讯脉冲的边沿斜率来降低射频干扰。其速度可以达到1Mbps,最多节点数可以达到110个。
地址译码和逻辑控制是由EPM7064S完成的。EPM7064S是ALTERA 出品的MAX7000系列的一种。它主要实现两路独立的CAN总线通道的地址译码、实现控制信号的驱动和电平转换。通过EPM7064S可以提高系统的可靠性,缩小板卡的尺寸,方便以后板卡功能的扩展。为了在每个CAN总线通道出现故障时能够重新初始化,在接口卡中使用了两片复位芯片MAX811。由EPM7064S产生控制信号, 当CAN总线通道出现异常时, 控制MAX811复位SJA1000控制器。其总线接口原理图如图1所示。
PCI为每一个PCI设备提供了一个配置空间来实现设备的即插即用(PnP)。在PC机上电自检时,配置软件扫描PCI总线,检测所有的PCI设备,读取配置信息,并为每一个PC I设备分配系统资源,实现PCI设备的即插即用。每一个PCI功能设备都有一个64个双字的配置空间,以特定的格式存储设备支持的功能。PCI协议定义了开头的16个双字的格式和用途,称为设备的配置头区域。其它48个双字是设备特定的。CAN卡的硬件资源为映射SJA1000内部寄存器的内存映射空间和一个中断源。
PCI9052提供了5个局部地址空间,可以选用其中的一个作为SJA1000的地址空间,分配32个8位地址空间。同时设置相应的初始化, PCI配置寄存器中的寄存器PCIBAR2设置为0XFFFFFFE0,向系统请求分配内存的数量为32,类型为不可预读,其它寄存器的值可设置为0。设置局部地址空间的范围为0X00000000~0X00000020。对中断的配置是把PCI中断请求线分配到系统的某一ISA 中断请求(IRQ)线上。在本控制卡中利用一块串行EEPROM(93C46B)存放控制卡的PCI配置信息。上电后访问93C46B,实现本控制卡的自动配置。
图1 总线接口原理图
接口的软件设计
软件的设计包括PCI驱动程序的设计和COM组件的设计。由于PC I设备的中断、I/O端口、映射内存等资源都是动态分配的,必须编写驱动程序管理硬件,才能供用户编程使用。CAN卡驱动程序的开发工具采用WINDRIVER。由于CAN卡上没有微控制器,因此对总线端口的所有操作都是由驱动程序来完成的。这不仅可以由计算机来实现复杂的功能,例如,错误检测、断点续传等,同时节省了硬件,而且有利于卡的升级——只要更换驱动程序即可。驱动程序的功能主要是配置SJA1000的接口、收发CAN总线上的数据、对总线进行实时监测、接收用户程序的收发命令。收发数据和CAN总线错误均采用中断处理,驱动程序可以快速响应,通过事件(Event)内核对象直接通知给用户程序。CAN总线通信适配器的初始化是CAN总线设计的重要环节,也是设计的难点。在其初始化过程中需要设置的参数有时钟、总线配置、标志标识符屏蔽段、扩展标识符屏蔽段、信息块、定时器0、定时器1、信息块的控制段、信息块的工作方式等。CAN总线适配器简化流程图如图2所示。
图 2 CAN总线适配器简化流程图
结 论
本文设计的CAN总线适配器结构简单,可用于分布的现场总线控制系统。在WIN2000下经过长时间的运行测试,运行稳定可靠。它可以适应不同的传输速率和距离,有效保证了工业过程监控的实时性,同时也减轻了上位机的工作负担,满足不同的用户要求。在不同栅偏压和分布参数条件下为芯片ESD保护的SNTSCR的I-V特性在CMOS工艺中已经详细讲述过。SNTSCR可以在小区域内保持高的ESD电平对于现代高集成科学很有吸引力。不采用厚栅氧化层,一般小于0.25μmCMOS工艺中, SNTSCR在有效保护混合电压接口电路免于ESD破坏时充分兼容。