USB1.0设备为何能够在USB2.0端口上使用?
USB从1994年开始提出以来,到目前为止共有三个版本:USB 1.0、USB 1.1和USB 2.0。USB 1.0只有低速(low speed,1.5Mbps)一种传输模式,USB 1.1增加了全速(full speed,12Mbps)模式,USB 2.0又增加了高速(high speed,480Mbps)模式。
图1 USB端口与高速USB端口的标志
为了使USB1.0的设备(鼠标和键盘)在USB 2.0下面仍可以工作,首先要做的工作,就是让2.0端口的物理形状与1.0保持完全一致(图2)。所以,仅从外观上来看,我们是分别不出USB端口的版本。当我们把U盘或移动硬盘插入到主机的USB接口时,往往并不知道移动设备的工作模式,也不知道数据传输率是究竟1.5Mbps、12Mbps,还是480Mbps。
图2 两种USB版本具有相同的连接器
(还有一种mini-B型,比B型的尺寸更小一些)
那么,USB 2.0端口怎样保持与USB 1.0、USB 1.1设备之间相互兼容呢?2.0控制器又是怎样判断出设备是1.0还是2.0的呢?这就是本文将要解决的问题。
一、主机如何识别USB设备类型?
当USB设备插上主机时,主机就通过一系列的动作来对设备进行枚举配置,其中包括如下一些状态:
(1)接入态(Attached):设备接入主机后,主机通过检测信号线上的电平变化来发现设备的接入;
(2)供电态(Powered):就是给设备供电,分为设备接入时的默认供电值,配置阶段后的供电值(按数据中要求的最大值,可通过编程设置);
(3)缺省态(Default):USB在被配置之前,通过缺省地址0与主机进行通信;
(4)地址态(Address):经过了配置,USB设备被复位后,就可以按主机分配给它的唯一地址来与主机通信,这种状态就是地址态;
(5)配置态(Configured):主机发出标准的USB请求命令来获取设备的各种信息,并根据这些信息对控制器进行设置。
(6)挂起态(Suspended):总线供电设备在3ms内没有总线操作,即USB总线处于空闲状态的话,该设备就要自动进入挂起状态,在进入挂起状态后,总的电流功耗不超过280UA。
USB设备的EEPROM芯片中存储有设备描述符、配置描述符、字符描述符、接口描述符和端点描述符,其中的接口描述符会告诉主机该接口的类型。在配置态,主机获取USB设备信息,Windows的设备管理器将描述符内的信息与PC内部INF文档进行比较,从中找出最佳匹配,然后指定一个设备驱动程序,这样应用程序就能够访问该设备了(图3)。
图3 Windows的“设备管理器”中可以看到枚举成功的设备
二、保持兼容性的措施
为了保持向下兼容,需从软硬件两个方面去考虑。软件方面的问题这里不准备讨论,我关心的只是硬件方面。
(1)带宽分配与速率转换
虽然USB 2.0定义了1.5Mbps、12Mbps和480Mbps三种传输速率,但任何一个设备的实际传输速率只能达到设备自身所允许的最高值。对于连接到2.0端口的低速设备,主控端需要降低速率,以保证通信的成功。USB2.0控制器中有一个称为“Transaction Translator”的电路,就是负责进行传输速率转换的。
(2)电平设置与电流分配
我们知道,USB连接线中有四条导线,其中的两条用于传送数据,另外两条则分别用来传送电力与接地。这些拥有专门用途的导线都有特别的名称:VBUS(电源)、Ground(接地)、D+与D-(信号线)。其中D+与D-是传送USB数据的差分信号线。
图4 由一对双绞线组成差模信号传输线路
在全速与低速传输时,这对信号线的差分电压为+/-3V。 而在高速传输时,这对信号线的差分电压为+/-400mV。高速传输模式采用较低的电位有助于减少信号传送的耗电量以及降低电磁干扰(EMI)。
当设备刚插入时,仅允许它吸入100mA的电流,只有当确定设备为USB 2.0时,才允许它吸入最高500mA的电流。
三、 如何确认USB设备工作在1.0,1.1,还是2.0模式?
虽然今天的电脑提供两个以上的USB端口,但有些只能用于USB1.0和USB 1.1的数据传输,并不能支持USB 2.0的数据传输。另外,从设备管理器中我们还可以看到,USB控制器保留了10%的带宽,所以USB的带宽只能达到理论带宽的90%。当我们把一个移动硬盘插入电脑时,系统并没有告诉我们它的实际速率,Windows的设备管理器中也没有显示它的工作模式。这就是说,即便插入的设备可以工作,但是它是否达到了我们所期望数据传输速度,尚无法确认。从这个意义上讲,弄清楚它的工作模式是有实际意义的。
如何得知设备的实际工作模式呢?看来只有借助于第三方测试软件了。下面
- 基于USB接口的ISP下载系统设计(01-07)
- U盘读写模块USB118在数据采集中的应用(05-14)
- NEC D70f3630(3377)之 端口操作(12-03)
- 基于STM32和W5500的UPnP自动端口映射功能实现(11-29)
- C8051F020的端口配置(11-24)
- MCS-51单片机P0端口的结构及工作原理(11-18)