八月 2, 2011

USB通讯协议的一些知识,扫扫盲

Written by

对于USB的 HID类设备目前支持三个速率档次:

1、  低速主机每10ms查询一次数据,一次传递8个字节,所以只能达到 800bps

2、  全速主机每1ms查询一次数据,一次传递64字节,能达到64kbps

3、  高速主机每125us查询一次,一次传输1k,最高每秒能达到24mbps

 低速对应usb1.0规范,带宽1.5Mbps,速度约为187.5KB/S(192000Bytes/S);全速对应usb1.1规范,带宽12Mbps,速度约1.5Mbps;高速对应usb2.0规范,带宽480Mbps,速度大概是60Mbps。

 目前PC主机和usb设备都支持usb2.0了。如果任意一方支持不到2.0,那就只能在全速档次(usb1.1规范)上传输,最高只能到64kbps,这是HID设备和协议限制,没法突破的。

下面一些信息来自维基百科,维基上提供了太多好资料了,大家多去那里看看

http://zh.wikipedia.org/wiki/USB#USB.E5.A4.A7.E5.AE.B9.E9.87.8F.E5.AD.98.E5.82.A8

 

现行USB标准中统一为USB 3.0,并且向下兼容2.0和1.1,分别为:

USB版本

速率称号

带宽

速度

USB 3.0

SuperSpeed

5Gbps

约610MB/S(625,000KB/S)

USB 2.0

Hi-Speed

480Mbps

约60MB/S(60,000KB/S)

USB 1.1

Full Speed

12Mbps

约1.5MB/S(1,500KB/S)

USB 1.0

Low Speed

 1.5Mbps 约187.5KB/S(192000Bytes/S)

目前USB支持3种数据信号速率,USB设备应该在其外壳或者有时是自身上正确标明其使用的速率。USB-IF进行设备认证并为通过兼容测试并支付许可费用的设备提供基本速率(低速和全速)和高速的特殊商标许可。

  • 1.5 Mbps 的低速速率。主要用于人机接口设备(Human Interface Devices,HID),例如键盘、鼠标、游戏杆等等。
  • 12 Mbps 的全速速率。 在USB 2.0之前是曾经是最高速率,后起的更高速率的高速接口应该兼容全速速率。多个全速设备间可以按照先到先得法则划分带宽;使用多个等时设备时会超过带宽上限也并不罕见。所有的USB连接端口支持全速速率。
  • 480 Mbps 的高速速率。并非所有的USB 2.0设备都是高速的。高速设备插入全速连接端口时应该与全速兼容。而高速连接端口具有所谓事务翻译器Transaction Translator)功能,能够隔离全速、低速设备与高速之间数据流,但是不会影响供电和串联深度。
  • 5Gbps 的超高速速率。相较于现有USB 2.0的480Mbps最高理论速度,USB 3.0可支持到5.0Gbps,是USB 2.0的10倍。若将USB 3.0应用到外接硬盘、闪存盘或蓝光刻录机等存储设备,将可大幅缩短数据传输时间。

常用设备类别和ID有:

0x00   保留值

0x01   USB音频设备,像声卡这样的设备。

0x02   USB通信控制设备,像网卡,调制解调器,串口这样的设备。

0x03   人机接口设备,键盘,鼠标等。

0x05   物理接口设备,像摇杆等。

0x06   静止图像捕捉设备,用在USB上的Picture Transfer Protocol。

0x07   USB打印设备,像打印机。

0x08   USB大容量存储设备,闪存盘移动硬盘,MMC卡、SD卡、CF卡读卡器,数码相机,数字音频播放器等。这一类设备显示成一个文件系统。

0x09   USB集线器。

0x0A   USB通信设备(”CDC”),用于调制解调器(包括软件调制解调器), 网卡(双绞线), ISDN,传真。

0x0B   智能卡设备,像读卡器。

0x0E   USB视频设备,类似摄像头,电视卡的动态图像捕捉设备。

0xE0   无线控制器,如蓝牙。

0xFE   特殊的应用,如红外线数据桥接器。

0xFF   订制设备。

 以上信息来自维基百科

——————————————————————-

 

下面是网上看到的一些零星资料:

 

Full Speed 12Mbps,还是理论速度,实际更低一点。

12Mbps=12M/8=1.5M byte 这个是理论速度,实际的要不这个还低

 

如果按照协议,最快轮询时间1mS,最大包长64Byte,那么有效数据应该可以达到64KBps,但是实际应用中,用Bushond抓出来PC常常要延迟到2mS或更多的时间采取读取一次数据,所以丢包严重,达不到64KBps.

另外,如果HID全速设备接入到高速Hub上,HUB会采用分离传输,可能将2个数据包合并传输,即PC可能每2mS才轮询一次,不过轮询一次就读取到2个数据包,两个数据包之间间隔几十uS,数据是没有丢,但是失去了及时性了.

 

以下关于usb HID的信息来自于 http://baike.baidu.com/view/1636019.htm,更详细的信息请到原址观摩 

 USB HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。

 HID类别设备的主要能力:

  1、交换的数据存储在称为报表(report)的结构内,设备的固件必须支持HID报表的格式。主机在控制与中断传输中传送与要求报表,来传送与接收数据。报表的格式非常有弹性,可以处理任何类别的数据。

  2、每一笔事务可以携带小量或中量的数据。低速设备每一笔事务最大是8个字节,全速设备每一笔事务最大是64个字节,高速设备每一笔事务最大是1024个字节。一个报表可以使用多笔事务。

3、设备可以在未预期的时间传送信息给主机,例如键盘的按键或是鼠标的移动。所以主机会定时轮询设备,来取得最新的数据。

 HID类别设备的主要限制:

  1、最大的传输速度有限,特别是低速与全速的时候。主机可以保证低速的中断端点,每10ms内不会有超过1笔事务,每一秒最多800个字节。主机可以保证 全速端点,每1ms1笔事务,每一秒最多是64000个字节。主机可以保证高速端点,每125us1笔事务,每一秒最多24.576MB。

  2、没有保证的传输速率。如果设备是设置在10ms的时距,事务之间的时间可能等于或小于10ms。除非设备是设置在全速时在每个帧传输数据,或是在高速时在每个微帧传输数据。这是最快的轮询速率,所以断点可以保证有正确的带宽可供使用。

  3、Windows98Gold系统不支持中断输出传输,所有主机与设备的数据都必须使用控制传输。

  HID设备除了传送数据给主机外,它也会从主机接收数据。只要能够符合HID类别规范的设备都可以是HID设备,在规范内提到了条型码笔、温度计以及电压计等例子。这些设备虽然没有传统的人机接口,但是它们都可以传送数据给主机,也可以从主机接收配置的要求。

  设备除了HID接口之外,它可能同时还包含有其他的USB接口。例如影像显示设备可能使用HID接口来做亮度,对比,与更新率的软件控制,而使用传统的影 像接口来传送要显示的数据。USB扩音器可以使用实时传输来播放语音,同时使用HID接口来控制音量,震荡,与低音等。HID接口通常比传统的控制接口来 得便宜。

HID类别设备的规范是Device Class Definition for Human Interface Devices。另外还有一份文件HID Usabe Tables,用来定义让主机了解以及使用HID数据的数值。这两份文件是由USB Device Working Group所制定,Group的成员都是USB实施者论坛的会员。您可以在USB实施者论坛网站上下载这两份文件。

 最后,这篇文章也讲得相当详细,一定要看:http://www.baiheee.com/Documents/090522/090522165226.htm

 

Category : Linux/UnixWindow$

Tags :

发表评论

电子邮件地址不会被公开。

Proudly powered by WordPress and Sweet Tech Theme