摘 要:通用串行总线(USB)是一种简单的计算机外围接口标准。
它具有即插即用、扩展方便等优点,已成为计算机必备的一个接口。本文简要介绍USB总线的功能、拓朴结构及其数据传输过程,并举例说明USB接口的实际应用。
关键词:通用串行总线 USB接口 外围接口标准 一、USB接口背景 在早期的计算机系统上常用串口或并口连接外围设备。每个接口都需要占用计算机的系统资源(如中断,I/O地址,DMA通道等)。
无论是串口还是并口都是点对点的连接,一个接口仅支持一个设备。因此每添加一个新的设备,就需要添加一个ISA/EISA 或PCI卡来支持,同时系统需要重新启动才能驱动新的设备。
USB总线是INTEL、DEC、MICROSOFT、IBM等公司联合提出的一种新的串行总线标准,主要用于PC机与外围设备的互联。USB总线具有低成本、使用简单、支持即插即用、易于扩展等特点,已被广泛地用在PC机及嵌入式系统上。
二、USB总线优缺点 1.优 点 (1)使用简单 所用USB系统的接口一致,连线简单。系统可对设备进行自动检测和配置,支持热插拔。
新添加设备系统不需要重新启动。 (2)应用范围广 USB系统数据报文附加信息少,带宽利用率高,可同时支持同步传输和异步传输两种传输方式。
一个USB系统最多可支持127个物理设备。USB设备的带宽可从几Kbps 到几Mbps (在USB2.0版本,最高可达几百Mbps)。
一个USB系统可同时支持不同速率的设备,如低速的键盘、鼠标,全速的ISDN、语音,高速的磁盘、图像等(仅USB2.0版本支持高速设备)。(3)较强的纠错能力 USB系统可实时地管理设备插拔。
在USB协议中包含了传输错误管理、错误恢复等功能,同时根据不同的传输类型来处理传输错误。 (4)总线供电 USB总线可为连接在其上的设备提供5V电压/100mA电流的供电,最大可提供500mA的电流。
USB设备也可采用自供电方式。 (5)低成 USB接口电路简单,易于实现,特别是低速设备。
USB系统接口/电缆也比较简单,成本比串口/并口低。 2.缺 点 USB技术还不是很成熟,特别是高速设备。
市场上现有的USB设备价格都比较昂贵,但随着USB技术的日益成熟,设备的不断增加和广泛应用,其价格将会有所降低。 三、USB系统拓扑结 一个USB系统包含三类硬件设备: USB主机(USB HOST)、USB设备(USB DEVICE)、USB集线器(USB HUB),如图1所示。
(1)USB HOST 在一个USB系统中,当且仅当有一个USB HOST时,USB HOST有以下功能: ◇ 管理USB系统; ◇ 每毫秒产生一帧数据; ◇ 发送配置请求对USB设备进行配置操作; ◇ 对总线上的错误进行管理和恢复。 (2)USB DEVICE 在一个USB系统中,USB DEVICE和USB HUB总数不能超过127个。
USB DEVICE接收USB总线上的所有数据包,通过数据包的地址域来判断是不是发给自己的数据包:若地址不符,则简单地丢弃该数据包;若地址相符,则通过响应USB HOST的数据包与USB HOST进行数据传输。 (3)USB HUB USB HUB用于设备扩展连接,所有USB DEVICE都连接在USB HUB的端口上。
一个USB HOST总与一个根HUB (USB ROOT HUB)相连。USB HUB为其每个端口提供100mA电流供设备使用。
同时,USB HUB可以通过端口的电气变化诊断出设备的插拔操作,并通过响应USB HOST的数据包把端口状态汇报给USB HOST。一般来说,USB设备与USB HUB间的连线长度不超过5m,USB系统的级联不能超过5级(包括ROOT HUB)。
四、USB总线数据传输 USB总线上数据传输的结构如图2所示。 从物理结构上,USB系统是一个星形结构;但在逻辑结构上,每个USB逻辑设备都是直接与USB HOST相连进行数据传输的。
在USB总线上,每ms传输1帧数据。每帧数据可由多个数据包的传输过程组成。
USB设备可根据数据包中的地址信息来判断是否响应该数据传输。在USB标准1.1版本中,规定了4种传输方式以适应不同的传输需求: (1)控制传输(control transfer) 控制传输发送设备请求信息,主要用于读取设备配置信息及设备状态、设置设备地址,设置设备属性、发送控制命令等功能。
全速设备每次控制传输的最大有效负荷可为64个字节,而低速设备每次控制传输的最大有效负荷仅为8个字节。 2)同步传输(isochronous transfer) 同步传输仅适用于全速/高速设备。
同步传输每ms进行一次传输,有较大的带宽,常用于语音设备。同步传输每次传输的最大有效负荷可为1023个字节。
(3)中断传输(interrupt transfer) 中断传输用于支持数据量少的周期性传输需求。全速设备的中断传输周期可为1~255ms,而低速设备的中断传输周期为10~255ms。
全速设备每次中断传输的最大有效负荷可为64个字节,而低速设备每次中断传输的最大有效负荷仅为8个字节。 (4)块数据传输(bulk transfer) 块数据传输是非周期性的数据传输,仅全速/高速设备支持块数据传输,同时,当且仅当总线带宽有效时才进行块数据传输。
块数据传输每次数据传输的最大有效负荷可为64个字节。 五、典型应用 USB系统的典型 系统中,显示器、Audio、Modem皆为全速设备,键盘、鼠标为低速设备。
USB是一种支持在USB主机和USB设备之间进行串行数据传输的通信协议。
主机作为总线的主叫方,采用两种信令模式:全速模式12Mb/s和低速模式1.5Mb/s。USB使用四种数据传输方式:控制传输(control)、中断传输(interrupt)、批量传输(bulk)及等时传输(isochronous)。
其中控制模式主要用于控制指令传输及USB规范的实现,等时传输主要用于音频及视频传输。USB通过两次总线列举(Enumeration and Renumertion)来实现设备识别以及驱动程序析加载。
其具体过程为:USB设备连到主机后,主机依据USB规范在特定地址通过端口0(endpoint0)与外设通信,并将外设视为默认设备。外设与主机通信将其6设备标识(DID、PID、VID)发给主机进行第二次总线列举。
主机根据设备标识,加载相应设备驱动程序,重新分配地址,并将控制权转交给外设固件(firmware),通过固件与设备驱动程序及主机应用程序的交互通信,来实现外设的功能。
传输速率 这款新的超高速接口的实际传输速率大约是3.2Gbps(即400MB/S)。
理论上的最高速率是5.0Gbps(即625MB/S)。 数据传输 USB3.0 引入全双工数据传输。
5根线路中2根用来发送数据,另2根用来接收数据,还有1根是地线。也就是说,USB 3.0可以同步全速地进行读写操作。
以前的USB版本并不支持全双工数据传输。 电源 电源的负载已增加到150毫安(USB 2.0是100毫安左右),配置设备可以提高到900毫安。
这比USB 2.0高了80%,充电速度更快。另外,USB 3.0的最小工作电压从4.4伏特降到4伏特,更加省电。
电源管理 USB 3.0 并没有采用设备轮询,而是采用中断驱动协议。因此,在有中断请求数据传输之前,待机设备并不耗电。
简而言之,USB 3.0支持待机、休眠和暂停等状态。 物理外观 上述的规范也会体现在USB 3.0的物理外观上。
但USB 3.0的线缆会更“厚”,这是因为USB 3.0的数据线比2.0的多了4根内部线。不过,这个插口是USB 3.0的缺陷。
它包含了额外的连接设备。 已支持的操作系统 Windows Vista、Windows 7 SP1和Linux已支持USB 3.0。
苹果Mac OS还在观望,应该也会支持的。虽然Windows XP的“年龄”有点大,但它也能支持USB 3.0。
是不是这个呢? USB 2.0标准 COMPAQ、Hewlett Packard、Intel、Lucent、Microsoft、NEC和PHILIPS这7家厂商联合制定了USB 2.0接口标准。
USB 2.0将设备之间的数据传输速度增加到了480Mbps,比USB 1.1标准快40倍左右,速度的提高对于用户的最大好处就是意味着用户可以使用到更高效的外部设备,而且具有多种速度的周边设备都可以被连接到USB 2.0的线路上,不像USB 1.1时代,因为高带宽使得更多的设备无需担心数据传输时发生瓶颈效应。USB 2.0可以使用原来USB定义中同样规格的线缆,接头的规格也完全相同,在高速的前提下一样保持了USB 1.1的优秀特色,也保证了向下兼容。
USB传输遵循USB协议,4根线上两根是电源线,两根是差分信号。根据USB协议,USB设备分主机和从机,连接后,主从机之间通过USB线相互交流,按照协议建立连接后,就可以正常通讯了。
和RS232的区别,还真没想出来,完全是两个不同的东西吧,USB是一整套的传输协议,232就是个电平信号协议吧。也就是说,232只是定义了信息应该如何传输,USB不但定义了信息传输的方式,也定义了设备的运作方式。
信号线上传输的就是差分信号。具体的……还是看看USB协议吧,没仔细研究过。
固件的程序和驱动编写好了后,把设备插入就可以正确识别到,接下来的工作就是如何用上位机读写设备了。其实读写操作跟读写串口一致的,就是用file进行操作。关键是打开设备,下面是我用到的程序,这里都贴出来吧,我都是用这个的,供大家参考,呵呵,如果刚开始弄的话,估计得弄上个一个星期才行,用这个程序修改一下,两分钟搞定。
其中GUID ClassGuid 是你在驱动中生成的一个号,它必须跟你的驱动对应起来,这个号的位置在驱动程序的XXXDeviceInterface.h中的#define XXXDevice_CLASS_GUID \。.(XXX表示你起的工程名字)。把这个号替换之后用FpOpenDevice打开设备,得到一个读句柄,一个写句柄,然后在自己的程序中用readfile和writefile读写设备就可以了,注意,不管是读还是写,都是主机发出的,设备不能主动发发数据。比如上位机中运行readfile,就会发送一个IN指令,设备接到IN指令后,会把缓冲区的内容发出。
这一方面,想简单可以简单,想复杂可以负责的,,
上位机包括驱动和应用两层。一般为了使自己的程序更通用并且适合做
再加工,,都是在驱动和界面程序中间加个dll什么的,,作为中间层。
简单说的话,你可以下载公版驱动,和针对于该驱动的dll,,
开发者直接调用dll export出来的接口函数,完成开发,,跟一般的
软件开发差不多,,只有你会调用dll。。当然这里还有一个问题就是,
你还要和下位机软件开发的人一起制定一个协议什么的,,来具体完成
一些数据状态的交换。
如果要写驱动,,相对教难些,,不过可以上网上下载些类似的源码,,
参考修改,,完成驱动。
推荐你去csdn,这个网站上有很多资源,注册都可以下载的
1 USB的结构与工作原理 1.1物理结构 USB的物理拓扑结构如图1所示。
在USB2.0中,高速方式下Hub使全速和低速方式的信令环境独立出来,图2中显示了高速方式下Hub的作用。 通过使用集线器(Hub)扩展可外接多达127个外设。
USB的电缆有四根线,两根传送的是5V的电源,另外的两根是数据线。功率不大的外围设备可以直接通过USB总线供电,而不必外接电源。
USB总线最大可以提供5V 500mA电流,并支持节约能源的挂机和唤醒模式。 1.2 USB设备逻辑结构 USB的设备可以分成多个不同类型,同类型的设备可以拥有一些共同的行为特征和工作协议,这样可以使设备驱动程序的编写变得简单一些。
USB Forum在USB类规范?2 中定义了USB的设备类型,比如音频、通信、HID、HUB等设备类。 每一个USB设备会有一个或者多个的逻辑连接点在里面?每个连接点叫端点。
在USB的规范中用4位地址标识端点地址,每个设备最多有16个端点。 端点0都被用来传送配置和控制信息。
在NS公司的USB接口芯片USBN9602?4 中有7个端点。 管道实现了在主机的一个内存缓冲区和设备的端点之间的数据传输,连接端点0的叫做缺省管道。
管道是具有多个特征的信道,如带宽分配,包大小,管道类别以及数据流向。 管道有两种类型分别是流管道(stream pipe)和消息管道(messagepipe)。
流管道传输的数据包的内容不具有USB要求的结构,它是单向传输的;流管道支持批量、等时和中断传输方式。而消息管道与流管道具有不同的行为。
首先,由主机发请求给USB设备,然后在适当的方向上传输数据,最后是到达一个状态阶段。 为了保证三个阶段的数据传输,消息管道定义了一个数据结构使命令可靠地被识别和传输。
消息管道是双向的,它只支持控制传输方式。 对于同样性质的一组端点的组合叫做接口,如果一个设备包含不止一个接口就可以称之为复合设备(见图1)。
对于同样类型接口的组合可以称之为配置。 但是每次只能有一个配置是可用的,而一旦该配置被激活,里面的接口和端点就都同时可以使用。
主机从设备发过来的描述字中来判断用的是哪个配置?哪个接口等等?而这些描述字通常是在端点0中传送的。 1.3 USB通信分层模型 一台主机到设备的连接需要许多层与实体之间的相互作用。
USB总线接口层提供了主机和设备之间的物理/信令/包的连接。在系统软件看来,USB设备层执行的是一般的USB操作。
功能接口层提供和应用软件层相对应的附加功能。分层模型如图3所示,虽然逻辑上USB设备层和功能层各自与主机上的相应层通信,但物理上都是通过USB总线接口层实现数据传输的。
1.4 四种传输方式 USB提供了四种传输方式,以适应各种设备的需要。这四种传输方式分别是: 控制传输方式:控制传输是双向传输,数据量通常较小,主要用来进行查询、配置和给USB设备发送通用的命令。
控制传输主要用在主计算机和USB外设中端点0之间。 等时传输方式:等时传输提供了确定的带宽和间隔时间。
它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传送率的即时应用中。例如进行语音业务传输时,使用等时传输方式是很好的选择。
中断传输方式:中断方式传送是单向的并且对于主机来说只有输入的方式。 中断传输方式主要用于定时查询设备是否有中断数据要传送,该传输方式应用在少量的、分散的、不可预测的数据传输。
键盘、游戏杆和鼠标就属于这一类型。 大量传输方式:主要应用在没有带宽和间隔时间要求的大量数据的传送和接收,它要求保证传输。
打印机和扫描仪属于这种类型。 在开发USB设备时通过设置接口芯片中相应的寄存器使端点处于不同的工作方式。
1.5 USB通信协议 USB的物理协议规定了在总线上传输的数据格式,一个全速的数据帧有1500字节,而对于低速的帧有187字节。帧的作用是分配带宽给不同的数据传送方式。
一个最小的USB的数据块叫做包,包通常有同步信号,包标识,地址、传送的数据和CRC。包的ID由八位组成,其中后四位是纠错位。
根据包功能的不同,在USB1.1中定义了以下四类十种: token OUT IN SOF SETUP data DATA0 DATA1 handshake ACK NAK STALL special PRE 在USB2.0中又增加了几种类型的包以满足高速传输的需要。 其中data类型增加了DATA2和MDATA,handshake类型增加了NYET,special类型则增加了ERR,SPLIT,PING,Reserved。
事务是在主机和设备之间不连续地数据交换。一个事务通常由主机开始,一般分三个阶段,第一阶段发送token包,第二阶段发送是data包(可以向上也可以向下),在数据包传送完之后,就会由设备返回一个handshake包。
当客户端程序通过一个USB管道发送或接收数据时,它首先会调用Win32API,API会发送一个IRP到USB设备驱动程序。USB设备驱动程序的任务就是把客户端的请求通过一个管道发送到外设合适的端点。
为了实现这个任务,USB设备驱动程序会递交请求给总线驱动程序,总线驱动程序可以把这些请求转变成事务,然后将这些事务组合成帧在总线上传输。 1.6 USB带宽分析举例 在USB1.1标准中将其有效的带宽分。
USB,即通用串行总线(Universal Serial Bus),也称通用串联接口。
随着计算机硬件飞速发展,外围设备日益增多,键盘、鼠标、调制解调器、打印机、扫描仪早已为人所共知,数码相机、MP3随身听接踵而至,这么多的设备,如何接入个人计算机?USB就是基于这个目的产生的。USB是一个使计算机周边设备连接标准化、单一化的接口,其规格是由Intel、NEC、Compaq、DEC、IBM、Microsoft、Northern Telecom联系制定的。
USB1.1标准接口传输速率为12Mbps,但是一个USB设备最多只可以得到6Mbps的传输频宽。因此若要外接光驱,至多能接六倍速光驱,无法再高。而若要即时播放MPEG-1的VCD影片,至少要1.5Mbps的传输频宽,这点USB办得到,但是要完成数据量大四倍的MPEG-2的DVD影片播放,USB可能就很吃力了,若再加上AC-3音频数据,USB设备就很难实现即时播放了。
一个USB接口理论上可以支持127个装置,但是目前还无法达到这个数字。其实,对于一台计算机,所接的周边外设很少有超过10个的,因此这个数字是足够我们使用的。
USB还有一个显著优点就是支持热插拔,也就是说在开机的情况下,你也可以安全地连接或断开USB设备,达到真正的即插即用。
不过,并非所有的Windows系统都支持USB。目前,Windows系统中有许多不同的版本,在这些版本中,只有Windows98以上版本的系统对USB的支持较好,而其他的Windows版本并不能完整支持USB。例如Windows95的零售版是不支持USB的,只有后来与PC捆绑销售的Windows95版本才支持USB。
目前USB设备虽已被广泛应用,但比较普遍的却是USB1.1接口,它的传输速度仅为12Mbps。举个例子说,当你用USB1.1的扫描仪扫一张大小为40M的图片,需要4分钟之久。 这样的速度,让用户觉得非常不方便,如果有好几张图片要扫的话,就得要有很好的耐心来等待了。
用户的需求,是促进科技发展的动力,厂商也同样认识到了这个瓶颈。这时, COMPAQ、Hewlett Packard、Intel、Lucent、Microsoft、NEC和PHILIPS这7家厂商联合制定了USB 2.0接口标准。USB 2.0将设备之间的数据传输速度增加到了480Mbps,比USB 1.1标准快40倍左右,速度的提高对于用户的最大好处就是意味着用户可以使用到更高效的外部设备,而且具有多种速度的周边设备都可以被连接到USB 2.0的线路上,而且无需担心数据传输时发生瓶颈效应。
所以,如果你用USB 2.0的扫描仪,就完全不同了,扫一张40M的图片只需半分钟左右的时间,一眨眼就过去了,效率大大提高。
而且,USB2.0可以使用原来USB定义中同样规格的电缆,接头的规格也完全相同,在高速的前提下一样保持了USB 1.1的优秀特色,并且,USB 2.0的设备不会和USB 1.X设备在共同使用的时候发生任何冲突。
USB2.0兼容USB1.1,也就是说USB1.1设备可以和USB2.0设备通用,但是这时USB2.0设备只能工作在全速状态下(12Mbit/s)。USB2.0有高速、全速和低速三种工作速度,高速是480Mbit/s,全速是12Mbit/s,低速是1.5Mbit/s。其中全速和低速是为兼容USB1.1而设计的,因此选购USB产品时不能只听商家宣传USB2.0,还要搞清楚是高速、全速还是低速设备。USB总线是一种单向总线,主控制器在PC机上,USB设备不能主动与PC机通信。为解决USB设备互通信问题,有关厂商又开发了USB OTG标准,允许嵌入式系统通过USB接口互相通信,从而甩掉了PC机
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.960秒