正文内容
USB扩展范文
来源:莲生三十二
作者:开心麻花
2025-09-19
1

USB扩展范文(精选3篇)

USB扩展 第1篇

由于DSP和FPGA本身的一些优势,在很多视频信号处理器中采用基于DSP,FPGA或者DSP+FPGA的实现方式,但是由于DSP和FPGA这些器件无法实时观察视频处理器所采集到的信号,或者实行了特定视频处理的视频信号,所以会通过外接接口与相应的显示器连接[1]。考虑到系统的通用性和数据传输速率的要求,本文采用具有快速传输性能的USB接口。在文献[2]的基础上,视频信号处理器将处理完成的视频信号通过FIFO接口传输给USB接口电路,再传输到计算机。在计算机中可以通过特定应用程序进行下一步的视频处理和显示。整个系统结构如图1所示。

2 接口硬件设计

USB接口硬件作为桥梁,连接着计算机和视频信号处理设备,负责两者之间的数据传输。硬件系统采用标准的四线差分接口,包括Data+,Data-,电源和地线同计算机连接,采用FIFO接口与视频信号处理器连接。接口控制芯片采用的是Cypress公司的EZ-USB FX2LP 系列芯片,型号为CY7C68013A。该系列芯片具有一个显著特点就是可以通过USB 2.0的通用可编程接口为特定的应用接口编程[3] ,为用户进行个性化处理提供了便利。CY7C68013A提供的接口模式比较多,除了通用I/O模式外,为了便于芯片内部端点缓冲区能够更好地与外围电路进行通信,还有另外两种接口模式:通用可编程接口(General Programmmble Interface,GPIF)和从属FIFO。在GPIF模式下,GPIF作为CY7C68013A端点FIFO 的内部控制器,CPU不会干涉数据的传输。硬件系统正是在CY7C68013A的GPIF 方式下进行了外围电路的设计以及固件程序的编写。

如图2所示,硬件系统的GPIF模式是16位,用来读写外部FIFO存储器IDT72V04中的数据。在该模式下,用于接收IDT72V04空状态信号的是RDY0管脚;用来接收IDT72V04满状态信号的是RDY1管脚;用于输出FIFO读数据信号的是CTL0管脚;用于输出FIFO写数据信号的是CTL1管脚;FD[15:0]管脚则连接FIFO接口的16位数据总线。剩下的PA6管脚,系统用来作为外部FIFO的复位信号。

3 固件程序设计

在使用EZ-USB FX2芯片进行应用开发的过程中,固件程序的编译调试使用Keil uVision2开发环境。安装软件EZ-USB FX2LP Advanced Development Kit及GPIF Designer,分别用于调试及产生GPIF的控制代码文件。在开发包的安装目录下,在Target文件夹中包含有FX2固件框架文件[4]。框架文件的执行过程如图3所示,在固件调试的过程中,如果可以使用Bus Hound软件进行辅助分析,则调试成功的周期将会缩短许多。

4 驱动程序设计

USB设备的使用需要驱动程序的支持,因此高效的驱动程序设计是USB设备开发的关键。开发驱动程序通用的方法是使用微软的DDK工具,但是这种方法比较复杂,针对FX2芯片,通常方法有两种:采用DriverStudio软件与采用Cypress的通用USB驱动[5]。

DriverStudio软件专用于简化微软平台下设备驱动程序的开发、调试和测试,DriverStudio当前版本为V3.2,其所有工具都与Visual Studio IDE环境集成在一起,开发人员可以在Visual Studio 6.0,Visual Studio.NET 2002和2003环境中编写并测试驱动程序,并且通过使用Microsoft C++编译器与Microsoft DDK完全保持兼容。同时,在使用DriverWorks的DriverWizard工具建立WDM驱动程序框架时,该向导已经建立了一个主机测试界面程序。然而,虽然使用DriverStudio可以灵活地进行驱动程序设计。但是,对于先前没有USB及驱动程序开发经验的人来说,这还是一大障碍。

USB 驱动通常包括3 层:客户端设备驱动、总线驱动以及主机控制器驱动。后两者一般由Windows系统提供。用户所需要开发的仅仅是USB 客户端设备驱动程序,而USB芯片的厂商一般都会为其USB芯片提供通用的驱动程序,以方便用户的使用,因此用户可以在通用驱动的基础上直接进行固件程序的开发。Cypress公司提供给用户的驱动文件有CyLoad.sys与CyUSB.sys以及与它们相对应的两个INF文件:CyLoad.inf与CyUSB.inf。这些文件可以在EZ-USB FX2LP开发包安装目录下的Drivers文件夹中得到。若要设计自已的系统,则要重新生成CyLoad.sys与CyLoad.inf文件,从而实现主机端向USB芯片自动下载固件的功能。固件下载以后,根据CyUSB.inf文件的信息完成CyUSB.sys驱动程序的安装。

4.1 重新生成CyLoad.sys文件

在重新生成CyLoad.sys文件之前,要求系统安装VC++6.0和Winxpddk软件。参考步骤如下:

1) 数组准备。要将Intel HEX记录格式的固件文件转换成C代码数组,可以利用hex2c.exe工具来实现。

2) 路径准备。新建一个非中文路径(防止部分链接不支持中文路径)的目录,将开发包中\Vdrivers\ezloader目录复制,包括所有文件记忆子目录,拷贝到刚才新建目录下。为了防止在编译过程中出错,\lib\i386\free和\lib\i386\checked目录结构必须完整。

3) 数组替换。将由步骤1)转换来的数组值替换掉firmware.c中原来的数组值。

4) 目标文件修改。编辑新建目录下的sources文件,在TARGETNAME=ezloader一行中修改目标文件名,修改的目的是为了让Windows自动完成一部分硬件驱动的工作,修改的目标文件是Windows DDK产生的(.sys)驱动文件。

5) 重新设置环境变量。主要利用WINDDK的环境设置文件(dat文件)来实现。

6) 最后更新工作路径。在弹出的DOS环境中设置工作路径至步骤2)新建的目录下,执行 build-c-checked 命令即可创建所需驱动文件。

4.2 重新生成INF文件

INF文件是很重要的信息文件,主要作用是指示安装Windows驱动程序。一般情况下,一个Windows驱动程序需要配合一个INF文件才可以进行安装。而CyLoad.inf与CyUSB.inf两个INF文件就是Cypress公司提供给用户的设备信息文件。在这两个文件中可以对其指向设备的VID/PID、字符串、GUID、驱动程序名称进行定制修改。

在CyLoad.inf与CyUSB.inf文件修改完成后,只须将CyUSB.sys文件的文件名改为与CyUSB.inf文件修改后的名字相同即可正常使用。图4为该USB硬件接口电路板示意图。

5 应用程序设计

用户在使用硬件系统时,还需要有一个接口。这个接口主要由应用程序来实现,其基本功能是:开启或关闭USB设备;检测USB设备;设置USB数据传输管道和数据采集端口;实时从USB接口采集数据以及显示数据,对数据进行文件存储。设备要工作,必须在硬件和软件之间建立完善的接口,它把每一个硬件设备都抽象为文件,通过应用编程接口(API)函数的调用来实现文件操作,从而达到与设备通信的目的。经过的驱动设计之后,计算机就可以调用CY7C68013A芯片,其调用方法主要有两种:

第一种对用户来说要求比较高,它使用DeviceIoControl函数读写。不同的是,IOCTL控制字和老驱动完全不同[6]。熟悉该函数编写的用户则可以通过这些底层API完成相应操作,更为灵活。

第二种对用户函数编写的能力要求比较低,更方便一些,它直接使用Cypress公司提供的面向对象的类。在Cypress公司的类库中一共分为9个类,通过调用这些现成类就可以和硬件打交道,避免了用户自己去编写函数。这些类是对第一种方法的封装,使用起来非常简便。用户可以根据自身情况和需要来选择第一种还是第二种方法,或者采用混合使用的办法,在使用时两个头文件CyAPI.h和cyioctl.h需要加上,此外还需要在项目中引用CyAPI.lib。

因为第一种方法有现成的类库可以调用,能节省很多开发周期,本文主要使用CyAPI.lib 类库提供的BeginDataXfer(),WaitForXfer(),FinishDataXfer()底层异步方法来实现主机与外部FIFO间的批量数据传输的功能。关键代码如下:

outOverFlow.hEvent = CreateEvent(NULL, false, false, "CYUSB_OUT");

UCHAR *outContextPt=dlg2->USBDevice->BulkOutEndPt-> BeginDataXfer(outData,outlenth,&outOverFlow);

dlg2->USBDevice->BulkOutEndPt->WaitForXfer(&out OverFlow,200);

dlg2->USBDevice->BulkOutEndPt->FinishDataXfer(outData,outlenth, & outOverFlow,outContextPt);

在程序中,dlg2为Cdialog类的派生类CMYPJDlg的对象。USBDevice是指向CCyUSBDevice类的指针,并且为CMYPJDlg的类成员。程序通过这一指针来指向USB设备。BulkOutEndPt为指向批量传输端点的指针,端点的传输方向为主机至USB设备。相对应USB设备至主机方向的批量端点指针为BulkInEndPt。将以上代码中BulkOutEndPt替换为BulkInEndPt即为相反方向的数据传输的主要代码。批量端点也被抽象封装为一个类CCyBulkEndPoint,调用该类中的方法即可完成数据的传送。

至此,USB接口电路建立起了视频处理器与计算机之间的连接,计算机可以收到视频处理器的信号,但是要将这些信号转换为人们所能理解的信息,还需要通过特定的应用程序将计算机接收到的数据还原为视频信号,并通过视频窗口显示出来。图5是其应用程序界面。

6 测试结果

至此,系统在视频处理器和计算机之间的连接已经完成建立,但是为了测试其性能,还必须对设备数据传输速率进行测试[7]。通用的方法是通过计算机上的测试软件来计算实际中的数据传输速度V,具体方法为:先记录该计算机与用户设计的USB系统在固定时间T内交换的数据信息流量I,然后通过V=I/T计算出实际使用中的数据传输速度。本系统采用Bus Hound软件验证,结合示波器观测,实际测试出的数据传输速率为48.7 Mbyte/s,即389.6 Mbit/s。速度测试的流程如图6所示。需要注意的是,如果操作的先后顺序不当的话,很容易使系统出现死机。这个数据与理论上的480 Mbit/s存在差距。然而,USB 2.0总线速度理论上限是480 Mbit/s,约为60 Mbyte/s,但是这只是一个理论值,综合考虑通信协议的开销后,实际速度在理论上最高也只有53 Mbyte/s(426 Mbit/s),在实际综合条件下,这两个理论值都是无法实现的,本文的测试速度为48.7 Mbyte/s,接近实际上限。实测数据传输速率是可以满足一般视频信号处理设备电路要求的。系统实物如图7所示。

7 小结

利用USB接口把视频信号处理数据传输给计算机,在应用程序中对视频信号进行相应的处理和显示,可以得到直观的效果,实行对视频信号的实时处理,而且可以很方便对处理程序进行修改。本文给出的方法在开发视频信号处理接口电路中,能够发挥其开发周期短,易于固件升级等优势,极大地降低了开发的复杂度。

参考文献

[1]谢礼莹,曾浩.DSP+FPGA的DBF基带系统设计[J].重庆大学学报,2007,30(10):65-68.

[2]尹乐.基于FPGA和DSP的图像多功能卡的设计与实现[D].成都:电子科技大学,2007.

[3]Cypress Semiconductor Corporation.EZ-USB FX2 technical referencemanual(Version2.1)[EB/OL].[2011-03-24].http://www.cypress.com/.

[4]USB-IF universal serial bus specification[EB/OL].[2011-03-24].http://www.usb.org/developers/docs/.

[5]李英伟,王成儒,练秋生,等.USB2.0原理与工程开发[M].北京:国防工业出版社,2007.

[6]Cypress Semiconductor Corporation.Cypress CyUsb.sys programmer'sreference[EB/OL].[2011-03-24].http://www.cypress.com/.

买张扩展卡USB3.0带回家 第2篇

USB3.0的理论带宽为4.8GB/s,也就是说,它拥有500MB/s左右的理论双向传输速度,比USB2.0快10倍以上。随着厂商们的积极投入,USB3.0接口设备的价格也逐渐下降,目前一款USB3.0接口的移动硬盘售价大概在600元上下。不少对资源共享速度有高要求的用户开始逐步接受了USB3.0。虽然这些USB3.0移动硬盘里装的仍然是老迈的机械式硬盘,但凭借着USB3.0接口的“双通道”、“多线程”传输效果,它们已经能够给用户创造绝对的速度惊喜了,根据我们的实际测试,主流USB2.0移动硬盘的传输速度大概是30MB/s,而USB3.0硬盘则能够达到120MB/s左右。

那么这是否标志着用户必须更换USB3.0接口的主板呢?肯定不只这一条路。是的,之前我们一直苦苦劝说广大用户不必为了买一块原生支持USB3.0的主板而多花银子。如今,USB3.0的扩展卡已经遍布市场了,它将绝对是一个支持高性能存储的捷径。无论是880G还是780G,无论是P55还是P43,大概花100元左右,用户就能够拥有一块USB3.0接口扩展卡了。这些产品大都是PCI-E×1接口的产品,理论上已经能够提供500MB/s的带宽。不过由于目前Intel和AMD的芯片除了赋予PCI-E×16显卡插槽PCI-E2.0规格外,提供的扩展插槽大都只有PCI-E1.1标准,这种扩展卡实现的USB3.0接口大多只有250MB/s的带宽,但这对于现在的大多数USB3.0移动存储设备而言已经绝对够用了。事实上好些主板板载的USB3.0也同样只有这个水准,因为它们实际上也是通过使用USB3.0控制芯片将PCI-E数据通道作为USB3.0数据通道使用的。

用户只要直接将转接卡插在主板上,然后安装驱动即可使用,非常方便。不过在此需要提醒大家最好购买品质较好的产品,固态电容供电是非常必要的,一些设计较好的产品还会提供一个4Pin的辅助供电接口。更有像华硕U3S6这样不仅提供USB3.0接口,同时还提供SATA3.0接口的高端产品。总之,以往使用老主板的用户,只要主板上拥有一个PCI-E×1接口,那么实现USB3.0就不是什么难事了。

USB扩展 第3篇

随着信息技术的不断发展, 原来裸机上可以直接进行的硬件I/O操作逐渐被操作系统所接管, 而原来计算机的通用I/O端口也逐渐被专用的板卡代替, 用户无法再通过编写程序对I/O端口进行操作, 这便给一些领域的研发、教学工作带来诸多不便, 本设计便解决了这一难题。

2 设计方案

基于USB-HID的I/O扩展卡可以从功能上分为系统硬件、固件程序、驱动程序和应用程序四个层次:应用程序位于系统的最上层, 驱动程序位于系统的第二层, 固件程序位于系统的第三层, 系统硬件位于系统的最底层。来自应用程序的操作指令经过驱动程序、固件程序依次传递给系统硬件, 指令执行完成后, 系统硬件会将输入指令的读取到的数据或输出指令的执行结果将依次通过固件程序、驱动程序原路传递回应用程序, 供系统进行下一步处理。如图1。

2.1 系统硬件

基于USB-HID的I/O扩展卡系统硬件由STM32单片机、LM2940稳压芯片和光耦构成, 负责解析来自固件程序的控制指令, 分别执行GPIO、ADC、DAC等功能。

2.2 固件程序

基于USB-HID的I/O扩展卡固件程序采用C语言、汇编等低级语言编写, 运行在STM32单片机上, 接收来自驱动程序的控制指令并传递给系统硬件执行。

将单片机配置为自定义USB-HID设备, 规定好设备的接口描述符、端点描述符、设备描述符、报告描述符, 即可在Windows平台下实现免驱通信。

固件程序分为两部分:主程序首先进行系统初始化, 然后再主循环中调用Check Task () 函数检查任务队列, 当检查到队列中有任务时便调用Read Data () 函数读取并执行指令, 执行完成后调用Get Result () 函数获取并返回执行结果;中断处理程序响应USB接收中断, 调用Add Task () 函数解析指令并加入任务队列, 最后清除标志位完成处理。如图2。

2.3 驱动程序

基于USB-HID的I/O扩展卡驱动程序提供了可被应用程序调用的托管类库作为接口, 屏蔽不同语言间的差异, 并将传入的数据通过USB-HID方式发送给固件程序。

驱动程序提供了Open Device () 、Set Handler () 、Write Data () 、Read Data () 、Close Device () 五个函数分别用于打开设备、设置委托、写入数据、读取数据和关闭设备, 通过hid.dll调用了Windows API中的H i d D_Ge t H i d Gu i d () 、S e t u p Di Ge t C l as s D e vs () 、Hid D_Free Preparsed Data () 、Read File () 、Create File () 、Hid P_Get Caps () 、Close Handle () 等函数。

2.4 应用程序

基于USB-HID的I/O扩展卡应用程序采用C#、VB、C++等.NET Framework中的高级语言编写, 负责完成系统的业务逻辑并调用驱动程序中的接口发送控制指令。

3 设计总结

本设计巧妙地将I/O操作和控制逻辑分离开来, 既保留了单片机使用灵活的特点, 又充分利用了通用计算机的强大性能, 具有即插即用、易于扩展、电磁干扰小、性价比高、可靠性好等特点, 可以广泛应用于课堂教学、电子制作、产品研发等领域, 具有广阔的发展前景。

摘要:本文详细介绍了一种基于USB-HID的I/O扩展卡, 研究其系统硬件、固件程序、驱动程序和应用程序的设计。本设计采用高性能单片机STM32F103ZET6作为主控制器, 采用Visual Studio和Keil作为开发环境, 实现了对计算机数字、模拟I/O的扩展。本设计巧妙地将I/O操作和控制逻辑分离开来, 既保留了单片机使用灵活的特点, 又充分利用了通用计算机的强大性能, 具有广阔的发展前景。

关键词:STM32,USB-HID,GPIO,ADC,DAC

参考文献

[1]覃冬华.基于Visual C#的USB接口通信程序设计[J].数字技术与应用, 2010 (8) :90-91.

[2]张寿春.基于USB主机的船舶航向数据实时记录系统[J].数字技术与应用, 2012 (2) :62-63.

相关文章
表演人才范文

表演人才范文

表演人才范文(精选11篇)表演人才 第1篇六七岁至十一二岁是学龄初期, 即相当于儿童接受小学教育的年龄。这一时期少儿的主要行为活动是学...

2
2025-09-20
保安班长月总结

保安班长月总结

保安班长月总结(精选6篇)保安班长月总结 第1篇篇一:保安班长年终总结个人总结光阴似箭日如梭,转眼间半年已经过去。回顾我们保安队在近...

1
2025-09-20
班主任有关工作培训心得

班主任有关工作培训心得

班主任有关工作培训心得(精选15篇)班主任有关工作培训心得 第1篇20**年8月我有幸在市电大参加了“仙桃市第一期小学骨干班主任高级研修班...

1
2025-09-20
部编版一年级四季教案

部编版一年级四季教案

部编版一年级四季教案(精选6篇)部编版一年级四季教案 第1篇《四季》文清路小学 刘明霞教学目标:1、认识 9个生字和言字旁,虫字旁和折...

1
2025-09-20
办公室文秘的岗位职责有哪些

办公室文秘的岗位职责有哪些

办公室文秘的岗位职责有哪些(精选18篇)办公室文秘的岗位职责有哪些 第1篇1、在董事会的领导下主持办公室的全面工作,负责办公室的日常工...

3
2025-09-20
八年级上册第1课鸦片战争

八年级上册第1课鸦片战争

八年级上册第1课鸦片战争(精选12篇)八年级上册第1课鸦片战争 第1篇《鸦片战争》教学设计【教学目标】1、英国向中国走私鸦片及危害;林则...

2
2025-09-20
表面粗糙度测量仪的工作原理

表面粗糙度测量仪的工作原理

表面粗糙度测量仪的工作原理(精选10篇)表面粗糙度测量仪的工作原理 第1篇表面粗糙度测量仪的工作原理分析及其改进方案阳旭东(贵州工业大...

1
2025-09-20
宾馆改造可行性报告

宾馆改造可行性报告

宾馆改造可行性报告(精选8篇)宾馆改造可行性报告 第1篇第一章 总论1.1 项目名称及承办单位项目名称:宝地宾馆改扩建项目 承办单位:...

1
2025-09-20
付费阅读
确认删除?
回到顶部