- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
简易USB接口卡的设计和实现
录入:edatop.com 点击:
本项设计的驱动程序是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年,第九期