USB应用程序接口

2024-05-24

USB应用程序接口(精选12篇)

USB应用程序接口 第1篇

随着微机技术水平的日益提高,传统的计算机接口已经不能满足当前计算机高速发展的需求,计算机业迫切需要一种新的通用型、高速总线接口,通用外设接口标准USB就应运而生。

USB,全称是Universal Serial Bus(通用串行总线),是一种新型的、基于令牌的、高速的串行总线标准,由Compaq、Microsoft、Intel、IBM等七家公司共同开发的,旨在解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信标准[3],自1995年在Comdex上亮相以来已广泛地为各PC厂家支持。现在市场上几乎所有的P C机器都配备了U S B接口,USB接口之所以能够得到广泛支持和快速普及,是因为它具备以下优点:

1)终端用户的易用性

●为接缆和连接头提供了单一模型

●电气特性与用户无关

●自检外设,自动的进行设备驱动和设置

●外设可以动态连接,动态重置

2)广泛的适用性

●适应不同设备,传输速率从几kb/s到十几Mb/s

●在同一线上支持同步、异步两种传输模式

●支持对多个设备的同时操作

●可同时操作127个物理设备

●在主机和设备之间可以传输多个数据和信息流

●支持多功能的设备

●利用底层协议,提高了总线利用率

3)同步传输带宽

●确定的带宽和低延迟适合电话系统和音频的应用

●同步工作可以利用整个总线带宽

4)灵活性

●直接发送一系列指定大小的数据包,允许对设备缓冲器大小进行选择

●通过指定数据缓冲区的大小和执行时间,支持各种数据传输率

●通过协议对数据流进行缓冲处理

5)健壮性

●在协议中使用差错处理/差错恢复机制

●完全实时热插拔

●可以对有缺陷的设备进行鉴别

6)与P C产业的一致性

●协议的易实现性和完整性

●与P C机的即插即用体系结构一致

●与现存操作系统有良好衔接的接口

7)性价比

●以低廉的价格提供传输速率为1.5 M b/s的子通道

●将外设和主机硬件进行了最优化的集成

●促进了低价格外设的发展

●廉价的电缆和连接头

●运用商业技术降低成本

8)可升级性

●体系结构的可升级性支持在一个系统中同时存在多个USB主机控制器

正由于上述优点,开发USB接口的设备已成为一种发展趋势。然而随着USB技术的迅猛发展,传统的U S B 1.1接口已经不能适应用户的需求,于是在1 9 9 9年在Intel的开发者论坛大会上又提出了USB2.0技术,使得U S B不仅支持1.5 M b/s的“低速”,传输和12Mb/s的“全速”传输,而且支持480Mb/s的“高速”传输,比USB1.1标准快40倍左右,速度的提高对于用户的最大好处就是意味着用户可以使用到更高效的外部设备,而且具有多种速度的周边设备都可以被连接到USB 2.0的线路上,而且无需担心数据传输时发生瓶颈效应。

2 USB驱动程序设计

一个完整的USB系统包括主机系统和USB设备。所有的传输事务都是由主机发起的。一个主机系统又可以分为以下几个层次结构,如图1所示。

U S B总线接口包括U S B主控制器和根集线器,其中USB主控制器负责处理主机与设备之间电气和协议层的互连,根集线器提供USB设备连接点。USB系统使用USB主控制器来管理主机和USB设备之间的数据传输,另外它也负责管理USB资源,如带宽等。应用软件不能直接访问U S B设备硬件,而通过U S B系统和USB总线接口与USB设备进行交互[1]。

U S B设备包含一些向主机软件提供一系列U S B设备的特征和能力的信息的设备描述符,用来配置设备和定位USB设备驱动程序。这些信息确保了主机以正确的方式访问设备。通常,一个设备有一个或多个配置(C o n f i g u r a t i o n)来控制其行为。配置是接口(I n t e r f a c e)的集合,接口指出软件应该如何访问硬件。接口又是端点(endpoint)的集合,每一个与USB交换数据的硬件就为端点,它是作为通信管道的一个终点。图1显示了一个多层次结构的通信模型,它表明了端点和管道所扮演的角色。

2.1 USB驱动程序结构

1)USB驱动程序体系结构

运行在核心态的USB驱动程序是基于WIN32驱动程序模型WDM(Windows Driver Model)的,它采用分层驱动程序模型,由USB总线驱动程序和USB功能驱动程序两部分组成,总线驱动程序由操作系统提供,用户只需要编写相应的功能驱动程序即可[2]。

2)处理流程

因为I/O管理器把每一个设备对用户程序都抽象成文件,所以用户程序通过调用文件操作API函数就可以实现与驱动程序中某个设备的通信。

用户程序发送的请求由I/O管理器转换为具有不同主功能代码的IRP(I/O请求包)发送给功能驱动程序。功能驱动程序接收该IRP,在回调程序中根据IRP中包含的具体操作代码,构造相应的U S B请求,把它放到一个新的IRP中,并把这个新的IRP传递给USB总线驱动程序。USB总线驱动程序根据IRP中所包含的USB请求块执行相应操作,再将操作结果通过IRP返还给功能驱动程序,功能驱动程序接收此IRP,将操作结果通过IRP返还I/O管理器。最后,I/O管理器将此IR P中的操作结果返回给应用程序。至此,应用程序对USB设备的一次I/O操作完成,其处理流程如图2所示。

3 USB设备驱动程序中关键代码实现

下面是以开发的A R M读写驱动程序为例,介绍U S B驱动程序中几个关键例程的实现。本驱动程序的主要功能是控制USB设备上的ARM并对ARM板进行读写操作。

1)初始化函数Driver Entry()

设备驱动程序与应用程序不同,没有main()或Win Main()函数,而是有一个名为Driver Entry()的入口函数,它通常完成一些初始化工作。当设备驱动程序被加载时,操作系统调用这个入口。

2)创建设备函数Add Device()

大多数的PDO都是在Pn P管理器调用该程序入口点时被创建的。插入新设备后,系统启动时,总线枚举器会搜索总线上的所有设备,自动寻找并安装设备的驱动程序,并由驱动程序中的处理Pn P功能模块自动处理Add Device()。本程序使用Create Device()函数创建设备对象,再使用Register Devicelnterface()函数将设备组成一个特定的设备接口,然后通过Attach Device To Device Stack()函数关联设备栈。

3)ARM的传输处理函数Usb Transmit()

该函数是实现本驱动程序功能的关键,它用来与ARM进行通信。分析发送的请求数据后根据命令的具体含义对ARM进行读写操作。应用层通过调用标准的AR M板函数来发送I/O请求。

4 结束语

随着支持USB的个人电脑的普及,大量支持USB接口外设的不断涌现,以及USB技术的发展和不断完善,因此基于USB驱动程序的开发也将成为这一发展趋势的重中之重。本文介绍了USB的通信模型,分析了基于WDM的USB驱动开发的关键所在,结合ARM驱动程序开发介绍了DDK开发环境的构建,最终结合实际系统完成了基于DDK的USB接口WDM驱动开发和调试。

参考文献

[1]盖素丽,常青.USB接口的驱动程序开发[J].河北省科学院学报,2005,(6):18-19.

[2]王志强,孙书鹰,孙世宇.USB设备驱动程序开发技术研究[J].中文核心期刊《微计算机信息,》2006,22(1):57-58.

USB应用程序接口 第2篇

基于USB接口的高频RFID阅读器设计与应用

本文介绍了高频RFID读写芯片MFRC530和USB接口芯片CH374T,给出了13.56MHz阅读器的设计方法,对单片机控制MFRC530的具体开发方案和电路原理图进行分析.通过USB接口,实现了上位机和阅读器之间的数据传输,并详细介绍下位机软件的.实现.

作 者:李志超 傅建明 许绘香  作者单位:李志超,傅建明(武汉大学研究生学院,湖北,武汉,430072)

许绘香(中州大学信息工程学院,河南,郑州,450044)

刊 名:人力资源管理(学术版) 英文刊名:HUMAN RESOURCE MANAGEMENT 年,卷(期): “”(4) 分类号:N945.23 关键词:射频识别   MF RC530   USB  

USB应用程序接口 第3篇

C8051F320片内自带有USB收发器和控制处理器是它区别与同一系列产品的一大特点。用C8051F320来进行USB技术开发既方便又快捷。

C8051F320单片机简介

1.功能部件及特点

(1)模拟外设 10位的ADC(±1LSB INL):其最大可编程转换速率可达200kbps,可多达17个外部输入,可编程为单端输入或差分输入,内置一个温度传感器(±3℃);2个模拟比较器;2.4V的内部电压基准;精确的Vdd监视器和欠压检测器。

(2)USB功能控制模块 满足USB2.0协议;可在全速(12 Mbps)或低速(1.5 Mbps)下运行;集成有一个时钟恢复源,对于全速或低速传输均可不用外部晶振;支持8个灵活通用的端点;内置一个1K的USB专用缓冲存储器;集成了一个USB接收器,不需要外部电阻。

(3)片内调试模块 片内调试电路提供全速、非侵入式的在系统调试(不需仿真器);支持端点、单步、观察点、堆栈监视器;可以观察/修改存储器和寄存器;比使用仿真芯片、目标仿真头和仿真插座的仿真系统有更好的性能。

(4)工作温度范围:0~70℃

(5)高速8051微控制器内核 采用流水线指令结构,其70%的指令的执行时间为一个或两个系统时钟周期;速度可达25 MIPS(时钟频率为25MHz时)。

(6)存储器 1280字节的内部数据RAM(1K+256);16K字节的可以在系统编程的Flash闪速存储器。

(7)数字外设 25个字节宽的端点I/O;所有口线均耐5V电压;可同时使用UART串口、硬件SMBusTM、SPITM;带有4个可编程的16位计数器/定时器阵列;带有5个捕捉/比较模块的通用16位计数器/定时器。

(8)时钟源 内部晶振,精度为0.25;支持所有USB和UART模式;外部晶振器:晶体、RC、C或外部时钟;内置一个针对USB控制器的片上时钟乘法器。

(9)供电电压 片上的参考电源校准器支持USB总线电源操作;校准器的Bypass模式支持USB内部电源操作。

(10)性能特点 C8051F320在保持CISC结构及指令系统不变的情况下,对指令运行实行流水作业,推出了CIP-51的CPU模式,从而大大提高了指令运行速度,使8051兼容机系列进入了8位高速单片机行列。

传统的单片机I/O端口大都是固定为某个特殊功能的输入/输出口,可以是单功能或多功能,I/O端口可编程选择为单向/双向以及上拉、开漏等。这种固定方式既占用较多引脚,配置又不够灵活。C8051F320采用开关网络以硬件方式实现I/O端口的灵活配置,如图1所示。在这种通过交叉开关配置的I/O端口系统中,单片机外部为通用I/O口,如P0口、P1口和P2口。内有输入/输出的电路单元通过相应的配置寄存器控制的交叉开关配置到所选择的端口上。

C8051F320还提供了一个完整而先进的时钟系统,如图2所示。在这个系统中,片内设置有一个可编程的时钟振荡器(无需外部器件),可提供2、4、8和16 MHz时钟的编程设定。外部振荡器可选择4种方式。当程序运行时,可实现内外时钟的动态切换。编程选择的时钟输出CYSCLK除供片内使用外,还可从随意选择的I/O端口输出。

C8051F320在8位单片机中率先配置了标准的EC2接口(IEEE1149.1)。在上位机软件支持下,通过串行的EC2接口直接对产品系统进行仿真调试。C8051F的EC2接口不仅支持Flash ROM的读/写操作及非侵入式在系统调试,还为在系统测试提供边界扫描功能。通过边界寄存器的编程控制,可对所有器件引脚、SFR总线和I/O口弱上拉功能实现观察和控制。

C8051F320把80C51单一的外部复位发展成多源复位:上电复位、掉电复位、外部引脚复位、软件复位、时钟检测复位、比较器0复位和引脚配置复位。众多的复位源为保障系统的安全、操作的灵活性以及零功耗系统设计带来极大的好处。

2.引脚及封装

图3为其引脚图。其中,Vdd为数字电源;GND为模拟地;REGIN为5V校准器的输入端;RST/C2CK为设备的复位引脚或EC2调试接口的时钟信号;P3.0/C2D为端口3.0或EC2调试接口的双向信号引脚;VBUS为USB总线输入脚;D+为USB的D+;D-为USB的D-;P0.2/XTAL1为端口0.2或外部晶振输入;P0.3/XTAL2为端口0.3或外部晶振输出;P0.6/CNVSTR为端口0.6或ADC0外部转换开始输入脚;P0.7/VRFF为端口0.7或外部参考电源的输入端或输出端;P0.0、P0.1、P0.4、P0.5、P1.0~P1.7、P2.0~P2.7 均为相应的端口引脚。

3.电气特性

校准器的输入电压(REGIN引脚)为4.0~5.25V;Vdd(电压校准器的输出)为3.0~3.6V(通常取3.3V);VREG偏流(电压校准器有效时)为70μA;CPU和USB运行时的供给电流为18mA(CPU时钟为24MHz,USB时钟为48MHz时)或9mA(CPU时钟为12MHz,USB时钟为6 MHz时);内部晶振频率为12.0MHz;USB时钟频率为48.0MHz(全速)、6.0MHz(低速)。

典型的USB应用

C8051F320是一款完全集成的混合信号系统级芯片,片内集成了数据采集和控制系统中常用的模拟部件和其它数字外设及功能部件。其中值得我们注意的是,它集成有一个USB接口,所以我们也可将其看成是一款带USB接口的微处理器。C8051F320与市场上同类带USB接口的微处理器相比较,它内部强大的功能模块大大简化了USB技术的开发,还能很好地缩短开发周期。下面介绍它的一个典型的USB技术应用。

在这个应用中,主机通过C8051F320芯片中USB接口与C8051F320通讯,来控制信号灯的状态,检测开关按钮的状态,并采集分压器和片内温度传感器中的数据。在整个通讯中,我们还要使用EC2适配器来进行系统调试。系统的电路原理图见图4。

在该应用系统中,SW1按钮开关连接到C8051F320的复位引脚。按一下SW1,设备将进入硬件复位状态。将J15跳线的两引脚连接上后,C8051F320就在外部电源的模式下开始工作。如果要让320在自己供电的模式下运行,就需在断开J15的同时,连接上J12的两个引脚。J4是该应用系统的调试接口。将串行适配器EC2通过该接口连接到C8051F320,可实现在线调试和Flash编程的写入和擦除(EC2的说明和使用请参见Cygnal公司的产品数据手册)。J14是USB(通用串行总线)连接器,通过它就可将USB接口和C8051F320芯片连接起来。我们常将USB电缆的一端接上J14,另一端接在计算机的USB通讯口上。这样就能实现数据传输任务。将J12跳线的两引脚连接上后,外部电容就连接到了C8051F320的P0.7脚。C8051F320的P1.7引脚上连接有一个滑动电阻,只要将J13接上,C8051F320就可从P1.7脚采集到逻辑信号。实际应用中,我们要进行USB技术开发和应用,其硬件部分可在图4的基础上根据需要进行扩展。

完整的USB应用系统除了必要的硬件部分,还包括软件部分,图5、图6为主程序流程图及USB中断服务程序流程图。软件部分分为三大块:在C8051F320设备上运行的固件程序,在主机上运行的USB设备驱动程序,一个主机应用程序。主机应用程序通过USB接口与C8051F320通讯,允许用户观察并改变C8051F320设备上的I/O外设的状态。在运行主机应用程序前,我们要先安装设备的USB驱动程序。当设备通过USB接口与主机连接好后,应用程序就开始枚举,并通过端点0、1和2来完成设备与主机之间的数据传输。在USB协议中,端点0数据包被定义为控制数据包,端点1和2分别用来输入数据和输出数据。数据包用来显示各个端口引脚上的逻辑值。在上述应用系统中,P1.7脚上分压器的输出逻辑值就通过应用程序中的端点1数据包来传输到主机,从而主机读出数据并在用户界面上显示出来。在本刊的网站上给出了源程序,供读者参考。

USB应用程序接口 第4篇

目前现有的仪器设备通常采取RS232串口与计算机通信RS232接口曾是计算机的标准配置,但随着时间的推移和计算机技术的进步,支持热插拔的USB标准接口取而代之并被大量配置。RS232串口在计算机的配置越来越少甚至不配置。RS232串口与USB接口虽然都属于串行接口,但它们的数据格式,通信协议及信号电平和机械连接方式都完全不同。这样便产生计算机不便于甚至于不能控制现有的仪器设备的问题,解决这一问题就得把现有的仪器设备的RS232接口改成USB接口。这种转换有两个设计方案,一个方案是从硬件底层固件开始,进行全面系统开发,此方案由于开发成本和开发难度及单片机的限制而很少被采用。另一个方案就是采用USB/RS232桥接芯片如CP2102进行设计,计算机通过USB接口虚拟出一个RS232串口,与设备的传统器件连接,设备对计算机接口的形式为USB接口。

2 CP2102功能

SILICON LABORATORIES推出的USB与RS232接口转换芯片CP2102是一种高度集成的USB-UART桥接器,提供一个使用最小化的元件和PCB空间实现RS232转USB的简便的解决方案,如图1所示,芯片包含一个USB功能控制器,USB收发器,振荡器和带有全部的调制解调器控制信号的异步串行数据总线(UART)全部功能集成在一个5mm X 5mm MLP-28封装的IC中。

作为USB/RS232双向转换芯片,一方面可以从主机接收USB数据并将其转换为RS232信息流格式发送给外设;另一方面可从RS232外设接收数据转换为USB数据格式传送回主机,其中包括控制和握手信号[1]。这些工作全部有芯片自动完成。

2.1 USB功能控制器和收发器

CP2102的USB功能控制器是一个符合USB 2.0的全速器件,并集成了收发器和片内相应的上拉电阻。USB功能控制器管理USB和UART间所有的数据传输以及由USB主控制器发出的命令请求和用于控制UART功能的命令。

CP2102和CP2103支持USB挂起和恢复信号功能便于器件以及外部电路的电源管理。当CP2102在总线上检测到挂起信号时,CP2102将进入挂起模式。在进入挂起模式时,CP2102会发出SUSPEND和/SUSPEND信号。SUSPEND和/SUS-PEND在一个CP2102或CP2103复位后也会发出,直到USB要求的器件配置完成。

CP2102的挂起模式会在下述任何一种情况时出现:

1)检测到继续信号或产生继续信号时

2)检测到一个USB复位信号

3)器件复位

在挂起模式出现时SUSPEND和/SUSPEND信号被取消。需要注意的是SUSPEND和/SUSPEND在CP2102复位期间会暂时处于高电平如果要避免这种情况出现可以使用一个下拉电阻(10K欧姆)来确保/SUSPEND在复位期间处于低电平。

2.2 异步串行数据总线(UART)接口

CP2102和CP2103UART接口包括TX(发送)和RX(接收)数据信号以及RTS,CTS,DSR,DTR,DCD和RI控制信号。UA RT支持RTS/CTS,DSR/DTR和X-On/X-Off握手。

可以通过编程使UART支持各种数据格式和波特率。UART的数据格式和波特率的编程是在PC的COM口配置期间进行的。可获得的数据格式和波特率见表1。

2.3 内部EEPROM

CP2102内部集成了一个EEPROM可以用于存储由设备原始制造商定义的USB供应商ID﹑产品ID﹑产品说明﹑电源参数﹑器件版本号和器件序列号等信息[2]。USB配置数据的定义是可选的。如果EEPROM没有被OEM的数据占用,则采用上表所示的默认配置数据。注意,尽管如此,对于可能使用多个基于CP2102的器件连接到同一个PC机的OEM应用来说,则需要一个专一的序列号。

内部的EEPROM是通过USB进行编程的,这允许OEM的USB配置数据和序列号可以在制造和测试时直接写入到系统板上的CP2102中。Cygnal提供一个专门为CP2102的内部EEPROM编程的工具。同时还提供一个免专利费驱动Windows DLL格式的程序库。这个程序库可以用于将EEPROM编程步骤集成到OEM在制造过程中进行流水线式测试和序列号的管理的自定义软件中。EEPROM的写寿命的典型值为100,000次,数据保持时间为100年。为防止被更改USB描述符可被锁定。

3 应用

原设备的RS232接口仅使用TXD/RXD二个引脚的信号和地三条线。设备单片机8031与RS232接口之间电平驱动采用MAXIM公司的MAX202CPE,用光藕6N137隔离。

采用CP2102改造后接口的实际应用电路如图2所示。该电路已经通过制板和软硬件调试,证明是完全可行可靠的。

(1)进行串口扩展所需的外部器件非常少,仅需2-3只去耦电容器即可,REGIN的输入端加去耦电容0.1u F与1.0u F并连。CP2102的供电电源由计算机USB口提供,可加3只保护管,使用起来非常简易方便。

(2)电路仅使用CP2102UART总线上的TXD/RXD二个引脚,其余悬空。

(3)CP2102的UART总线上的信号能够被单片机直接识别,为确保数据收发的稳定性,避免通信过程中的干扰,用原隔离光藕,并将RST脚用4.7kΩ电阻挂到VDD脚。

(4)当CP2102转换器连接到主机后,必须根据操作系统选择相对应的虚拟串行口驱动程序。设备的原应用程序不必修改,可以像存取一个标准的物理串口一样访问这个虚拟串口,在端口设备中会有“CP2102 USB to UART Bridge Controller(COM×)”的新端口,(×随计算机的配置而异),此时说明芯片驱动程序已经安装成功。而本质上所有针对虚拟串口的数据通信都是以USB总线传输来完成的,但在设备一方,收发的是RS232数据。

4 接口通讯程序

计算机通过USB接口与单片机通讯如图2所示,计算机采用C语言的通讯控制函数,按串行口方式设置。单片机通讯程序如下所示[3]。此通讯程序在波特率9600~600间调试,通讯准确可靠。

5 结束语

使用CP2102开发RS232转USB具有电路简单,运行可靠,成本低廉,对原有的RS232传统器件设备的软件硬件无需任何的改动,就将原有的RS232设备升级为USB接口设备。CP2102已被应用到系列标准源产品之中,并且还应用在黑龙江省科技厅电量变送器校验装置项目中。

参考文献

[1]Silicon Laboratories.CP2102DataSheet[EB/OL]http://www.silabs.com,2005.

[2]Silicon Laboratories.CP2103DataSheet[EB/OL]http://www.silabs.com,2005.

主板上没有集成USB接口 第5篇

其实你大可不必更换主板,购买USB接口卡即可满足你的要求,不过,目前市场上常见的USB接口卡有针式插口和PCI插口两种,前者便宜后者贵。采用针式插口的USB接口卡必须满足下面要求:开机后进入CMOS,检查里面是否有“USBLegacy”选项,如果有,就表示你的主板上可以插接针式的USB接口卡来支持USB设备,

安装方法如下:请参考你主板的说明书,找到USB接口插针座(一般是10针或5针的插座),将购买的针式USB接口卡一端10针或5针插头插在主板上的USB接口插针座上,将另一端固定在机箱后部,然后就可以连接USB设备了。

USB接口打火机等 第6篇

现在,一提电脑,不是它的外形设计,也不是耐用性,而是上面的USB接口,这种即插即用的辅助设备成了办公族、好玩族的最爱:USB的电脑灯、USB的小电扇等。USB接口的发明者可能不会想到,他的这个小小的发明竟然会那么受人欢迎,对现代人来讲会那么重要,甚至连“瘾君子”们也打上了它的主意,于是,USB接口打火机出现了。这种USB接口打火机可以说是绿色打火机,因为它不使用煤油和液化气,且为无明火打火机,有些像汽车上的点烟器。USB接口打火机的一端与普通打火机的点烟处无异,而另一端则是一个可伸缩的USB接口,打火机内部为电池和电阻线圈。当你准备使用打火机时,就先将USB接口插到电脑的USB接口上取电,通过取电作用于打火机内部的电池以对电阻线圈进行加热,这时的打火机就可以点烟了。另外,USB接口打火机还内置了闪存芯片,不用它点烟时,可以作为一个U盘来使用。一机两用,是不是很酷、很实惠!

“惊醒”的拼图闹表

工薪族们上班最怕迟到,那可是钱的问题呀!想不迟到,一是早睡早起,二是晚睡上闹表。不过,人如果睡得很晚或很累时不愿意起,那早晨这个闹表怎么响也是白搭,急了将表一按就又会睡去,一准误事儿。但是,這里的“拼图闹表”会让你的“偷懒”到了头儿。这款“拼图闹表”与传统闹钟的功能基本一致,当然还是有些区别的。闹表是由两部分组成,第一部分是闹表的主体,像表盘、表芯等;第二部分是闹表主体的顶部凹处四块拼板构成的图形,这四块拼板是可拆卸并安装的。它是这样工作的:当你准备上闹表时,要先将四块拼板拆下,然后再上表并给闹表定好响铃的时间,到了时间闹表会自动响起,这时,你只有起床将先前拆下的拼板按正确的方式装入闹表顶部的凹处,这时表才会“安静”下来。如果不是正确拼装或不理它,闹表就会响个不停。怎么样,有了这么好的东东,你想偷懒可都没有机会了。对了,闹表采用两节电池驱动。

价格:约60美元

照亮黑夜的双向灯

大家都有走过没有电灯的黑胡同、黑楼道的经历,在黑黢黢的夜里,一个手电筒就是你的安慰,可是它的光太弱了,越想回家越走不快,因为一个手电筒很难前后左右都照到了,只能照了前边照脚下,不能走快了,否则出了意外在黑夜更不好办。如果有一个能照前方的路又能照脚下路的双向灯该多好?是的,还真有这样的灯。这种灯,与手电筒有一个外形的区别:手电筒是长的,而这种灯则是带有握手的圆环状,因此,按照它的外形来称呼这种灯,应叫双向三灯手电。双向三灯手电的开关位于圆环握手的上边,可用拇指轻松控制手电的开关。在手电的前面和侧下方共有三个照明灯。前面是一盏大灯,用来照亮行人前方的路况。在大灯的下面依照一定的角度还排列着两盏小灯,小灯射出的两道小光柱照着行人的脚下。三灯照亮了行人的前方和脚下两个方向,路亮了,再走夜路速度自然也就快了。

价格:约30美元

跳舞的音箱

音箱总是给人一种呆板的感觉。不过,跳舞音箱——这款造型独特的音箱绝对会颠覆你的这种观念。跳舞音箱虽是一个整体,但它的功用可以分成三个部分,顶部除了带有造型的两只细长的小耳朵,还有一个小孔,这个是音效孔;音箱的中间部分的大圆圈则是扩音器;底部则是三只呈三角布局的支脚。音箱采用三节电池供电,当播放音乐时,它能随着音乐的节奏“跳舞”,它能做的动作有扇动耳朵、坐下旋转、直立移动等,当你放摇滚乐时,它的舞动速度会快一些,这时你可要小心它从桌上“跳”到地上。音箱由于装饰了LED灯,音乐响起,灯光闪动,充满时尚活力。这款跳舞音箱可与MP3、MP4、iPod等播放器连接,并能随身携带。

产地:韩国

价格:约330元

USB无线钢笔鼠标

提起鼠标,就想起鼠标一头那长长的“尾巴”,这样的鼠标好用,但不方便。好了,这时电脑的USB接口又派上用场了,因为这里要向你介绍一种携带方便的鼠标——USB无线钢笔鼠标。USB无线钢笔鼠标的外形像一支普通的钢笔,它由两部分组成:笔帽和笔杆。当你准备使用这支钢笔鼠标时,先将笔帽摘下,笔帽的最外一头是个接收装置,插笔的一头则是USB插头,将这一头插到电脑的USB接口上,这时的笔帽就变成了无线接收器,然后使用者就可手持笔杆(笔杆本身也是一个接收感应器)在鼠标垫上滑动,它的工作方式与普通鼠标完全一样。不过,体积小、携带方便、时尚新颖虽是它的优点,但使用时间过长会感觉到手有些累。

产地:韩国

盛夏请多饮水

办公室只有一台饮水机,想喝水不但要走一段,而且还要几个人共用,甚至有时还要“抢水”,麻烦而不便。如果饮水机能放到自己的面前会是什么样?那是相当方便且专享。这里就给您介绍一种饮水机——桌面饮水机。这种饮水机为小猪造型,很可爱、精巧,完全可以放在你的办公桌上。桌面饮水机与我们生活中的饮水机使用原理和构造一样,只不过它用的是小了两号的专用水桶。不过,在没有专用水桶时,也可以用大号矿泉水瓶子来代替,同样可以喝上清凉的纯净水。这个“办公设备”是不是很实用?

产地:韩国

价格:约110元

摇摆的音乐沙发

这款音乐沙发的造型与贝壳相似,底座呈圆弧形,沙发的整体曲线十分优美。既然名曰音乐沙发,自然就和音乐有关系。因为,在沙发类似于传统沙发扶手的“人耳”两侧,各设计装置了一只高保真音箱,人坐在沙发里正好营造出逼真、环绕的音响效果。由于沙发的贝壳式设计使音量最大限度地局限在这个小空间里,一个人欣赏音乐时不会影响到周围的人。在沙发的底部内置有CD播放器,它可以与家庭音响或音箱相连接,成为一个独立的音乐播放器。想像一下,你坐在音乐沙发里欣赏着音乐,随着音乐的节奏轻轻摇摆,何等的惬意。这时你可能会想到数字时代就是好,时尚与舒适竟然能如此完美的结合。对了,除此之外,沙发还有一处能让我们感到亲切,那就是沙发的表面,因为它采用了中国花纹的织布。

基于VC的USB接口通信程序设计 第7篇

随着信息技术的迅速发展,数据采集和处理技术广泛应用于雷达、通信、遥测、遥感等领域。而在早期的计算机系统上通常使用串口或并口来发送数据,每个接口都需要占用计算机内部很多的资源,传统的接口一般采用PCI总线或RS-232串行总线。PCI总线有较高的传输速率,可达132 Mbit/s,也可以即插即用,但是它们的扩充槽有限且插拔不方便;RS-232串行总线连接比较方便,但是传输速率太慢,不易用于高速传送数据和传送大量数据。USB(通用串行总线)集中了PCI和RS-232串行总线的优点,具有方便的即插即用和热插拔特性以及较高的传输速率,因此,将USB技术应用于数据采集是非常合适的,可以达到数据采集系统的高速度处理。目前,USB已经推出了其协议的2.0版本,速率高达480 Mbit/s。

本文研发了一套基于USB接口的数据采集系统,整个系统的设计涉及到硬件、设备固件(Firmware)、USB设备驱动程序及客户应用软件。下面分别加以说明。

1 USB接口芯片

本文介绍的USB数据采集系统采用了Cypress公司EZ-USB FX2系列的CY7C68013-128AC芯片,它同时集成了8051微控制器和USB2.0收发器,在提高集成度的同时也加快了数据传输的速度。在系统中,CY7C68013-128AC既是数据采集控制器又是USB控制器,EZ-USB FX2系列有3种型号:CY7C68013-56PVC、CY7C68013-100AC、CY7C68013-128AC。该系列的芯片都是针对USB2.0的,并且与USB1.1兼容。其中,CY7C68013-128AC是128脚,TPQF封装,功能非常完善,与另外两种相比,主要是增加了16位地址总线和8位数据总线以及更多的IO口,因此,CY7C68013-128AC的可扩展性最好。图1是该芯片的内部结构图[1]。

2 USB的固件和驱动程序设计

2.1 固件

固件是储存在程序内存中的代码,它使得USB接口芯片与主机和外设中其他电路能够通信。Cypress公司给出了一个固件库和固件框架(Frame Works),均是用Keil C51开发的。固件库提供了一些常量、数据结构、宏、函数来简化用户对芯片的使用;固件框架实现了初始化芯片、处理USB标准设备请求以及挂起状态下的电源管理等功能。该框架不添加任何代码,编码后产生的 .HEX文件载入芯片就能与主机进行基本的USB通信,只是不能完成特定的任务。对于用户而言,主要的工作就是选择适当的传输方式,添加需要使用的端点(Endpoint),考虑到本系统要求实现一定数量数据的快速采集,并要迅速地将采集到的数据传输和进行分析处理,并且对数据的完整性要求较高,我们采用了块传输方式(Bulk Transfers),在TD-Init( )函数中添加初始化代码,亦即选择块传输方式和选择端点2、6分别为输出、输入端口,在TD-Poll( )函数中添加功能代码,以实现发送和接收数据功能,关键代码分别如下:

2.2 USB设备驱动程序

USB设备驱动程序主要是使操作系统能够识别USB设备,建立起主机端与设备端之间的通信,它们之间的通信是通过Windows提供的API函数实现的,这些函数可以控制显示器、处理信息、访问存储器、读写磁盘和其他设备。

图2是USB设备驱动程序的整体结构图。

USB设备驱动的整体结构包括如下5个主要部分:USB应用程序接口、USB设备驱动函数、USB中断服务程序、USB回调接口程序、USB标准事件处理程序。

2.2.1 USB应用程序接口

USB应用程序接口主要功能是对USB驱动器进行软硬件初始化、打开端口、关闭端口、读端口、写端口和端口控制操作。当设备驱动器装入系统设备表时,I/O系统就调用该应用程序接口。

USB应用程序接口的一个例程主要包含:

a)对 USB端口安装、初始化和硬件配置(USB_init( ))。初始化步骤为:将USB设备驱动器安装到I/O系统设备表中,获取USB控制器使用的中断号,初始化USB驱动器数据结构与USB端口状态寄存器,启动USB标准事件处理程序。

b)打开USB端口(USB_open( ))。USB_open函数允许应用程序打开一个USB端口和选择DMA数据传输方式。

c)关闭USB端口(USB_close( ))。USB_close函数允许应用程序关闭一个端口,并关闭DMA通道。

d)对USB端口进行读操作(USB_read( ))。USB_read函数允许应用程序从输出端口或控制端口读取一定量的数据。

e)对USB端口进行写操作(USB_write( ))。USB_write函数与USB_read函数功能类似,允许应用程序写数据到输入端口或控制端口。

f)对USB设备进行I/O控制操作(USB_ioctl( ))。

2.2.2 USB中断服务程序

USB控制器产生单一中断,多个端口共享。每个端口产生ACK、NACK/ERROR中断;输出端口产生接收零字节包或短包中断;控制端口0接收设置包时产生中断;USB控制器产生USB事件中断,如帧起始(SOF)、挂起、恢复和复位。先识别发生USB中断的类型以清除中断产生的条件,再读USB状态寄存器,获取当前配置、接口或帧起始时间戳状态信息,最后向USB控制器消息队列或回调函数的接收消息队列发送中断消息。

2.2.3 USB标准事件处理程序

USB驱动器初始化后,启动USB标准事件处理程序负责处理枚举过程和异步USB事件。事件处理程序使用控制端口0,直到完成枚举过程。当USB应用程序处于非活动状态时,除控制端口0以外端口均不可访问。事件处理程序在端口0上执行控制操作,响应USB标准请求,并负责通知USB应用程序枚举完成和接口活动状态,USB事件通过回调接口传递到USB外设应用程序。当对USB端口枚举操作完成,USB应用程序就可打开并使用USB端口。

3 客户应用软件

开发系统应用软件的底层,需要极好的兼容性和稳定性。对于广大用户而言,与系统的交互是通过应用程序实现的,因此,如何设计出运行效率高、界面友好、稳定性高的应用程序是至关重要的因素。VC++是开发Windows应用程序的主流开发工具,充分利用它的面向对象特性的C++和功能强大的MFC来开发专业级的应用程序,MFC是一个强大的、扩展的C++类层次结构,它能使开发Windows 应用程序变得更加容易,而且在整个 Windows 家族中都是兼容的。LabWindows/CVI是以ANSI C为核心的交互式虚拟仪器开发环境,它将功能强大的C语言与测控技术有机结合,具有灵活的交互式编程方法和丰富的库函数。本设计就是采用Visual C++6.0和LabWindows/CV提供的Graph控件来开发应用程序的,应用程序的主要功能有:打开/关闭USB设备,检测USB设备,实现向USB设备发送指定数量的数据。

下面是各部分的一些代码及说明:

1)查找、打开USB设备

2) 线程(Thread)

线程就是程序中单独顺序的流控制。线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其他线程共享该进程所拥有的全部资源。图3是线程的状态转换图。

线程被分为两种:用户界面线程和工作线程(又称为后台线程)。本程序设计主要使用工作线程来执行数据的读写操作等,它与用户界面线程的区别是不用从CWinThread类派生来创建,对它来说最重要的是如何实现工作线程任务的运行控制函数。

对于工作线程来说,启动一个线程,首先需要编写一个希望与应用程序的其余部分并行运行的函数,如Fun( ),接着定义一个指向CWinThread对象的指针变量*pThread,调用AfxBeginThread(Fun,param,priority)函数,返回值赋给pThread变量的同时启动该线程执行上述Fun1( )函数,其中Fun是线程要运行的函数的名字,亦即控制函数的名字,param是准备传送给线程函数Fun的任意32位值,priority是定义该线程的优先级别,是预定义的常数,可参考MSDN。

本程序设计中的关键代码如下:

4 实例

本例中使用了LabWindows/CVI的Graph图形显示控件,用来显示各类信号波形,如普通连续波信号波形、单载频矩形脉冲信号波形、调频(非线性调频)脉冲压缩信号波形和二相编码波形等。图4为各类信号波形图。这些信号均为数据采集系统的测试信号,可由DDS(直接数字频率合成器)芯片AD9858实现。

将图4中各类信号波形的频率、宽度、幅度和载频信号频率等参数读出来,分别进行一些计算,将计算出的结果通过USB口传送到DDS来产生波形;其他公共参数如“DDS时钟频率”根据实际采用的时钟频率设置。比如线性调频信号,一般关心的是一个信号的带宽、起始频率和调频斜率这3个值。这3个参数其实就是信号波形中的起始频率fs、终止频率f0和持续时间t,它们是等价的,现在把这些参数的值从测试信号波形中读出来,然后代入下式:DFRRW(8(f0-fs)/t)×231/SCLK[2]。式中:SCLK是DDS的时钟频率,它的值设为1 GHz;DFRRW为步进频率斜率控制字,它的值设为1,代表每8 ns更新一次。最后把计算出的DFTW(步进频率调节字)值通过USB口传送到DDS。

另外,二相编码的实现是通过控制DDS的POW(相位补偿字)来实现的,通过改变PS0和PS1的值,就可以改变信号的相位,而且相位的改变可以是绝对调相和相对调相。这里使用了4个工作组,其中2个工作组的POW为0,另外2个工作组中的POW为π。将上面测试信号波形中的参数读出来,代入POW=214W/360中,其中W为波形的相位值,再把计算出的POW值通过USB口传送到DDS即可。

5 结束语

本设计中使用的USB2.0作为接口部分,具有接口简单、传输速率高和即插即用等特点;应用程序充分利用VC的MFC框架的比较丰富的资源和LabWindows/CVI丰富的库函数,在进行数据采集和控制时,具有界面友好、兼容性和工作可靠、稳定等特点。经实际运用证明,本设计合理,使用方便,在数据采集过程中,很容易实现高速度传输数据并进行分析处理。

参考文献

[1]王奕.基于USB2.0的数据采集系统的设计与实现[J].电子工程师,2002,28(12):15-17.

[2]张永强,杨文革,张若禹.基于AD9858的线性调频源设计[J].国外电子元器件,2004(8):57-59.

[3]陈天华.面向对象程序设计与Visual C++6.0教程[M].北京:清华大学出版社,2006.

[4]胡晓军,张爱成.USB接口开发技术[M].西安:西安电子科技大学出版社,2005.

[5]黄维通.Visual C++面向对象与可视化程序设计[M].北京:清华大学出版社,2003.

USB应用程序接口 第8篇

关键词:USB,串行总线,OTG,WUSB

通用串行总线 (USB) 外设接口已广泛应用于所有个人计算平台及众多工业和基础设施平台。不过,与此同时,人们对给定应用适用的USB版本,如USB 1.0、USB 1.1、USB 2.0、On-the-Go (OTG) 、无线USB (WUSB) 等的规范还不太清楚。随着USB 1.1规范的发布,以及Microsoft操作系统为这一标准提供原生支持,这促使USB主机接口在PC中快速普及,同时也推动众多传统接口,如串行 (RS-232) 、鼠标和键盘 (PS-2) 及并行端口 (打印机使用的Centronix与IEEE-1284) 等,向这种新型通用接口标准过渡。随着可支持更高速度连接的USB 2.0规范的发布,USB外设的数量出现激增,从而大幅改善了用户的使用体验。本文的上半部分将讲述USB标准的发展过程,下半部分则将探讨其常见的应用,并介绍给定应用采用哪种USB标准最好。

为什么需要通用串行总线

为了充分了解为什么USB已成为我们所不可或缺的通用接口,我们就必须回过头来了解个人电脑早期的发展情况,即上世纪80年代的情况。对我们这些上了一定年纪的人来说,应该还记得当时最早的PC和DOS操作系统,既没有图形用户接口 (GUI) ,也没有万维网的存在。这种系统架构和使用模式仅支持很有限的“外设”。大多数计算机都不自带硬盘驱动器,更别说支持什么外部存储设备了。外部网络连接也不存在,甚至根本不知道什么是网络。唯一所需的人机接口设备就是键盘,而键盘有自己专用的连接端口;当时唯一常见的其它外设就是打印机,通常采用某种并行端口连接。随着Windows操作系统GUI的推出,人们需要另一种输入设备,也就是MAC操作系统已经使用的那种设备。这种最常见的人机互动应用点击设备就是鼠标。随着新的连接技术的出现,以及用户联网的要求,推动PC开始采用新的连接端口,即通常所说的串行端口或COM端口。随着时间的推移,大多数PC都针对键盘和鼠标提供专门的接口,即P/S-2端口。

并行、串行及P/S-2等上述常见的外设端口存在三大不足之处。图1.1 (PS/2与COM断口) 和图2.1 (打印机) 显示了机箱背后各种端口的典型特性。首先,这些端口不支持端口扩展,这限制了接入PC的外设数量。在使用这些端口的情况下,为了增加连接点,最终用户一是要购买支持所需端口的插卡;二是要打开机箱;三是要安装插卡;四是要关闭机箱;五是要重新配置系统,让系统识别新增的端口,避免出现冲突。其次,每种端口的性能有限。表1总结了上述每种端口的性能。第三大不足则在于缺乏标准连接方法。不同的外设制造商必须自己决定到底使用哪种端口,还要提供相应的驱动程序,确保硬件能在PC系统中使用,这也会让最终用户头疼。

USB的诞生

我们将时间快进到上世纪90年代的初中期,越来越多的用户希望增加PC的外设。在端口选择方面,如上所述,用户遇到了不少问题。此外,外设连接多种多样,这也给普通用户制造了麻烦。大多数人不知道使用哪种端口,也不了解各端口性能的局限性。在此情况下,部分业界领先企业在Intel的带领下,开始一起定义新的通用PC外设连接标准,旨在取代所有传统连接标准,解决以上不足和问题。

他们定义了一种简单的四线接口,其主要目的就是简化PC用户的使用。这种标准定义了一种点对点、主机到目标的架构。在规范中还包括了USB集线器设备的定义,这样就能支持总线扩展,能连接到更多的USB目标设备。这一标准制定的目的,就是简化外设与PC的连接,增加PC支持的外设数量,同时确保用户根本不必考虑到底该使用什么接口。此外,通过定义主机到目标的架构,目标实施的成本也能降低,因为大多数连接处理工作都由主机来完成,即通常用PC中的CPU控制进行。

USB到底是一种什么技术

如前所述,USB是一种以主机为中心的总线,换言之,主机必须启动包括接收和发送在内的所有传输。该规范定义了三种基本的设备类型:一是主机控制器;二是集线器;三是功能设备 (也称作外设或目标设备) 。以下我们将详细介绍这三类设备。除了这三种基本类型之外,我们还定义了另外两类设备。一是复合设备,即同时包括集线器和集成式外设的设备;二是组合设备,即同一设备集成多种类型外设功能的设备。

物理互连采用多层星形拓扑 (见图3) ,集线器位于每个星形连接的中心。每个连线段 (wire segment) 是主机到集线器、主机到功能设备、集线器到集线器、集线器到功能设备间的点对点连接。由于集线器时序限制和线缆传输时间,因此所允许的层数最多为7层 (包括根层 (root tier) ) 。请注意,在7层中,主机到任何设备的通信路径内只能支持5个非根层集线器。复合设备 (见图4) 包括两层,因此如果它连接在第7层上就不能工作。只有功能设备能在第7层上工作。USB系统中设备所用的寻址技术使一台主机最多可连接127台设备。这127台设备可采用任意集线器或外设组合。这127台设备中包括两台或更多复合设备或组合设备。

什么是主机控制器

在制定规范时,我们应确保任何USB系统中只有一台主机。USB规范不旨在作为一种网络架构,它的目的就是实现外设到PC的简单互连。主机可以是硬件、固件或软件的组合。目前电脑中最常见的USB主机实施方案是所谓核心逻辑芯片组的一部分。这种主机控制器设备采用PC CPU的计算功能,用系统存储器支持数据存储与移动,并通过PC操作系统实现整体实施。所有主机都必须在系统中集成根集线器。主机主要负责以下工作:

·检测USB设备的外接与移除;

·管理主机与USB设备之间的控制流程;

·管理主机与USB设备之间的数据流程;

·收集状态与活动数据;

·为外接的USB设备供电;

·USB系统软件;

·管理主机与设备间以下五个方面的互动情况:

o设备列举与配置;

o同步数据传输;

o异步数据传输;

o电源管理;

o设备与总线管理信息。

大多数操作系统现在还包括一系列“类驱动程序”,可便于外设的连接。类驱动程序使外设厂商能提供操作系统软件原生支持的产品,这样就节约了开发驱动程序的成本,并能为新的主机系统提供驱动程序,而且新的存储设备推出后,外设直接就能支持驱动程序。大多数操作系统支持的一些常见的类驱动程序,其中包括音频类、人机接口设备 (HID) 类、影像类、海量存储类、打印机类以及视频类等。目前许多厂商都利用上述类驱动程序来实现产品功能,不过他们同时也提供定制驱动程序或应用软件,以支持类驱动程序规范之外的更多功能。

什么是集线器

最简单的方法,就是将USB集线器设想为一种分离器和中继器的统一体。集线器提供USB设备与主机之间的电子接口。集线器直接负责支持USB的众多属性,给用户提供友好的界面并避免遇到复杂的使用问题。除为主机实施提供接口外,集线器还能够提供更多接口 (充分发挥分离器功能) ,而且还能将上游端口 (连接到主机) 上的数据传输到下游端口 (连接到目标设备) ,从而发挥中继器的作用。集线器负责检测下游端口上的连接和断连事件,并向主机报告有关信息。集线器必须能支持下游端口上连接的任何速度规范的各类USB外设 (详见以下有关内容) 。集线器还必须能够检测并恢复由于目标设备错误状态 (error condition) 造成的任何总线故障。

此外,集线器还负责管理下游端口的供电,向主机报告供电问题,并向用户发出通知。有关规范制定了两种集线器供电类型,一种是总线供电;一种是自供电。

总线供电集线器从上游端口获得所有电力,不过加电时只能从上游连接获得最大100m A的电流,经过配置,最终获得的电流不超过500mA。全面配置后,要在集线器、不可移除的功能设备 (复合设备) 及外部端口间分配电力。总线供电集线器需要为每个下游端口提供100mA的电流,这样,在总线供电集线器上,能给下游供电的外部 (用户可以直接使用的) 端口不能超过4个。由于每个端口电流为100mA,共有四个端口,那么下游连接的可用电流就是400mA。要是再增加第五个下游端口的话,这个端口也需要100m A的电流,这就造成集线器本身没有电流可用了。总线供电集线器可以提供4个外部下游端口以及一个或更多内部端口,但前提是集线器本身以及连接到内部端口上的所有功能设备的耗电总和不到100mA。

自供电集线器从局部电源获得电力,比如墙上变压器或其它局部电源。其电力并不来自上游连接。自供电集线器可从上游端口获得最高100mA的电流,这样在集线器其它部分断电时,该端口也能发挥作用。自供电集线器应为每个下游端口提供500mA的电流。尽管规范并没有限定自动电集线器可支持的下游端口数量,但在实践中,通常不超过7个端口,这主要是出于供电方面的考虑。7端口集线器的电源电流必须超过3.5A (共7个端口,每个端口电流500mA) 才能确保集线器正常工作。

什么是外设

我们大多数人都是通过USB外设熟悉USB的。目前常见的USB外设包括键盘、鼠标、打印机、闪存棒、外部驱动、便携式音频播放器和数码相机 (DSC) 等。就规范而言,外设可分为执行特定功能的逻辑或物理外设。从最基本的角度说,外设可以看作是单个的硬件组件,如闪存设备。从高级角度说,外设可以是执行功能的一系列硬件组件,如包括键盘、生物识别指纹读取器和滚动设备在内的人机接口设备。

规范定义了外设支持的四种数据传输。控制传输用于为主机提供有关外接设备类型与功能的信息。所有设备都必须支持控制传输。另外三种传输类型分别为中断传输、批量传输及同步传输,可根据应用的数据处理方式进行选择。如果外设需要被主机定期轮询,检查是否需向主机发送数据,那么就应采用中断传输。键盘、鼠标和游戏杆就是采用中断传输的典型设备;如果数据完整性非常重要,而不太在意数据时延,那么就要用批量传输在主机系统与外设之间传输数据。此外,这种传输还支持纠错功能,在检查到错误时可以重新传输。打印机、扫描仪和存储设备都是采用批量传输机制的典型设备;同步传输用于“实时”数据的转移。在这种情况下,数据流比数据的准确性更为重要,同步传输不支持纠错和重新传输功能。网络摄像头、扬声器和扩音器等是采用同步传输机制的典型应用。

与集线器一样,这种规范也定义了两种通用外设电源类,分别为总线供电外设和自供电外设。总线供电外设进一步分为低功耗总线供电功能设备和高功耗总线供电功能设备。在两种情况下,设备所有用电均来自上游连接。低功耗总线供电设备随时都会获得100m A电流,而高功耗总线供电设备可在配置前获得100mA电流,在工作期间则能得到规范要求的最大500mA电流。自供电功能设备的条件限制与自供电集线器一样,其电力并不来自上游连接。自供电功能设备可从上游端口获得最高100mA的电流,这样在功能外设其它部分断电时,该USB接口也能发挥作用。所有其它电力都用外部电源提供。此外,外设必须支持低功耗休眠模式,使电流消耗低于500uA,这样计算机就能将设备从挂休眠模式中唤醒。

近期,支持USB功能的电池供电设备广泛推广,主要是便携式媒体播放器大幅流行,这就向USB电源管理提出了新的挑战。如果设备通过USB连接充电的话,那么这一问题就会变得尤其突出。电池供电设备必须遵循标准外设的规则。这种设备如何报告自己,将决定它们能从上游连接获得多少充电电流,也包括能否支持休眠模式。这方面的技术挑战甚至高过电池完全放电后的设备需要高电流来启动充电方面的难题。

USB 2.0是一种规范,而不是指速度本身

现在,您已经了解了USB规范发展的一些历史背景,接下来我们不妨来看看该技术目前的发展状况。目前常用的标准为USB1.1、USB 2.0、USB-OTG、WUSB和OTG。在许多情况下,这些不同标准会使工程师和最终用户产生混淆。最早的USB 1.0规范发布于1996年1月,定义了两种设备速度,即1.5 Mbps的低速 (LS) 和12 Mbps的全速 (FS) 。该规范在1998年7月经过修订,随后发布了USB 1.1规范,实现了较大升级改进。2000年4月,该规范又进行了大规模更新,随后发布了USB 2.0。这一版本也是现行版本,全面超越了USB 1.1。USB 2.0的优势在于,它能全面向后兼容于USB 1.1设备,同时它也增加了需求极高的第三种设备速度,即480 Mbps的高速,同时也能继续支持低速和全速模式。2003年7月,USB OTG文件发布,定义了面向便携式电池供电设备的新一类设备。最后,于2005年5月,发布了Wireless USB规范。

USB应用厂商论坛 (USB-IF) 建立了认证徽标许可证计划 (Certified Logo License Program) ,确保提高最终用户的使用体验。为了有权使用认证徽标,设备必须通过USB-IF的认证测试,其中包括规范兼容性测试和操作性测试。对标准的USB设备来说,共有两种认证徽标,第一种 (见图4) 用于最高数据传输速度支持低速或全速标准的设备;第二种 (见图5) 用于最高数据传输速度支持高速标准的设备。

USB OTG是USB 2.0规范的补充标准,定义了一种新的设备类型。这类设备旨在扩展外设产品的功能,增加了有限的主机功能。如这一标准的名称所示,该规范的最初目标就是面向便携式设备,让最终用户在没有电脑的时候也能实现数据共享。比方说,在两部PDA或手机间共享联系人信息,在DSC和拍照手机之间共享照片,或者直接从DSC或PDA进行打印。

和标准的USB一样,OTG也是一种点对点、以主机为中心的总线,不旨在成为一种点对点网络连接。OTG产品连接到PC等标准的USB主机时,必须作为标准的外设工作。OTG补充标准要解决的主要问题,就是设备在作为主机时能发挥什么作用。就像标准的USB主机端口 (或下游集线器端口) 一样,OTG主机必须提供电力。不过,所需的供电电流仅限于8 mA。与PC中的标准USB主机不同,OTG设备不能为未识别设备简单添加驱动程序。因此,OTG设备必须提供所谓的目标外设表,这样,设备制造商就能明确到底支持哪些设备。该规范还要求提供某种消息显示功能,这样就能告诉最终用户是否插入了不能支持的设备,该设备不能工作。这种消息可以通过简单的LED显示,也能以复杂的文本方式显示。此外,OTG补充标准还定义了两种新协议。主机交流协议 (HNP) 定义了主机和设备角色间动态转换的方法,而会话请求协议 (SRP) 则提供了主机设备自行决定总线供电开关的方法。

与标准的USB一样,USB-IF也为OTG设备提供了认证徽标许可证计划 (Certified Logo License Program) 。图6显示了最高数据传输速度支持低速或全速标准的OTG设备认证徽标,而图7则显示了支持高速OTG连接的设备认证徽标。

Certified WUSB是USB规范的最新版本。它定义了一种无线接口,可以将有线USB连接技术的高速和安全性与无线技术的易用性相结合。Certified WUSB将通过Wi Media Alliance开发的常见的WiMedia MB-OFDM超宽带 (UWB) 无线电平台来支持稳健的高速无线连接。过去几年来,已经推出了一些WUSB设备,他们采用专有的低带宽连接方式,主要面向键盘和鼠标等HID设备。这种连接与USB-IF开发和推广的Certified WUSB规范并不相同。此外,近期媒体还介绍了一种极具竞争力的UWB技术,正作为无线缆USB技术得到推广宣传。不过,这种技术也和Certified WUSB不同,需要采用一种极具竞争力的无线电技术。这两种实施方案互相之间并不兼容。UWB技术提供了一种高带宽、低成本、低功耗的解决方案,设备能够实现小型化。Certified WUSB的优势则在于:

·速度:

o 3米连接距离时速度高达480Mbps

o 10米连接距离时速度高达110 Mbps

·电源管理:

o支持休眠、聆听、唤醒和节能模式,确保只有用户建立连接时才耗电。

·安全性:

o通过内置协议和认证程序实现最佳数据安全性。

o在传输过程中进行数据加密。

·易用性:

o像有线USB连接一样易于安装与设置,而且省去了线缆连接的繁琐。

·向后兼容性:

o与所有传统有线USB设备实现互操作性。

USB-IF也提出了Certified WUSB产品的认证徽标许可证计划,最终用户通过该徽标可识别出通过互操作性和兼容性认证的产品。图8为WUSB徽标。

哪种USB适合您的需要

USB应用程序接口 第9篇

Universal Serial BUS (通用串行总线) 简称为USB。USB接口的即插即拔及快速的传输速率给大家带来了诸多便利, 进而使带USB接口的设备越来越普及。USB接口使用频率得到提升的同时, 其在日常实际应用中也出现了不少令人头疼的问题。曾有人针对供电不足问题进行了分析, 并得出了结果及解决办法。本文将在前人经验的基础上, 运用综合分析的方法, 更加直观详细地对使用USB设备过程中遇到的问题进行分析, 并给出解决办法。

1 USB接口分类及识别

1.1 USB接口分类

一般情况下, USB接口有如下几种情形, 从左至右依次为: USB公口 (A型插头) 、 USB母口 (A型插座) 、USB公口 (B型) 、miniUSB公口 (B型插头) 、 miniUSB公口 (A型插头) , 如图1所示。

通常情况下, USB A/B型公口/母口各引脚是按如下方式进行定义, 如表1所示。

USB A/B型公口/母口各引脚分布图如图2-图5所示。

(判断方法:一般看公口, 梯形对着自己, A型USB公口从右数起, B型的则是左起顺时针转个圈) 。

Mini-USB各引脚以如下方式进行定义, 如表2所示。

Mini-USB B型公口/母口各引脚分布如图6、图7所示。

(判断方法:一般看公口, 梯形对着自己, A、B型的Mini-USB公口都从左数起) 。

其中ID脚在OTG (on-the-go) 功能中才使用。由于Mini-USB接口分Mini-A、B和AB接口, 如果系统仅仅是用做Slave (从设备) , 那么就使用B接口。系统控制器会根据ID脚的电平来判断是什么样的设备插入, 如果是高电平, 则是B接头插入, 此时系统就做master mode (主模式) ;如果是低电平, 则是A接口插入, 然后系统就会使用HNP (主机通令协议) 对话协议来决定哪个做Master mode, 哪个做Slave mode。

1.2 USB接口问题的识别

一般情况下, USB接口可对外设提供5V、500MA的电源, 但由于主板制造厂商设计理念的不同, 其供电方式也不同。在以往出现过高故障率的停产主板中, 经典代表有如下几种方式:

①鼠标、键盘、前后置USB接口供电方式相同, 由一只三极管在+5V电源下为接口供电, 供电方式可控, 电流有限制。如:微星845G MAX (MS-6580) 、Gigabyte技嘉GA-8IE533主板其接口供电通过三极管供给, 每个接口的电源端都有保险电阻;②鼠标、键盘、前后置USB接口供电方式相同, 并且可由跳线选择。如精英Supox EP-3PTA主板, 其供电可由跳线JP4进行改变, 3脚接PW1的+5V , 1脚接PW1的+5VSB (计算机电源的辅助电源) 。主板上的标注为:1-2允许键盘开机, 2-3禁止键盘开机。采用这种供电方式时, 使用移动硬盘的USB接口扫描仪时, 在JP4为1-2时该设备可能不能正常使用。类似还有EI8PA-T;③键盘、鼠标、前后置USB接口一起供电, 并由跳线可变。如ECS精英P61PAT主板, 供电跳线为JP3, 1端经Q28与电源+5V相连, 3端直接与+5V相连;④键盘、鼠标与前后置USB接口不一起供电, 键盘和鼠标通过保险电阻直接与电源+5V相连, 而前后USB接口由三极管供电。如捷波PR22-S;⑤键盘、鼠标、前后置USB接口供电直接与电源+5V相连。如微星 (MSI) MS-6309NL等。

正是由于这些主板设计理念的关系, 其供电方式不同, 对采用USB接口的移动设备提供的电流也不同, 从而造成了供电不足, 其表现为如下现象:①计算机能够自动识别USB设备, 在该设备驱动安装正确无误的前提下, 仍无法访问该设备, 具体表现为找不到该设备的标识;②计算机能够自动识别USB设备, USB设备中的内容能够被访问, 但访问该设备时, 明显感到访问该设备使机器的运行速度下降, 甚至会出现死机、报错等现象;③计算机不能自动识别USB设备, USB设备指示灯状态不正常或不亮, 甚至USB设备发出异常声响, 如移动硬盘;④不接入USB设备, 计算机可以正常运行, 一旦接入USB设备, 立即出现死机、蓝屏等现象。以上现象, 即可以断定为USB接口供电不足。如果手头上工具齐全, 可以使用万用表量测USB接口引脚1与引脚4/5的电压, 看是否为5V, 这样就可以更加直观地判定接口供电不足。

此外, USB2.0规范白皮书上明确指出, USB接口可对外设提供最大电流500mA, 但并未对USB 1.0规定最大电流。中国大陆地区较早生产的90%的主板未加保险丝, 因而也会有大电流, 后来就变成了一种大电流的规范, 如一些曾经出现的USB硬盘盒, 它们就不适应低电流工作, 不能视为供电不足问题。

USB的数据传送有4种传输方式:控制 (Control) 、同步 (isochronous) 、中断 (interrupt) 、大量 (bulk) 。通常, 所有传送方式下的主动权均在PC机方, 一般情况下, 供电正常, 数据传送不会出现什么问题, 除非数据线/引脚断路, 导致无法识别或传送数据, 此种情况下, 使用万用表测量即可判断。

2 USB接口解决方案

针对所出现的问题, 有以下5种解决方案:

(1) 外接电源法。对于有自带外接电源的USB设备, 如耗电量大的移动硬盘, 可以直接使用其外接电源。

(2) 主板跳线法。有的主板USB接口的供电可以通过跳线实现供电不足。如前面所提的Supox EP-3PTA主板。如果主板无此功能, 使用此法就比较困难。不过, 若DIY能力比较强的话, 可以通过改变USB接口的供电途径来实现, 但有一定的风险, 不建议使用。

有3种方法可以实现改变USB接口的供电:①可控电路间接供电。当外设有故障短路时或在拔插时, 可以自动切断此路的供电, 不会造成其它故障, 缺点是所供电流受到限制, 不能使用耗电量大的外设;②直接使用+5V电源供电。使用此种方法的优点是对外设提供电流大, 缺点是当外设有电路故障短路或者在拔插时出现意外情况时, 可能会造成其它意想不到的损坏, 且故障面积会扩大。现今的电源普遍带有保护功能, 主板上有保护电阻, 高档主板上的保险电阻也是可恢复型的 (当电流超过其额定值时, 保险电阻熔断, 当线路故障排除后, 保险电阻恢复导通) ;③副电源直接供电。缺点是电流有限制, 不能为耗电量大的外设供电, 但在关机后可为外设供电。

(3) 替换接口法。如果有多余的键盘或鼠标接口, 就使用移动硬盘自带的键盘或鼠标接口, 从键盘或鼠标接口那里获得部分电流以保证正常工作。

(4) 减少负载法。此方法最为简单, 就是将正在使用的USB设备保留, 其它设备均拔出, 降低使用的功耗, 这样可以让主板的USB端口单独为此USB接口服务, 从而保证该设备的正常运行。由于目前的新型主板均为两个USB接口一组, 每一组使用单独的USB设备位于同一组的端口上时, 那么当前USB设备从主板上获得的功耗就会被分担, 该接口USB设备可能会受到影响, 如果发现该接口设备运行不正常, 就要立即将此设备插到其它组中的USB接口上。

(5) 检查设备USB电路。此法要求比较高, 必须要具备相应的知识, 对于初学者, 可以直接使用万用表, 按照USB A/B、Mini-USB各引脚引义图进行测量。若为断路, 可以进行简单的自行焊接;若损坏程度较大, 不建议初学者单独拆修, 最好办法为送去修理。

参考文献

[1]贾培武.USB设备不能使用为哪般[J].大众软件, 2009 (10) .

[2]龙海升.什么是优盘[J].无线电, 2008 (6) .

USB应用程序接口 第10篇

关键词:USB接口,DSP,程序下载软件

1 引言

USB是一种新型的计算机总线接口技术, 随着计算机处理数据的能力越来越强, 我们对数据的传输速率也要求越来越高, 而USB的诞生, 也有助于解决数据传输速度慢的难题。USB设备的开发, 我们需要对USB总线结构的每个部分进行代码的编写和整合之后, 再组合成一个整体的开发。要谨慎搭建基于USB的开发环境, 所选用的开发环境最好具有针对USB的软件和硬件的调试, 因为在开发过程中涉及到USB固件和驱动的开发, 应用软件的设计和硬件调试平台。最后要进行USB设备综合调试, 测试所有的功能是否完善以及总结所需要修改的地方, 进一步完善, 完成USB设备的开发。

2 硬件设计

2.1 DSP芯片

本文所选用的DSP芯片为TMS320C6713, 其时钟频率高达300MHz, 是浮点运算能力最强的一款32位高速浮点型DSP芯片。

HPI-16是HPI接口的升级增强版, 是该芯片的主机口, 最重要的特征是DSP的整个片内空间可以被主机访问。HPI接口与主机的数据通信主要通过HPI控制器 (HPIC) 、地址寄存器 (HPIA) 、数据寄存器 (HPID) 和HPI内存块来实现。

2.2 USB芯片

本文所采用的USB芯片是CYPRESS公司的EZ-USB FX2系列芯片CY7C68013, 特点是主机上就存储这其芯片固件, 这样容易使代码直接通过网络升级。它的休眠模式比较特殊, 具有低功耗的效果, 减少资源的损耗, 有利于更好的保护器件, 避免长时间通电遭到损坏。

2.3 硬件电路连接

本设计采用CY7C68013-128PVC与TMS320C6713的HPI模块接口相连接, 工作模式设置为GPIF模式。硬件电路连接如图1所示。

3 软件设计

3.1 USB固件程序设计

固件程序的开发环境选择KEIL C51。固件函数库提供了许多函数, 该函数都与USB协议相关, 可以在不熟悉USB协议的情况下, 利用固件框架进行所需功能的程序编写。寄存器初始化、电源管理、重枚举等功能已经设计完整, 可以直接使用。固件程序流程框图如图2所示。

整个执行过程是一个相对简单的循环过程。第一步, 优先初始化内部变量;然后, 调用TD_Init () 函数进行寄存器的初始化工作;TD_Init () 函数执行结束之后, 使USB接口处于位配置状态, 并开中断, 检测端口0是否接受到一个SETUP包, 否则端口0执行延时重枚举操作。

初始化函数TD_Tint () 函数负责完成初始化芯片的寄存器, 设置适当的参数, 通常在固件运行时开始调用。该函数首先CPUCS寄存器进行初始化操作, 设置48MHZ的时钟频率;然后分别配置端点2作为IN输入bulk状态、端点6使其工作于OUT传输状态, 而端点4、8暂时没有使用, 所以设置为无效状态;之后调用Gpif Iint () 函数, 以初始化GPIF的相关寄存器, 进入工作模式。

调度函数TD_Poll () 函数在固件代码中循环执行, 以负责完成用户指定的功能。该函数首先判断检测传输是否完成、CY7C68013的GPIF的接口是否处于空闲、端点2缓冲区是否为空闲状态, 当这些条件均成立时, 将马上启动GPIF写传输。另外, 在USB高速传输状态时, GPIF能够一次读取4096字节的数据, 适合处理庞大的数据;而在USB全速传输时, GPIF一次只能读取64字节数据, 处理速度比较慢, 适宜处理数据量比较小的情况。

TD_Suspend () 函数, 从固件框架中可以看出, 该函数只有在USB处于空闲状态是, 才执行。在例程当中, 只有简单的一句return TRUE代码, 开发者可以根据实际需要, 添加相应的代码以完成相关的功能, 还可以配置设备的工作状态, 一般设置为低功耗状态, 以减少对电源的消耗, 其最终结果返回真值, 反馈给用户。

TD_Resume () 函数, 当执行完TD_Suspend () 函数之后, 若返回的是真值, 程序会进入挂起状态, 然后开始执行TD_Resume () 函数, 该函数也只有return TRUE一句代码, 当外部需要执行唤醒中断或者USB总线需要执行数据传输等操作, 就会对处理器进行重新启动, 开始下一个循环。

3.2 应用程序设计

使用Lab Windows/CVI支持的VISA的库函数和堪比VC++的控制件库能够轻松设计出美观且符合用户要求的应用程序界面。用Lab Windows/CVI设计的应用程序界面, 如图3所示。

按钮是界面设计中常用到的控件, 该应用程序主要由打开设备、复位和程序下载三部分组成。

4 总结

本文设计了USB接口与DSP系统的结合使用, 设计出一套基于USB接口的DSP程序下载软件, 提供了一种新的数据传输解决方案。总体上, 整个软件基本能完成打开设备、复位和代码下载的功能。

参考文献

[1]张冠英.基于USB2.0的DSP与PC通信接口的设计与实现[D].内蒙古大学, 2010.

[2]刘向宇.DSP嵌入式常用模块与综合系统设计实例精讲[M].北京:电子工业出版社, 2009.

为你的USB接口请个保镖 第11篇

USB控制大师是专门为防止机密文件外泄而开发制作的,软件采用最新的USB2.0驱动,安全可靠、稳定性强。同时软件还具有对USB设备的自动识别能力,此外也有对硬盘加密、对上网进行控制、系统安全设置等功能,除非拥有管理员的密码,否则不能轻易卸载。该软件能禁止身份不明的U盘,而管理员的U盘则不受限制,管理员只需要在管理端点几下鼠标,所有电脑的控制就都掌握在了自己手中。

安装完毕重新启动计算机后,按“Ctrl+Alt+F12”组合键,打开USB控制大师2009登录界面,在对话框中输入软件管理员的初始登录密码:123,单击“确定”后进入操作界面。

在操作界面中我们可以看到USB控制大师的主要功能选项,包括“禁止USB存储设备”、“USB存储设备只读”、“禁用所有USB设备”、“禁止聊天工具”等。选择需要禁止的项目后,单击“应用”按钮即可。

在前面我们提到运用此软件管理员的U盘是不会受到限制的,我们是通过对U盘进行自定义设置实现的。单击“允许使用自定义的U盘,请点右边的按钮进行操作”选项后的“U盘列表”按钮,进入U盘列表界面后软件会自动检测出当前插入USB接口设备的ID,单击“加入”按钮,该U盘便被加入到允许使用的U盘列表中了。

除了对U盘进行自定义,我们最好对硬盘驱动器也进行加锁保护。单击“硬盘驱动器加锁保护”按钮,进入硬盘驱动器加锁保护界面后选择要加锁保护的硬盘分区,选择完毕单击“应用”按钮即可。

如果想要更好地保护自己的机密文件,我们还需要对系统进行更高限制的设置。单击“系统高级限制设置”按钮,进入高级限制设置界面。在此操作界面中,我们可以对开机菜单和电脑桌面的图标进行隐藏。

通过以上操作,我们就完成了对USB控制大师软件的安装与设置,接下来为大家介绍一下怎样使用USB控制大师软件对USB设备的使用情况进行监督。

进入操作界面后我们就可以看见在界面的最下端,有“修改密码”、“USB日志”、和“关闭窗口”三个按钮。

单击“修改密码”按钮,我们可以更改登录密码,在旧密码对话框中输入初始密码:123。

单击“USB日志”按钮,可进入USB日志界面,在这个界面中我们可以查询各个日期的登录用户、USB标识、事件内容、操作事件等具体情况。

USB应用程序接口 第12篇

随着USB2.0规范的推出, USB总线的最高数据传输速率可达到480Mbit/s, 这进一步延伸了它的使用范围, 越来越多的设计者在设计嵌入式系统或者计算机外围设备时开始采用USB总线进行数据传输, 为了保证高的数据传输速率, 许多USB接口芯片提供了直接存储器存取 (D M A) 方式, 通过使用DMA方式, 能使大量数据在计算机外围设备与USB接口芯片之间直接传输, 从而保证USB总线上数据的吞吐量。本文以Philips公司 (现独立为NXP公司) 的ISP1581USB接口芯片为例, 介绍USB接口芯片的DMA传输应用。

硬件电路设计

ISP1581是USB2.0接口芯片, 它有7个IN端点, 7个OUT端点和1个固定的控制IN/OUT端点, 内部集成8K字节的多结构FIFO存储器, 特别是它有一个灵活的高速D M A接口, 大大增加了数据的吞吐量, 其内部DMA组成框图如图1所示。

D M A硬件由D M A接口及D M A控制器组成, 通过初始化D M A相关寄存器及发送DMA命令可以选择D M A的工作方式, 即两字节的通用DMA传输或者三字节的IDE规范传输, 本文主要介绍通用DMA的应用, 通用D M A有两种工作方式, 即主机D M A (M D M A) 和从机D M A (G D M A) 方式, M D M A时芯片内的D M A控制器作为主控方, 由它产生D M A传输需要的控制时序, G D M A时, 需要在外部单独设计一个D M A控制器 (外设D M A控制器) 并作为主控方, 并由它产生传输所需控制时序。由于D M A控制器和USB内核使用的是同一个FIFO (内部R A M) , 所以D M A控制器接收到D M A命令后, 可直接控制数据从内部R A M传送到外部D M A设备或从外部D M A设备传送到内部RAM。图1中各信号的含意如下:

D0~D 1 5:D M A传输数据线, 双向。

D R E Q:D M A请求信号, G D M A时输出, M D M A时输入。

D A C K:D M A应答信号, G D M A时输入, M D M A时输出。

D I O R:D M A读信号, G D M A时输入, M D M A时输出。

D I O W:D M A写信号, G D M A时输入, M D M A时输出。

EOT:GDMA传送终止信号, 输入, 主要用在G D M A方式。

其它信号主要用在IDE规范传输中, 在此不作介绍。由于G D M A方式数据传输速度更高且使用灵活, 所以下面主要介绍G D M A的应用。

图2是GDMA应用框图, 是某自动测试设备数字I/O板的一部分, 图中ISP1581外接单片机 (AT89C55) 作为控制器, 单片机同时也是该板的控制核心, 存储器选用256K×18bit双口RAM (IDT70V631) , ISP1581采用G D M A方式读写该双口R A M, 外设D M A控制器在可编程器件FPGA中实现。

系统的工作过程是:当主控计算机需要和数字I/O板大批量交换数据时, 向ISP1581发出批量传输命令, 批量传输命令中包含了数据的传输方向, 数据个数等信息, ISP1581接收到命令后, 通过中断方式通知单片机中的固件读取该命令, 固件完成对D M A的初始化, 如选择D M A端点, 初始化D M A计数器, 发送DMA命令等, ISP1581内部的DMA控制器在准备好后, 将发出D R E Q信号给外设D M A控制器, 外设D M A控制器接收到DREQ信号后, 做好数据传输准备, 回应一个DACK信号, 然后产生DIOR或者D I O W完成D M A传输。

外设D M A控制器是在F P G A中完成设计的, 要正确设计G D M A控制器必需了解GDMA模式的工作时序 (见图3) 。图中已经初始化DREQ高有效, DACK低有效, DIOR和DIOW低有效, Tcy1为D M A读写周期, 最快为12.8MHz, 本设计使用10MHz。Tsu3为D I O R/D I O W有效前的DACK建立时间, 最小可以为0。

外设DMA控制器电路设计如图4所示, 当固件对ISP1581完成初始化并发出DMA传输命令后, ISP1581内部的DMA控制器在准备好传输后发出DREQ信号 (高电平) , 对该信号反相后可作为DACK信号 (低电平) , 图中R/信号为DMA读写控制信号, 可以由固件控制产生, 该信号和D A C K及1 0 M H z时钟信号相或后产生D I O R及DIOW信号。例如GDMA工作于写方式, 数据从ISP1581内部RAM传送到外部双口R A M, 控制器在接收到有效的DREQ信号后, 经过反相, 作为DACK信号回应ISP1581的DMA控制器, 这时候固件通过控制R/为高, 该信号反相后与D A C K及1 0 M H z时钟相或产生DIOR, 控制数据从内部RAM传送到外部双口RAM。双口R A M的控制信号及地址产生电路设计较为简单, 可以结合D I O R及D I O W信号来产生。

软件设计

U S B固件中实现D M A传输的相关程序包括初始化程序及传输控制程序, 其信息处理流程如图5所示。

首先对D M A进行初始化, 即设置一系列相关寄存器:D M A配置寄存器、D M A硬件寄存器、D M A中断使能寄存器、D M A中断源寄存器、D M A端点寄存器、D M A传输计数器寄存器、D M A命令寄存器等, 初始化程序如下:

初始化完成后, 接收PC机发来的D M A传输命令, 该命令包含了数据的传输方向, 数据个数等信息, 然后设置DMA传输标志, 主程序在检测到该标志后, 调用DMA传输子程序, 在该子程序中, 根据DMA传输方向情况分别进行D M A读写处理, 在发出D M A读或者写命令前还需要对D M A端点寄存器、DMA传输计数器寄存器进行初始化, 完成这些工作后, I S P 1 5 8 1 D M A控制器将向外设D M A控制器发送D M A传输请求信号DREQ, 外设在准备好传输后, 返回应答信号D A C K, 然后启动外设D M A控制器开始DMA传输, 一次DMA传输最大1 0 2 4个字节, 一次是否传输完成通过检测DMA中断寄存器的标志位DMA_XFER_OK及EXT_EOT进行判断, DMA_XFER_OK为1, 表明D M A传输结束, E X T_E O T是强行结束GDMA传输的外部信号, 本设计没有使用, 已经固定接为高电平 (无效状态) , 如果需要传输的数据大于1024字节, 则需要多次传输才能完成, 在传输完成后清除DMA传输标志。

结语

通过采用D M A传输方式, USB在传输不大于1024字节数据时传输速度达到10M字/秒, 但当需要传输的数据远大于1024字节时, 由于DMA传输需要固件支持, 实际的传输速度有所下降, 设计中可以通过提高单片机的工作时钟来改善USB的传输速度。本设计已经成功应用到某测试设备中, 提高了系统的数据传输速度, 达到设计要求。

摘要:在USB接口和USB外设之间使用DMA方式传输数据, 大大提高了USB传输数据的吞吐量。本文介绍了基于ISP1581USB接口芯片的DMA传输应用。

关键词:ISP1581,USB2.0,DMA控制器,固件

参考文献

[1].Philips Semiconductors公司, ISP1581Programming Guide[EB/OL], (2002年3月) .http://www.flexiusb.com

[2].广州周立功单片机发展有限公司, ISP1581:USB2.0高速接口器件, [EB/OL].http://www.zlgmcu.com

[3].刘瑰、马鸣锦、朱鸿宇, 基于USB接口芯片的DMA应用, 电子技术, 2004, (2)

[4].孙涵芳、徐爱卿, 单片机原理及应用, 北京航天航空大学出版社, 1996

上一篇:非线性地震响应论文下一篇:美术欣赏的理性方法