当前位置:文档之家› USB协议详解

USB协议详解

USB HID介绍

HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB 协议的相关内容。

USB设备描述符-概述

当插入USB设备后,主机会向设备请求各种描述符来识别设备。那什么是设备描述符呢?

Descriptor即描述符,是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB 设备中,用于描述一个USB设备的所有属性,USB主机是通过一系列命令来要求设备发送这些信息的。

描述符的作用就是通过命令操作来给主机传递信息,从而让主机知道设备具有什么功能、属于哪一类设备、要占用多少带宽、使用哪类传输方式及数据量的大小,只有主机确定了这些信息之后,设备才能真正开始工作。

USB有那些标准描述符?

USB有5种标准描述符:设备描述符、配置描述符、字符描述符、接口描述符、端点描述符。

描述符之间有一定的关系,一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。由此我们可以看出,USB的描述符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是接口描述符,再下面是端点描述符。在获取描述符时,先获取设备描述符,然后再获取配置描述符,根据配置描述符中的配置集合长度,一次将配置描述符、接口描述符、端点描述符一起一次读回。其中可能还会有获取设备序列号,厂商字符串,产品字符串等。

设备描述符

struct _DEVICE_DEscriptOR_STRUCT

{

BYTE bLength; //设备描述符的字节数大小

BYTE bDescriptorType; //描述符类型编号,为0x01

WORD bcdUSB; //USB版本号

BYTE bDeviceClass; //USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型,0x00不是在设备描述符中定义的,如HID

BYTE bDeviceSubClass; //usb分配的子类代码,同上,值由USB规定和分配的,HID 设备此值为0

BYTE bDeviceProtocl; //USB分配的设备协议代码,同上HID设备此值为0

BYTE bMaxPacketSize0; //端点0的最大包的大小

WORD idVendor; //厂商编号

WORD idProduct; //产品编号

WORD bcdDevice; //设备出厂编号

BYTE iManufacturer; //描述厂商字符串的索引

BYTE iProduct; //描述产品字符串的索引

BYTE iSerialNumber; //描述设备序列号字符串的索引

BYTE bNumConfiguration; //可能的配置数量

}

配置描述符

struct _CONFIGURATION_DEscriptOR_STRUCT

{

BYTE bLength; //配置描述符的字节数大小

BYTE bDescriptorType; //描述符类型编号,为0x02

WORD wTotalLength; //配置所返回的所有数量的大小

BYTE bNumInterface; //此配置所支持的接口数量

BYTE bConfigurationVale; //Set_Configuration命令需要的参数值BYTE iConfiguration; //描述该配置的字符串的索引值

BYTE bmAttribute; //供电模式的选择

BYTE MaxPower; //设备从总线提取的最大电流

}

字符描述符

struct _STRING_DEscriptOR_STRUCT

{

BYTE bLength; //字符串描述符的字节数大小

BYTE bDescriptorType; //描述符类型编号,为0x03

BYTE SomeDescriptor[36]; //UNICODE编码的字符串

}

接口描述符

struct _INTERFACE_DEscriptOR_STRUCT

{

BYTE bLength; //接口描述符的字节数大小

BYTE bDescriptorType; //描述符类型编号,为0x04

BYTE bInterfaceNunber; //接口的编号

BYTE bAlternateSetting;//备用的接口描述符编号

BYTE bNumEndpoints; //该接口使用端点数,不包括端点0

BYTE bInterfaceClass; //接口类型 HID设备此值为0x03

BYTE bInterfaceSubClass;//接口子类型 HID设备此值为0或者1

BYTE bInterfaceProtocol;//接口所遵循的协议

BYTE iInterface; //描述该接口的字符串索引值

}

端点描述符

struct _ENDPOIN_DEscriptOR_STRUCT

{

BYTE bLength; //端点描述符的字节数大小

BYTE bDescriptorType; //描述符类型编号,为0x05

BYTE bEndpointAddress; //端点地址及输入输出属性

BYTE bmAttribute; //端点的传输类型属性

WORD wMaxPacketSize; //端点收、发的最大包的大小

BYTE bInterval; //主机查询端点的时间间隔

}

HID设备描述符

温习了以上内容,我们再来看看HID协议与这些描述符之间的关系。

当插入USB设备后,主机会向设备请求各种描述符来识别设备。

为了把一个设备识别为HID类别,设备在定义描述符的时候必须遵守HID规范。

报告描述符

报告描述符比较复杂,它是以item形式排列组合而成,无固定长途,用户可以自定义长度以及每一bit的含义。item类型分三种:main,global和local,其中main类型又可分为5种tag:

项目分成三种类别:主项目,全局项目,区域项目。主项目中的input,ouput,feature三个卷标用来表示报告中数据的种类,这些是报告描述符中最主要的项目,其他项目都是用来修饰这三种项目。主要项目中其他二个卷标后面再作详细的介绍。

>> Input 项:表示设备操作输入到主机的数据模式。这个数据格式就形成一个输入报告,虽然输入报告可以用控制型管线以get report(input)来传输,但是通常用中断型输入管线来传输以确保在每一固定周期内都能将更新的输入报告传给主机。

>> Output 项:表示由主机输出到装置操作的数据格式。这个数据格式就形成一个输出报告。输出报告通常不适用轮询的方式来传送给设备,而是由应用软件依实际需求以传令方式要求送出输出报告,所以大多用控制型管线以set report(output)指令来将报告送到设备。当然也可以选择用中断型输出管线来传送,只是通常不建议这样用。

>> Feature 项:表示由主机送到设备的组态所需数据的数据格式。这个数据模式就形成一个特征报告。特征报告只能用控制型管线以get report(feature)和set report(feature)指令分别来取得和设定设备的特征值

主项目用来定义报告中数据的种类和格式,而说明主项目之意义与用途为全局项目和区域项目。顾名思义,区域性项目只能适用于列于其下的第一个主项目,不适用于其他主项目,若一个主项目之上有几个不同的卷标的区域性项目,则这些区域性项目皆适用于描述该主项目。相反,全局性项目适用于其下方的所有主项目,除非另一个相同卷标的全局性项目出现!!!

Report descriptors are composed of pieces of information. Each piece of information is called an Item.

报告描述符由一些数据片组成。这些数据片被叫做Item。

All items have a one-byte prefix that contains the item tag, item type, and item size.

每一个Item都包含一个字节的前缀,这个前缀中包含了三个信息--item tag,、item type、item size。

An item may include optional item data。

Item可以包含一个可选的数据段。

The size of the data portion of an item is determined by its fundamental type. Item的数据部分的长度取决于Item的基本类型。

There are two basic types of items: short items and long items.

Item有两种基本类型:short items and long item。

There are three categories of short item tags: Main, Global, and Local.

short item 的item tags 有三种类型:Main, Global, and Local.

Main items:

Main items are used to either define or group certain types of data fields within a Report descriptor. There are two types of Main items: data and non-data. Data-type Main items are used to create a field within a report and include Input, Output, and Feature. Other items do not create fields and are subsequently referred to as

non-data Main items.

好了,到此我们应该可以对照实际应用的报告描述符,寻找其中的Main items了。

至此我们已经可以明白报告描述符中的几个MAIN Item的意义,接下来继续看Global Item 和Local Item.

Global Item:

Global items describe rather than define data from a control. A new Main item assumes the characteristics of the item state table. Global items can change the state table. As a result Global item tags apply to all subsequently defined items unless overridden by another Global item.

(原文件名:Global Item.jpg)

至此我们已经可以明白报告描述符中的几个Global Item的意义

Local Item:

Local item tags define characteristics of controls. These items do not carry over to the next Main item. If a Main item defines more than one control, it may be preceded by several similar Local item tags. For example, an Input item may have several

Usage tags associated with it, one for each control.

item的数据格式有两种,分别是短item和长item。

短item格式

bSize

0:0个字节

1:1个字节

2:2个字节

3

:4个字节

bType 0:main 1:global 2:local 3:保留

bTag item类型

8:input

9:output

A:collection

B:feature

C:end collection

长item,其bType位值为3,bTag值为F

bDataSize 0:0个字节1:1个字节2:2个字节3:4个字节

bLongItemTag 0:main 1:global 2:local 3:保留

data 数据

学习,学习,只有不断的学习,才能让自己在人群中脱颖而出.

usb协议的8个问题及传输方式

USB传输协议 (2010-11-10 15:13:19) 转载▼ 标签: 杂谈 1.总线协议 USB是一种轮询方式的总线,主机控制器初始化所有的数据传输。 每个总线执行动作按照传输前制定的原则,最多传输三个数据包。每次传输开始,主机控制器发送一个描述传输动作的种类、方向、USB设备地址和端口号的数据包,这个数据包通常称为标志包PID(packet ID),USB设备从解码后的数据包中取出属于自己的数据。 传输开始时,由标志包来标志数据的传输方向,然后发送端发送数据包,接收端相应地发送一个握手的数据包,以表明传输是否成功。发送端和接收端之间的数据传输,可视为在主机和设备端口之间的一条通道中进行。 通道可分为两类:流通道和消息通道。各通道之间的数据流动是相互独立的,一个USB 设备可以有几条通道。例如,一个USB设备可建立向其他设备发送数据和从其他设备接收数据的两条通道。 2.USB的传输方式 为了满足不同的通信要求,USB提供了四种传输方式:控制(control)方式传输,等时(isochronous)方式传输,中断(interrupt)方式传输及批(bulk)方式传输。每种传输模式应用到具有相同名字的终端时,具有不同的性质。 (1)控制方式传输

控制传输是双向传输,数据量通常较小。控制传输类型支持外设与主机之间的控制、状态、配置等信息的传输,为外设与主机之间提供一条控制通道。每种外设都支持控制传输类型,这样,主机与外设之间就可以传输配置和命令/状态信息。 (2)等时方式传输 等时传输提供了确定的带宽和间隔时间(latency)。它用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传输速率和即时应用中。 例如,在执行即时通话的网络电话应用中,使用等时传输模式是很好的选择。等时数据要求确定的带宽值和确定的最大传输次数,对于等时传输来说,即时数据传递比精度和数据的完整性更重要一些。 (3)中断方式传输 中断方式传输主要用于定时查询设备是否有中断申请。这种传输方式的典型应用是在少量的、分散的、不可预测数据的传输方面,键盘、操纵杆和鼠标等就属于这一类型。这些设备与主机间的数据传输量小、无周期性,但对响应时间敏感,要求马上响应。中断方式传输是单向的,并且对于主机来说只有输入方式。 (4)批方式传输 主要应用于大量传输数据又没有带宽和间隔时间要求的情况下,要求保证传输。打印机和扫描仪就属于这种类型,在满足带宽的情况下,才进行该类型的数据传输。 USB采用分块带宽分配方案,若外设超过当前或潜在的带宽分配要求,则主机将拒绝与外设进行数据传输。等时和中断传输类型的终端保留带宽,并保证数据按一定的速率传输,集中和控制终端按可用的最佳带宽来传输数据。但是,10%的带宽为批传输和控制传输保留,数据块传输仅在带宽满足要求的情况下才会出现。

usb的协议

竭诚为您提供优质文档/双击可除 usb的协议 篇一:usb接口协议 usb接口协议简介 b以及协议简介 usb(universalserialbus)是近年来应用在pc领域的新型接口技术,它是由一些pc大厂商如microsoft、intel 等为了解决日益增加的pc外设与有限的主板插槽和端口之间的矛盾而制定的一种通用串行接口。 数据通信协议部分是usb的核心内容。主要包括:以差模串行信号为载体传送二进制代码来传输信号;数据包作为最基本的完整信息单元,包含一系列数据信息。数据包可以分解为更小的单元—域;以包为基础,构成usb的三种事务。进而,组合不同的传输类型,传输各种类型的数据,实现usb 的各种功能。 b通信机制 为了细化usb的通信机制,usb协议的开发者采用了分层的概念,每一层传输的数据结构对其他逻辑层是透明的,usb设备和usb主机通信的逻辑结构和每层的逻辑通道。在

hsot端,应用软件(clientsw)不能直接访问usb总线,而必须通过usb系统软件和usb主机控制器来访问usb总线,在usb总线上和usb设备进行通讯。从逻辑上可以分为功能层、设备层和总线接口层三个层次。其中功能层完成功能级的描述、定义和行为;设备级则完成从功能级到传输级的转换,把一次功能级的行为转换为一次一次的基本传输;usb 总线接口层则处理总线上的bit流,完成数据传输的物理层实现和总线管理。途中黑色箭头代表真实的数据流,灰色箭头代表逻辑上的通讯。如图所示: 主机物理设备 逻辑上的数据流 实际数据流 以usb摄像头设备为例,视频播放软件想通过usb总线得到usb摄像头捕捉的视频数据,这就相当于在功能层上。应用软件是视频播放软件,功能硬件是usb摄像头。而这些数据的读取需要usb设备层提供的服务,在这一层上,主要是usb设备的驱动调度主机控制器控制器向usb摄像头发出读请求。每个usb设备会有多个管道,使用哪个管道,传输的大小都需要指定。这个层次的usb系统软件就是usb摄像头的驱动程序。而在usb设备一端一般会有小单片机或者处理芯片负责响应这种读请求,而这一层的传输又依赖于usb 总线接口层的服务。在这一层,完全是usb的物理协议,包

USB20协议中文版

USB 2.0 规范 USB体系简介 USB是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达480Mb/S。USB支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得500mA的电流。USB2.0 被设计成为向下兼容的模式,当有全速(USB 1.1)或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它们。一条USB总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB以及USB功能设备。 USB体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB 接口及接口管理能力的硬件、软件及固件的复合体,可以是PC,也可以是OTG设备。一个USB系统中仅有一个USB主机;设备包括USB功能设备和USB HUB,最多支持127个设备;物理连接即指的是USB的传输线。在USB 2.0系统中,要求使用屏蔽的双绞线。 一个USB HOST最多可以同时支持128个地址,地址0作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个USB HOST最多可以同时支持127个地址,如果一个设备只占用一个地址,那么可最多支持127个USB设备。在实际的USB体系中,如果要连接127个USB 设备,必须要使用USB HUB,而USB HUB也是需要占用地址的,所以实际可支持的USB功能设备的数量将小于127。 USB体系采用分层的星型拓扑来连接所有USB设备,如下图所示: 以HOST-ROOT HUB 为起点,最多支持7层 (Tier),也就是说任何一个 USB系统中最多可以允许5 个USB HUB级联。一个复 合设备(Compound Device) 将同时占据两层或更多的 层。 ROOT HUB是一个特殊的USB HUB,它集成在主机控制器里,不占用地址。ROOT HUB不但实现了普通USB HUB的功能,还包括其他一些功能,具体在增强型主机控制器的规范中有详细的介绍。 “复合设备(Compound Device)”可以占用多个地址。所谓复合设备其实就是把多个功能设备通过内置的USB HUB组合而成的设备,比如带录音话筒的USB摄像头等。 轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个USB体USB采用轮询的广播机制 轮询的广播机制

USB2.0协议中文版

USB 2.0 规范 USB 体系简介 USB 是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达480Mb/S。USB 支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得500mA 的电流。USB2.0 被设计成为向下兼容的模式,当有全速(USB 1.1)或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它们。一条USB 总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB 以及USB 功能设备。 USB 体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB 接口及接口管理能力的硬件、软件及固件的复合体,可以是PC,也可以是OTG 设备。一个USB 系统中仅有一个USB 主机;设备包括USB 功能设备和USB HUB,最多支持127 个设备;物理连接即指的是USB 的传输线。在USB 2.0 系统中,要求使用屏蔽的双绞线。 一个U S B H O S T最多可以同时支持128个地址,地址0作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个U S B H O S T最多可以同时支持127个地址,如果一个设备只占用一个地址,那么可最多支持127个U S B设备。在实际的U S B体系中,如果要连接127个U S B 设备,必须要使用U S B H U B,而U S B H U B也是需要占用地址的,所以实际可支持的U S B功能设备的数量将小于127。 USB 体系采用分层的星型拓扑来连接所有USB 设备,如下图所示: 以HOST-ROOT HUB Array为起点,最多支持7 层 (Tier),也就是说任何一个 USB 系统中最多可以允许5 个USB HUB 级联。一个复 合设备(Compound Device) 将同时占据两层或更多的 层。 R OO T H U B是一个特殊的U S B H U B,它集成在主机控制器里,不占用地址。R OO T H U B不但实现了普通U S B H U B的功能,还包括其他一些功能,具体在增强型主机控制器的庂范中有详细的介绍。 “复合设备(C o m p o u n d D e v i c e)”可以占用多个地址。所谓复合设备其实就是把多个功能设备通过内置的U S B H U B组合而成的设备,比如带录音话筒的U S B摄像头等。 USB 采用轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个USB 体

(完整word版)通俗易懂的USB协议详解(转载)

Usb详解 USB作为一种串行接口,应用日益广泛。如同每个工程设计人员必须掌握I2C,RS232这些接口一样,我们也必须掌握usb. 但是usb的接口协议实在有点费解,linux uhci驱动作者之一Alan Stern曾经就说过“The USB documentation is downright evil. Most of it is just crap, written by a committee. You're better off ignoring most of it ”。 本文将从整体上介绍usb协议,包括usb host ,usb hub,usb function。希望能给读者一个总体上的了解。也 因此,文章将分成相应的三部分讲解。 一。usb function 1。初识b是一种串行接口协议,它靠d+,d-两条数据线构成的差分线来进行数据传输,这让我们非常感兴 趣它到底和我们通常熟悉两线rs232/485有何区别。了解这种区别有助于我们对usb作一个深入的了解。那么让 我们回想一下到底一个两线rs232的数据是如何传送的,如图一: 在这里我们的重点在于,我们发现要在串行口传送数据一个最体码的要求恐怕就是:要知道数据传输何时开始, 何时结束。即如何delimit.那么rs232怎么做的。显然,在idle(空闲)时,即无数据传送时,数据线处于高电 平,等到有数据开始传送,发送方首先拉低数据线(start),表示数据传输开始,接受端也因为这个“start”信号 开始准备接受即将到来的数据,类似一次握手,随后,在两者之间的数据传送开始,结束后主方再次拉高数据 线,表示结束传输,自此两者重新进入Idle状态。等待下一轮传送开始。 了解了rs232,那么我们自然想到usb如何做到这个呢,既然是串行位流传输,也理所当然的解决这个问题。没错, Usb协议必然要解决这个问题,让我们作一个类似rs232的比较吧!类似于rs232,usb的传输桢如图二:

USB协议详解

USB HID介绍 HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB 协议的相关内容。 USB设备描述符-概述 当插入USB设备后,主机会向设备请求各种描述符来识别设备。那什么是设备描述符呢? Descriptor即描述符,是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB 设备中,用于描述一个USB设备的所有属性,USB主机是通过一系列命令来要求设备发送这些信息的。 描述符的作用就是通过命令操作来给主机传递信息,从而让主机知道设备具有什么功能、属于哪一类设备、要占用多少带宽、使用哪类传输方式及数据量的大小,只有主机确定了这些信息之后,设备才能真正开始工作。 USB有那些标准描述符? USB有5种标准描述符:设备描述符、配置描述符、字符描述符、接口描述符、端点描述符。 描述符之间有一定的关系,一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。由此我们可以看出,USB的描述符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是接口描述符,再下面是端点描述符。在获取描述符时,先获取设备描述符,然后再获取配置描述符,根据配置描述符中的配置集合长度,一次将配置描述符、接口描述符、端点描述符一起一次读回。其中可能还会有获取设备序列号,厂商字符串,产品字符串等。 设备描述符 struct _DEVICE_DEscriptOR_STRUCT { BYTE bLength; //设备描述符的字节数大小 BYTE bDescriptorType; //描述符类型编号,为0x01 WORD bcdUSB; //USB版本号 BYTE bDeviceClass; //USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型,0x00不是在设备描述符中定义的,如HID BYTE bDeviceSubClass; //usb分配的子类代码,同上,值由USB规定和分配的,HID 设备此值为0 BYTE bDeviceProtocl; //USB分配的设备协议代码,同上HID设备此值为0 BYTE bMaxPacketSize0; //端点0的最大包的大小 WORD idVendor; //厂商编号 WORD idProduct; //产品编号 WORD bcdDevice; //设备出厂编号 BYTE iManufacturer; //描述厂商字符串的索引

USB接口协议

USB 接口协议简介 以及协议简介 USB (Universal Serial Bus )是近年来应用在PC 领域的新型接口技术,它是由一些PC 大厂商如Microsoft 、Intel 等为了解决日益增加的PC 外设与有限的主板插槽和端口之间的矛盾而制定的一种通用串行接口。 数据通信协议部分是USB 的核心内容。主要包括:以差模串行信号为载体传送二进制代码来传输信号;数据包作为最基本的完整信息单元,包含一系列数据信息。 数据包可以分解为更小的单元—域;以包为基础,构成USB 的三种事务。进而,组合不同的传输类型,传输各种类型的数据,实现USB 的各种功能。 通信机制 为了细化USB 的通信机制,USB 协议的开发者采用了分层的概念,每一层传输的数据结构对其他逻辑层是透明的,USB 设备和USB 主机通信的逻辑结构和每 层的逻辑通道。 在HSOT 端,应用软件(Client SW )不能直接访问USB 总线,而必须通过USB 系统软件和USB 主机控制器来访问USB 总线,在USB 总线上和USB 设备进行通讯。从逻辑上可以分为功能层、设备层和总线接口层三个层次。其中功能层完成功能级的描述、定义和行为;设备级则完成从功能级到传输级的转换,把一次功能级的行为转换为一次一次的基本传输;USB 总线接口层则处理总线上的Bit 流,完成数据传输的物理层实现和总线管理。途中黑色箭头代表真实的数据流,灰色箭头代表逻辑上的通讯。如图所示: 主机 物理设备 逻辑上的数据流 实际数据流

以USB摄像头设备为例,视频播放软件想通过USB总线得到USB摄像头捕捉的视频数据,这就相当于在功能层上。应用软件是视频播放软件,功能硬件是USB摄像头。而这些数据的读取需要USB设备层提供的服务,在这一层上,主要是USB设备的驱动调度主机控制器控制器向USB摄像头发出读请求。每个USB设备会有多个管道,使用哪个管道,传输的大小都需要指定。这个层次的USB 系统软件就是USB摄像头的驱动程序。而在USB设备一端一般会有小单片机或者处理芯片负责响应这种读请求,而这一层的传输又依赖于USB总线接口层的服务。在这一层,完全是USB的物理协议,包括如何分成更小的包(packages)传输,如何保证每次包传输不丢失数据等。 传输的数据格式 其他传输协议一样,在物理层,USB当然也是通过二进制数据进行传输的,首先二进制数据构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输。 域: 是USB数据最小的单位,由若干位组成(至于是多少位由具体的域决定),域可分为七个类型: 同步域(SYNC) 八位,值固定为0000 0001,用于本地时钟和输入同步。 标识域(PID) 由四位标识符+四位标识符反码构成,表明包的类型和格式,这是个很重要的部分,这里能够计算出,USB的标识码有16种。 地址域(ADDR) 七位地址,代表了设备在主机上的地址,地址000 0000被命名为零地址,是任何一个设备第一次连接到主机时,在被主机配置、枚举前的默认地址,由此能够知道为什么一个USB 主机只能接127个设备的原因。 端点域(ENDP) 四位,由此可知一个USB设备有的端点数量最大为16个。

USB2.0协议入门中文版

USB 2.0规范 USB 体系简介 USB 是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达 480Mb/S。USB 支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得 500mA 的电流。USB2.0 被设计成为向下兼容的模式,当有全速(USB 1.1)或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它们。一条 USB 总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB 以及U SB 功能设备。 USB 体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB 接口及接口管理能力的硬件、软件及固件的复合体,可以是 PC,也可以是 OTG 设备,一个 USB 系统中仅有一个 USB 主机;设备包括 USB 功能设备和 USB HUB,最多支持127 个设备;物理连接即指的是USB的传输线。在USB 2.0系统中,要求使用屏蔽的双绞线。 一个 USB HOST 最多可以同时支持 128 个地址,地址 0 作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个 USB HOST 最多可以同时支持 127 个地址,如果一个设备只占用一个地址,那么可最多支持 127 个 USB 设备。在实际的 USB 体系中,如果要连接 127 个USB 设备,必须要使用 USB HUB,而 USB HUB 也是需要占用地址的,所以实际可支持的 USB 功能设备的数量将小于 127。 USB 体系采用分层的星型拓扑来 连接所有 USB 设备,如右图所示: 以 HOST-ROOT HUB为起点,最多 支持7层(Tier),也就是说任何一个 USB 系统中最多可以允许 5 个 USB HUB 级联。一个复合设备(Compound Device)将同时占据两层或更多的 层。 ROOT HUB是一个特殊的USB HUB,它集成在主机控制器里,不占用地 址。ROOT HUB不但实现了普通 USB HUB的功能,还包括其他一些功能,具体在增强型主机控制器的规范中有详细的介绍。 “复合设备(Compound Device)”可以占用多个地址。所谓复合设备其实就是把多个功能设备通过内置的 USB HUB 组合而成的设备,比如带录音话筒的 USB 摄像头等。 USB 采用轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个 USB 体系内仅允许一个数据包的传输,即不同物理传输线上看到的数据包都是同一被广播的数据包。 USB 采用“令牌包”-“数据包”-“握手包”的传输机制,在令牌包中指定数据包去

USB接口协议

USB 接口协议简介 B 以及协议简介 USB (Universal Serial Bus )是近年来应用在PC 领域的新型接口技术,它是由一些PC 大厂商如Microsoft 、Intel 等为了解决日益增加的PC 外设与有限的主板插槽和端口之间的矛盾而制定的一种通用串行接口。 数据通信协议部分是USB 的核心内容。主要包括:以差模串行信号为载体传送二进制代码来传输信号;数据包作为最基本的完整信息单元,包含一系列数据信息。 数据包可以分解为更小的单元—域;以包为基础,构成USB 的三种事务。进而,组合不同的传输类型,传输各种类型的数据,实现USB 的各种功能。 B 通信机制 为了细化USB 的通信机制,USB 协议的开发者采用了分层的概念,每一层传输的数据结构对其他逻辑层是透明的,USB 设备和USB 主机通信的逻辑结构和每 层的逻辑通道。 在HSOT 端,应用软件(Client SW )不能直接访问USB 总线,而必须通过USB 系统软件和USB 主机控制器来访问USB 总线,在USB 总线上和USB 设备进行通讯。从逻辑上可以分为功能层、设备层和总线接口层三个层次。其中功能层完成功能级的描述、定义和行为;设备级则完成从功能级到传输级的转换,把一次功能级的行为转换为一次一次的基本传输;USB 总线接口层则处理总线上的Bit 流,完成数据传输的物理层实现和总线管理。途中黑色箭头代表真实的数据流,灰色箭头代表逻辑上的通讯。如图所示: 主机 物理设备 逻辑上的数据流 实际数据流

以USB摄像头设备为例,视频播放软件想通过USB总线得到USB摄像头捕捉的视频数据,这就相当于在功能层上。应用软件是视频播放软件,功能硬件是USB摄像头。而这些数据的读取需要USB设备层提供的服务,在这一层上,主要是USB设备的驱动调度主机控制器控制器向USB摄像头发出读请求。每个USB设备会有多个管道,使用哪个管道,传输的大小都需要指定。这个层次的USB 系统软件就是USB摄像头的驱动程序。而在USB设备一端一般会有小单片机或者处理芯片负责响应这种读请求,而这一层的传输又依赖于USB总线接口层的服务。在这一层,完全是USB的物理协议,包括如何分成更小的包(packages)传输,如何保证每次包传输不丢失数据等。 B传输的数据格式 其他传输协议一样,在物理层,USB当然也是通过二进制数据进行传输的,首先二进制数据构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输。 3.1域: 是USB数据最小的单位,由若干位组成(至于是多少位由具体的域决定),域可分为七个类型: 3.1.1同步域(SYNC) 八位,值固定为0000 0001,用于本地时钟和输入同步。 3.1.2标识域(PID) 由四位标识符+四位标识符反码构成,表明包的类型和格式,这是个很重要的部分,这里能够计算出,USB的标识码有16种。 3.1.3地址域(ADDR) 七位地址,代表了设备在主机上的地址,地址000 0000被命名为零地址,是任何一个设备第一次连接到主机时,在被主机配置、枚举前的默认地址,由此能够知道为什么一个USB 主机只能接127个设备的原因。 3.1.4端点域(ENDP) 四位,由此可知一个USB设备有的端点数量最大为16个。

USB协议概述

USB协议概述 1 USB总线拓扑结构 2 USB设备 3 USB主机 4 USB的四种传输方式 4.1. 控制传输 4.2. 中断传输 4.3. 批量传输 4.4. 同步传输 5 USB总线协议 USB IntelUniversal Serial Bus总线协议是以intel为主,并有compag,Microsoft,IBM,DEC,Northern,Telecom以及日本NEC等共七家公司共同制定的串行接口标准,1994 11年11月制定了第一个草案,1996年2月公布了USB 规范版本1.0。USB可把多达127个外设同时联到你的系统上,所有的外设通过协议来共享USB的带宽,其12Mbps的带宽对于键盘,鼠标等低中高速外设是完全足够的。(注:在1999年2月发布的USB规范版本2.0草案中,已建议12Mbps 的带宽提升到120—240Mbps。)USB允许外设在主机和其它外设工作时进行连接、配置、使用及移除,即所谓的即插即用(Plug&Play)。同时USB总线的应用可以清除PC上过多的I/O端口,而以一个串行通道取代,使PC与外设之间的连接更容易。 下面简单介绍USB总线结构、原理,以使读者对USB有大致了解,如果需要了解其协议细节,请查阅USB总线规范。 1 USB总线拓扑结构 USB 体系采用分层的星型拓扑来连接所有USB 设备,如下图所示:以HOST-ROOT HUB为起点,最多支持7 层(Tier),也就是说任何一个USB 系统中最多可以允许5个USB HUB 级联。一个复合设备(Compound Device)将同时占据两层或更多的层。图1

2 USB设备 USB设备包括Hub和功能设备而功能设备又可以细分为定位设备字符设备等等。为了进一步叙述我们给出端点(endpoint)和管道(pipe)的概念。 端点:每一个USB设备在主机看来就是一个端点的集合主机只能通过端点与设备进行通讯以使用设备的功能每个端点实际上就是一个一定大小的数据缓冲区这些端点在设备出厂时就已定义好在USB系统中每一个端点都有唯一的地址这是由设备地址和端点号给出的每个端点都有一定的特性其中包括传输方式总线访问频率带宽端点号数据包的最大容量等等端点必须在设备配置后才能生效(端点0除外) 端点0通常为控制端点用于设备初始化参数等端点12等一般用作数据端点存放主机与设备间往来的数据 管道:一个USB管道是驱动程序的一个数据缓冲区与一个外设端点的连接它代表了一种在两者之间移动数据的能力一旦设备被配置管道就存在了管道有两种类型数据流管道其中的数据没有USB定义的结构与消息管道其中的数据必须有USB定义的结构管道只是一个逻辑上的概念 所有的设备必须支持端点0以作为设备的控制管道通过控制管道可以获取完全描述USB设备的信息包括设备类型电源管理配置端点描述等等只要设备连接到USB上并且上电端点0就可以被访问与之对应的控制管道就存在了一个USB设备可以分为三个层图2.3最底层是总线接口用来发送与接收包中

USB30协议规范中文解读

USB3.0 与USB2.0的特性比较 3.2 超速结构 超速总线是一个分层的通讯结构,如下图所示: 1 协议层: 协议层在主机和设备间定义了end-to-end通讯规则。超速协议在主机和设备端点(endpoint)之间提

供应用数据信息交换。这个通讯关系叫做管道(pipe)。 它是主机导向的协议,意味着主机决定什么时候在主机和设备间进行应用数据传输。设备可以通过一个特定端点向主机发起异步请求服务,所以它不是一个轮询协议(USB2.0为轮询协议)。数据可以连续突发传输,提高总线效率。 对某些传输类型(块传输),协议提供流控支持。 SS设备可以异步发送,通知主机,设备的功能状态发生改变。而不是轮询的方式。设备端点可以通过设备异步发送的“ready”包(ERDY TP)通知主机进行数据发送与接收,主机对于“ready”通知,如果有有效的数据发送或者缓存接收数据,会添加管道。 主机发送包含主机时间戳的特殊包头(ITP)到总线上,该值可以用于保持设备和主机同步(如果需要的话)。 超速USB电源管理: 链路电源管理的关键点是: ·设备向主机发送异步“ready”通知 ·包是有路由路径的,这样就允许不参与数据通讯的链路进入或仍旧停留在低电源状态。·如果包送到一个处于低电源状态的端口,这个端口会切换到退出低电源状态并指示这是个切换事件。 设备: ·超速需要支持USB2.0对默认的控制管道的规定。 HUB设备: 因为USB3.0向下兼容USB2.0,为支持USB3.0双总线结构,USB3.0 HUB在逻辑上是两个HUB 的组合:一个USB2.0 HUB和一个USB3.0 HUB。连接到上游端口的电源和地线是共享的。 集线器参与到一个端到端的协议中,所承当的工作: ·路由选择输出的包到下游端口。 ·输入包混合传递到上游端口 ·当不在低功耗状态下时,向所有下游端口广播时间戳包(ITP) ·当在一个低功耗状态的端口检测到包时,集线器将目标端口转变成退出低功耗状态,通知主机和设备(带内)包遭遇到了一个在低功耗状态的端口。 主机(Hosts): 一个USB3.0主机通过主控器和USB设备互连。为了支持USB3.0双总线结构,USB3.0主控器必须包括超速(USB3.0)和USB2.0部分,这样可以同时管理每一个总线上主机和设2 备间的控制、状态和信息交换。 主机含有几个根下行端口实现超速USB和USB2.0,主机通过这些端口: ·检测USB设备的连接和移除; ·管理主机和设备间的控制流; ·管理主机和设备间的数据流; ·收集状态和活动统计;

USB协议规范

USB协议规范 1 USB的基本特征 1.1 USB系统结构 1.2 机械特性、电气特性 1.3 USB电源 1.4 USB信号 2 USB通信协议 2.1 USB事务处理 2.2 USB数据传输类型 2.3 USB描述符 2.4 USB设备请求 2.5 USB设备枚举 USB系统的设计必须遵循USB的协议规范,因此对其进行一定的介绍,只有理解了USB的协议规范内容,才能正确的进行USB系统的设计。 1 USB的基本特征 1.1 USB系统结构 在终端用户看来,USB系统就是外设通过一根USB电缆和PC机连接起来。USB在外设和PC机之间提供通信服务,通常外设称为USB设备,把其所连接的PC机称为主机,并且把指向USB主机的数据传输称为上行通信,把指向USB设备的数据传输称为下行通信。 USB主机及主控制器/根集线器(host controller/root hub)是整个USB 系统的大脑,负责完成主机和设备间的数据传输。USB根集线器提供USB连接端口给USB设备或USB集线器使用。 USB设备(USB device)指各种类型的USB外设。它们可以与USB主机交互数据信息,并为主机提供额外的功能,但在使用前主机必须对其进行配置。USB 设备按功能不同,可以分为集线器和功能设备两大类。其中,集线器为USB系统提供额外的连接点,它使得一个USB端口可以连接多个设备;功能设备为主机提供额外的功能,如USB鼠标,USB键盘等等。 USB的链接从逻辑上看每个USB设备都是直接和主机相连进行数据传输的,但从物理结构来看。USB链接采用的是呈阶梯式的星状排列(Tiered Star Topology),如图1所示。图中整个USB总线拓扑体系由三个元素组成:主机(host)、集线器(Hub)和功能设备(Function)。Hub是每个星型结构的中心,用于连接主机和设备。在目前的PC应用中,PC就是主机(Host)和根集线器(Root Hub),用户可以将外设或附加的Hub与之连接,一台含有一个USB主控制器的

usb.的协议及规范

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 usb.的协议及规范 甲方:___________________ 乙方:___________________ 日期:___________________

第1章绪论 1.1 起因 Intel公司开发的通用串行总线架构(USB)的目的主要基于以下三方面考虑: (一)计算机与电话之间的连接:显然用计算机来进行计算机通信将是下一代计算机基本的应 用。机器和人们的数据交互流动需要一个广泛而又便宜的连通网络。然而,由于目前产业间的相 互独立发展,尚未建立统一标准,而USB则可以广泛的连接计算机和电话。 (二)易用性:众所周知,PC机的改装是极不灵活的。对用户友好的图形化接口和一些软硬件 机制的结合,加上新一代总线结构使得计算机的冲突大量减少,且易于改装。但以终端用户的眼 光来看,PC机的输入/输出,如串行/并行端口、键盘、鼠标、操纵杆接口等,均还没有达到即插即用的特性,USB 正是在这种情况下问世的。 (三)端口扩充:外围设备的添加总是被相当有限的端口数目限制着。缺少一个双向、价廉、 与外设连接的中低速的总线,限制了外围设备(诸如电话/电传/调制解调器的适配器、扫描仪、 键盘、PDA)的开发。现有的连接只可对极少设备进行优化,对于PC机的新的功能部件的添加 需定义一个新的接口来满足上述需要,USB就应运而生。它是快速、双向、同步、动态连接且 价格低廉的串行接口,可以满足PC机发展的现在和未来的需要。 1.2 USB规范的目标 本书规范了USB的工业标准。该规范介绍了USB的总线特点、协议内容、事务种类、总线 管理、接口编程的设计,以及建立系统、制造外围设备所需的标准。 设计USB的目标就是使不同厂家所生产的设备可以在一个开放的体系下广泛的使用。该规 范改进了便携商务或家用电脑的现有体系结构,进而为系统生产商和外设开发商提供了足够的空 间来创造多功能的产品和开发广阔的市场,并不必使用陈旧的接口,害怕失去兼容性。

USB协议的中文简要说明书

USB(Universal Serial Bus) USB(通用串行总线)是用于将适用USB的外围设备连接到主机的外部总线结构,其主要是用在中速和低速的外设

在USB的网络协议中它负责管理整个USB系统Host与USB Device的通信Host 端有一个Root Hub???????ú?éò?á??óò???USB Hub 或一个USB Device?′USB Hub可以将一个USB端口扩展为多个端口如USB键盘USB MODEM Compound Device是指带一个Hub和一个或多个不可删除的USB Device的复合设备 USB的系统有且只有一个host所以将两台PC的USB 口通过A-A USB电缆连接起来如果将两个host连起来通信 与它的网络协议冲突Prolific等厂家有USB到USB的设备控制器 USB设备 USB的设备可以接在PC上的任意的USB接口上 USB的Hub有一个上行的端口(到host) 从而可以使整个的系统可以扩展的连接127个外设 对于USB系统来说所有的其他连接到host都称为设备 只有通过host的管理与调节才能够实现数据的互相传送通常会有一个根Hub USB的设备类型(device class) 虽然USB设备都会表现USB的一些基本的特征 同类型的设备可以拥有一些共同的行为特征和工作协议 下表中就给出一些基本的USB的设备类型分类 鼠标USB_DEVICE_CLASS_HUMAN_INTERFACE 图像摄相机.扫描仪USB_DEVICE_CLASS_IMAGE 显示监视器USB_DEVICE_CLASS_MONITOR 物理回应设备动力回馈式游戏操纵杆USB_DEVICE_CLASS_PHYSICAL_INTERFACE 电源不间断电源供应USB_DEVICE_CLASS_POWER 打印机USB_DEVICE_CLASS_PRINTER Bulk存储器硬盘USB_DEVICE_CLASS_STORAGE HUB USB_DEVICE_CLASS_HUB

USB协议简介

usb作为一种串行接口,应用日益广泛。如同每个工程设计人员必须掌握 I2C,RS232这些接口一样,我们也必须掌握usb. 但是usb的接口协议实在有点费解,linuxuhci驱动作者之一Alan Stern曾经就说过“The USB documentation is downright evil. Most of it is just crap, written by a committee. You're better off ignoring most of it ”。本文将从整体上介绍usb协议,包括usb host ,usbhub,usb function。希望能给读者一个总体上的了解。也因此,文章将分成相应的三部分讲解。 一。usb function 1。初识b是一种串行接口协议,它靠d+,d-两条数据线构成的差分线来进行数据传输,这让我们非常感兴趣它到底和我们通常熟悉两线 rs232/485有何区别。了解这种区别有助于我们对usb作一个深入的了解。那么让我们回想一下到底一个两线rs232的数据是如何传送的,如图一: 在这里我们的重点在于,我们发现要在串行口传送数据一个最体码的要求恐怕就是:要知道数据传输何时开始,何时结束。即如何delimit.那么 rs232怎么做的。显然,在idle(空闲)时,即无数据传送时,数据线处于高电平,等到有数据开始传送,发送方首先拉低数据线(start),表示数据传输开始,接受端也因为这个“start”信号开始准备接受即将到来的数据,类似一次握手,随后,在两者之间的数据传送开始,结束后主方再次拉高数据线,表示结束传输,自此两者重新进入Idle状态。等待下一轮传送开始。 了解了rs232,那么我们自然想到usb如何做到这个呢,既然是串行位流传输,也理所当然的解决这个问题。没错,Usb协议必然要解决这个问题,让我们作一个类似rs232的比较吧!类似于rs232,usb的传输桢如图二: (这里我们暂时忽略这个传输所代表的意义)为了说明问题,我们对一些问题简化,我们定义这样几个状态: 假设D+,D-分别表示usb信号线的电平信号。那么对于usb full speed

相关主题