摘要:本文介绍了一种采用PCI专用接口芯片PCI9052作为PCI总线与运动控制芯片MCX314as的接口桥,实现4轴运动控制卡的硬件设计方法。首先给出了运动控制卡的总体结构,PCI总线接口规范、局部总线接口电路、MCX314as的信号接口电路。然后,给出了PCI9052板卡ISA模式下双片选的配置方法。最后,给出了用DriverStudio开发WDM驱动程序的方法。
关键词:运动控制卡; PCI9052; PCI总线; MCX314as; WDM
1.引言
本项目是用于华南理工与广东风华集团合作的动臂式贴片机(也称拱架型贴片机)的拾取/贴装头的四轴控制,X,Y轴为水平面方向运动,Z轴为拾取/贴装头拾取、贴装芯片方向运动,U轴为调整芯片角度方向旋转运动[7]。
根据项目要求,采用MCX314as为运动控制核心,上位机只需将运动参数写入MCX314as的寄存器,各种复杂的运动控制,插补计算均由 MCX314as完成,极大地提高了运算和控制速度,通过PCI9052为PCI桥接口与计算机通信,完成了4轴伺服/ 步进电机控制,实现位置,速度,加速度控制和直线、圆弧插补的功能。
2.运动控制卡的硬件结构
运动控制卡的硬件结构主要是由PCI接口芯片PCI9052、运动控制芯片MCX314as以及相应的光耦隔离、差动传输等电路组成,如图1。其中,DB 代表数据总线,AB 代表地址总线,CB代表控制总线,轴输出为四个轴的输出脉冲,I/O为输入输出控制信号等。
2.1 PCI 总线接口
PCI局部总线是一种独立于处理器的高性能、低成本、开放型总线,它的这些优点,使其得到迅速普及和发展,并成为事实上的微型机的总线标准,而且在嵌入式计算机和工业控制计算机方面得到广泛的应用。它可分为32位数据/地址复用总线和64位数据/地址复用总线两种,总线的速度分为最高达33MHz和 66MHz两种。数据传送速度最高可达528MB/s [2]。我们采用的是32位总线,33MHz的速度。
目前实现PCI接口的方案可分为使用CPLD和使用专用芯片两种。使用CPLD实现PCI接口比较灵活,但实现起来复杂。采用专用芯片可以降低设计难度,缩短开发时间。因此,我们采用PLX公司的PCI9052专用芯片来实现PCI总线接口。总线接口见文献[1](21页)。
图1:PCI卡总体设计
PCI9052 是PLX公司为扩展适配板卡推出的一款高性能、低价位的PCI总线从模式接口芯片。芯片引脚可直接与适配板卡金手指相连,它的各个引脚的名称和功能可参考它的DATASHEET[1]。局部总线与MCX314as的数据线、地址线、控制线等相连。
PCI9052芯片的主要特点如下:
(1) 符合PCI2.1 规范,支持简单的ISA到PCI的桥接转换;
(2) 支持局部总线到内存和I/ O映射;
(3) PCI中断信号由局部总线的两个中断信号LINTI1、LINTI2产生;
(4) 局部总线与PCI总线的时钟相互独立运行,兼容高低速设备。局部总线的运行时钟频率范围0~40MHz ;PCI的运行时钟频率范围0~33MHz。#p#分页标题#e#
(5) 可通过EEPROM的配置改变局部总线的操作,支持多路复用作和非多路复用8 位、16 位和32 位通用局部总线;
(6) 串行EEPROM 接口, 连接的串行EEPROM 用于存放设备ID和局部总线配置等重要信息;[1]
2.2 局部总线接口电路
PCI9052与MCX314as连接的电路如图2所示:
图2:PCI9052与MCX314as连接
MCX314as是一个用于实现4轴运动控制的集成电路。通过它可以控制由步进电机驱动器或由脉冲型伺服电机驱动的4轴位置、速度和插补[3]。它的所有功能都是由特定的寄存器控制的。通过对寄存器的设置,可以实现运动控制。它的电平与PCI9052相兼容,可以直接连接。
根据MCX314as本身的特性,PCI9052的局部总线采用非复用的16位数据总线的ISA模式,将PCI9052的MODE(68脚)接地,为非复用模式,ISA模式的寄存器配置在章节3中详细说明。PCI9052的ISA模式下,LRESET为正逻辑,而MCX314as的复位信号为反逻辑,所以两者要通过反向器连接。BUSY#和INTN#应加电阻后拉高,以加快数据传输中的等待和中断后的恢复。
2.3 MCX314as的信号接口电路
MCX314as是运动控制卡的核心,通过对它的八个控制寄存器和八个状态寄存器的操作可实现四轴的速度、位置、插补控制。如图3所示是单轴驱动系统的连接图。4轴系统于它相类似,每个轴采用相同的设计既可。
图3:MCX314as驱动系统
MCX314as输出驱动脉冲有两种形式:一种是正、负脉冲形式,以X轴为例,既XPP输出脉冲时,X轴正向旋转,XPM输出脉冲时,X轴反向旋转,四轴与此相同;另外一种是脉冲、方向形式,以X轴为例,XPP管脚在此复用为PLS,作为脉冲输出管脚,XPM在此复用为DIR,作为方向信号输出。可通过设置寄存器WR2的D6位来选择输出的形式,为了和我们的电机驱动器相配套,我们选用的是正、负脉冲(CCW)形式,采用差动输出,提高传输距离。
反馈的编码器信号经差动传输、高速光耦隔离后连接在各轴的编码器输入口。编码器的输入信号也可分为两相脉冲输入(nECA,nECB)和上下脉冲输入(PPIN,PMIN),设置WR2的D9位可选择与编码器相兼容的脉冲计数方式。
MCX314as每个轴有8位的I/O信号,其中每个轴的输出有4位(OUT4-7)可作为驱动状态的指示,也可作为通用输出,寄存器WR3的D7用来设定它是否作为通用输出。8位输入中可作为正、负限位,到位、报警等输入信号。I/O为电平信号,可通过光耦与电机驱动器隔离输入、输出。
3.基于PCI9052的板卡的配置
通过对PCI9052的配置寄存器的设置,它可工作在多种模式之下,如C模式、J模式、ISA模式等,每一种模式主要是对应着局部总线的不同工作方式和遵循的不同的总线规范。PCI9052的配置信息存放在所连接的EEPROM中,配置是否正确决定运动控制卡能否正常工作,所以非常重要,对9052的配置也是本次设计的一个重点。#p#分页标题#e#
3.1 数据配置
局部总线为16位的ISA总线,与MCX314as相兼容,可直接连接,涉及到的只是I/O信号,占用局部总线的片选3(CS3#)如图2。另外,还连接一片64KB的RAM做它用,与运动控制卡无关,它涉及到的是存储器信号,占用片选2(CS2#)。在ISA模式下无实际的片选1和片选2。
本卡的EEPROM配置信息表如下:
上表中显示的是配置数据,未列出的寄存器都设置为0。PLX公司的厂商ID为10B5H,设备ID为9052H。分类号表示的是何种桥,以及当前的版本,PCI9052为02h 。子系统ID和子制造商ID分别为9052H和10B5H。PCI9052仅支持INTA#,所以PCIILR(PCI中断寄存器)D8=1或者D8=0不使用中断。PCI9052有0到3共四个局部地址空间,其中空间0必须被配置为存储器空间范围,空间1必须被配置为I/O 空间范围。根据PCI9052的DATASHEET参考文献[1]的说明,空间0配置数据为FFFF0000H,空间范围为64KB,D0=0表示配置为存储器空间范围,见表中基地址为04000000H,使用片选2(CS2#)。空间1配置数据为FFFFFFF1H,I/O的空间范围为16个字节,D0=1表示配置为I/O空间范围。ISA模式下复用出来的两个片选管脚(CS2#,CS3#)是否输出,分别由片选信号2基地址和片选信号3的基地址来确定。片选信号基地址的D0=1为片选使能,片选基地址的确定,为空间1或0的基地址加上所配置空间地址的范围,超出这个范围,片选便没有输出。局部地址空间0或1总线区域描述为00400022H和0040003AH,确定为16位局部数据总线。中断控制及状态寄存器为00001000H,不使用中断,它的D12=1确定局部总线为ISA模式。控制寄存器确定了它的各个复用管脚输入/输出功能,以及初始化控制。
用含有以上配置数据的EEPROM来启动板卡,计算机将为它分配03000000H-0300000FH这16个I/O端口和04000000H-04010000H这64K Bytes存储器空间。
3.2 选取、配置EEPROM的注意事项
1) 串接EEPROM端信号有如下几种:时钟信号( EESK) 、读数据信号(EEDO) 、写数据信号(EEDI)和片选信号(EECS)。时钟信号(EESK)是由PCI总线的时钟32分频后得到的。
2) 对于EERPOM的选取要遵循PCI9052上推荐的EEPROM或者与之相兼容的具有连读功能的1Kbit的EEPROM。
3) 可以采用在线热配置(通过PCI9052在线配置),软件可以选择PLX自己公司的PLXMON或者JUNGO公司的WinDriver。笔者是用WinDriver v6.02,在软件安装的Samples目录下的程序PLX 9050 Diagnostics来读写EEPROM。这种方法比较方便,但是有时会有读写数据错误的情况出现。也可以用烧录器将配置数据写入EEPROM,这种方法可靠性高,但在实验过程中要反复插拔EEPROM不太方便。
4.驱动程序的开发
ISA总线的地址空间要映射到I/O空间或内存空间。为从PCI总线配置寄存器中获得主机动态分配的映射基址,并对映射端口进行读写,必须编写驱动程序。
驱动的简单实现可以采用JUNGO公司的WinDriver来生成驱动,但是WinDriver生成的驱动效率不高,而且没有注册码只能使用一个月。因此,我们采用DriverStudio加WIN2000DDK的办法来开发驱动。在DriverStudio的向导下输入设备ID制造商ID、分类号和子系统ID子制造商ID,生成驱动程序的框架,然后编写需要的程序代码。关于对驱动程序的安装以及在应用程序中的调用可以参看文献[5]。
5.结论
实践证明,采用PCI接口芯片和专用运动控制芯片开发的运动控制卡,开发研制周期短,实用性强,可靠性高。此运动控制卡已经完成硬件调试和驱动编写,目前已完成部分运动控制函数,正在进行应用程序开发。#p#分页标题#e#
转载请注明出处。