|
目前比较常用的方法是在PC机或工控机内安装ISA或PCI数据采集卡(如A/D卡及422,485卡).但这些数据采集卡存在安装麻烦,受计算机插槽数量、地址、中断资源的限制,可扩展性差等缺点特别是在一些电磁干扰较强的工业现场。随着USB总线的发展和应用以及USB接口芯片出现,现在USB接口卡应该是一个即实用又方便的选择了。这项设计实现的是一个动态采集和存储系统的计算机通信接口卡,基本上可分为CY7C68013 USB接口芯片、CPLD芯片扩展控制部分、软件的实现部分。
一、 整体结构图
USB设备包含一些向主机软件提供一系列USB 设备的特征和能力的信息的设备描述符,用来配置设备和定位USB 设备驱动程序。这些信息确保了主机以正确的方式访问设备。通常,一个设备有一个或多个配置( Conf iguration) 来控制其行为。配置是接口( InteRFace) 的集合,接口指出软件应该如何访问硬件。接口又是端点( endpoint) 的集合,每一个与USB交换数据的硬件就为端点,它是作为通信管道的一个终点. 图1-1就是整个动态采集和存储系统中的USB接口连接部分的基本框。在计算机上的应用程序通过调用USB驱动从接口中读取数据,读到输入缓冲区中。计算机通过接口采数存数并发出控制信号然后由驱动程序通过接口将其转换为电压信号,而接口卡则是将其有限的控制信号进行扩展而且转换为USB设备可以正常接收的电压信号,使被控制部分执行相应的操作由于CY7C68013 USB接口芯片厂商提供了基本的固件程序所以用户只需编相应的应用程序和简单的驱动程序就可以实现一般用户要实现的基本功能,如果有特殊的需要只需稍加修改。所以CY7C68013 USB接口芯片是一款使用起来快速方便又简单的USB接口芯片。
二、芯片
EZ2USB FX2是一款集成USB2. 0的微处理器,它集成了USB 2. 0收发器、SIE (串行接口引擎) 、增强的8051微控制器和可编程的外围接口(GP IF) 。FX2这种独创性结构可使数据传输率达到56Mbp s,即USB 2. 0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB 1. 1和USB 2. 0协议,从而减少了开发时间和确保了USB 的兼容性。GP IF ( General Pro2grammable Interface)和主/从端点F IFO ( 8 位或16 位数据总线)为ATA,UTOP IA, EPP, PCMCIA,DSP等提供了简单和无缝连接接口。EZ2USB FX2 CY7C68013内部的微处理器是一个增强的8051内核,内部的RAM可用于存储程序和数据,使EZ2USB具有软配置特性。USB主机(如PC机)通过USB总线将8051程序代码和设备描述符装载到RAM中后, EZ2USB使用已下载的固件程序中定义的外设特性进行重枚举。内置的8051 处理器,相对标准的8051处理器有以下改进:
(1)独立的地址总线和数据总线,总线周期为四个时钟;
(2)双数据指针和自动指针可用于存储器之间的快速数据传输,提高数据传输效率;
(3)通用可编程接口(GP IF) ,可以直接连接到并口( 8位和16位) ,可编程波形描述符和配置寄存器;支持多个Ready输入和Control输出;
(4)矢量USB中断,独立的数据缓冲区供Setup 包和Data包控制传输;
(5)四个F IFO,可与ASIC和DSP等无缝连接;
(6)扩展的中断系统支持13 个中断源,并支持F IFO 和GP IF自动矢量中断;
(7)一个I2C接口;两个UART接口, 40个可配置I/O端口;www.51kaifa.com
(8)三个16 位内置定时/计数器、512 字节内部寄存器RAM;
(9)外部时钟可达48MHz;
(10)芯片内部集成有8KB、外部RAM, 8051 内核使用MOVX指令访问此RAM区。
三、基本电路图的设计结构
图3-1基本的原理图结构
其中的主要芯片是CY7C68013,起基本的USB接口通信功能,EPM7128SQ是一款CPLD主要用来通过编程扩展控制引脚的,剩下的芯片都是起电压转换给CY7C68013和CPLD芯片供电用的或一些起稳压和调理作用的。一般USB接口的通信可以通过驱动程序将其设为高速或低速形式,只要在接口卡上给出一个电压判断信号进行确认是高速还是低速的就可以在驱动里加以判断自动进行速度的调整。
四、程序
程序的大体结构如图4-1所示:
固件程序是芯片厂家提供的在此就不做详细介绍了。
本项设计的驱动程序是WDM模型的驱动程序及应用程序是 用VC++编的,采用动态库与驱动程序进行通信的。应用程序是通过API函数和驱动程序进行通讯的。本驱动程序的主要功能是控制USB设备上的读写、擦除和一些检查等功能。
如下所示的基本驱动程序读写控制函数和相应的驱动体系结构:
1) 初始化例程DriverEntry ()www.51kaifa.com
设备驱动程序与应用程序不同,它没有main () 或WinMain () 函数,而是有一个名为DriverEnt ry ()的入口函数,它通常完成一些初始化工作。当设备驱动程序被加载时,操作系统调用这个入口。在该例程中,需要初始化Dispatch (分派) 例程入口函数。
2) 创建设备例程AddDevice ()
大多数的PDO 都是在PnP 管理器调用该程序入口点时被创建的。插入新设备后,系统启动时,总线枚举器会发现总线上的所有设备,会自动寻找并安装设备的驱动程序,并由驱动程序中的处理PnP功能模块自动处理AddDevice () 例程及其他PnP 消息。此例程使用IoCreateDevice () 函数创建设备对象,再使用IoRegisterDevice InteRFace () 函数将设备组成为一个特定的设备接口,然后使用IoAttachDe2viceToDeviceStack () 函数关联设备栈。
图4-2WDM型的USB驱动体系框架
DeviceIoControl(
HANDLE hDevice,
DWORD dwIocontrolcode,
LPVOID IpInBuffer,
DWORD nInBuffersize,
LPVOID IpOutBuffer,
DWORD nOutBuffersize,
LPDWORD IpBytysReturned,
LPOVERLAPPED IpOverLapped
);
NTSTATUS JXQIF::AddDevice(PDEVICE_OBJECT Pdo)
{
JXQIFDevice * pDevice = new (
static_cast(KUnitizedName(L"JXQIFDevice", m_Unit)),
FILE_DEVICE_UNKNOWN,
NULL,
0,
DO_BUFFERED_IO
)
还有CreatFile,ReadFile,WriteFile,CloseFile 等。
图4-3应用程序的一个基本主界面。
五、结论
本文作者的创新点为对USB驱动程序进行了很好的裁减,而且配合上位机软件进行了传输速度的判断和选择,且结合实际的高速和低速采集系统做出了两种速度的选择。此接口卡留有多余的控制接口可以进行再扩展,可以实现对PROM、FPG进行读取,可以实现大容量存储的高速读取。此采集卡留有插槽可以在采编器和一些存储器上简单的插接就可以和电脑的USB口进行通信了。文章介绍了应用CY7C68013 USB接口芯片做一个简单的USB接口卡,以及对其程序的实现结构做了个大体的介绍和本设计的硬件实现工作做了个详细介绍,经过实验室的应用得出CY7C68013 USB接口芯片做简易USB接口卡到应用程序的开发是比较简接和方便,且可以达到较高的数据传输速度,而且系统的稳定性好和易于扩展。随着USB 技术的不断发展和完善,已经使其逐渐成为先进总线接口技术的标志和方向。
参考文献:
1 J an Axelson. USB 大全. 北京:中国电力出版社,2001.
2 Chris Cant . Windows WDM 设备驱动程序开发指南. 北京:机械工业出版社,2003
3 KAURA V1 , BLASKO V1Operation of a phase Locked Loop System Under Distorted Utility Conditions 1IEEE Transactions On Industry Applications ,1997 ,33(1) ,58 - 631
4 Chris Cant . 孙义马莉波国雪飞译,WindowsWDM设备驱动程序开发指南,北京:机械工业出版社 ,2000
5 魏来,董燕.程控交换实验系统USB接口设计[J].微计算机信息,2004年,第九期 |
|