文档库 最新最全的文档下载
当前位置:文档库 › USB协议CRITICAL

USB协议CRITICAL

SOF 包数据用逻辑分析仪实时采集见下图:

00000001(SYN 80h) + 10100101(PID A5h) + 帧数(269h) + CRC + EOP

00000001(SYN 80h) + 10100101(PID A5h) + 帧数(26Ah) + CRC + EOP

SOF包整体采集见下图,可见,每隔1ms就会重复发送一次SOF包:

USB基本数据传输说明:

包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在USB总线上的传输以包为单位,包只能在帧内传输。高速USB 总线的帧周期为125us,全速以及低速USB 总线的帧周期为1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为EOF。EOF不是一个包,而是一种电平状态,EOF期间不允许有数据传输。

注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,因此其帧编号的增加周期也为1mS。

USB总线上的情形是怎样的?

包是USB总线上数据传输的最小单位,不能被打断或干扰,否则会引发错误。若干个数据包组成一次事务传输,一次事务传输也不能打断,属于一次事务传输的几个包必须连续,不能跨帧完成。一次传输由一次到多次事务传输构成,可以跨帧完成。

USB包由五部分组成,即同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP),包的基本格式如下图:

1.1 PID类型(即包类型)

USB 低速和全速模式:

每发送一个数据包(USB最小传输单元)之前会发送一个NRZI的同步码,即:7’b0+1’b1 (80H)

全速协议和低速协议对时钟精确度(数据比特率)的要求见下表:

5.10.2 USB Clock Model

Time is present in the USB system via clocks. In fact, there are multiple clocks in a USB system that mustbe understood:

?Sample Clock: This clock determines the natural data rate of samples moving between client softwareon the host and the function. This clock does not need to be different

between non-USB and USBimplementations.

?Bus Clock: This clock runs at a 1.000ms period (1kHz frequency) and is indicated by the rate of SOFpackets on the bus. This clock is somewhat equivalent to the 8MHz clock in

the non-USB example.In the USB case, the bus clock is often a lower-frequency clock

than the sample clock, whereas the busclock is almost always a higher-frequency clock

than the sample clock in a non-USB case.

?Service Clock: This clock is determined by the rate at which client software runs to service IRPs thatmay have accumulated between executions. This clock also can be the

same in the USB and non-USBcases.

5.10.3 Clock Synchronization //时钟同步问题在USB协议中已有考虑

In order for isochronous data to be manipulated reliably, the three clocks identified above must besynchronized in some fashion. If the clocks are not synchronized, several clock-to-clock attributes can bepresent that can be undesirable:

?Clock Drift: Two clocks that are nominally running at the same rate can, in fact, have implementationdifferences that result in one clock running faster or slower than the

other over long periods of time. If uncorrected, this variation of one clock compared to

the other can lead to having too much or too littledata when data is expected to always

be present at the time required.

?Clock Jitter: A clock may vary its frequency over time due to changes in temperature, etc. This mayalso alter when data is actually delivered compared to when it is expected

to be delivered.

Clock-to-clock Phase Differences: If two clocks are not phase locked, different amounts of data maybe available at different points in time as the beat frequency of the clocks

cycle out over time. Thiscan lead to quantization/sampling related artifacts.

The bus clock provides a central clock with which USB hardware devices and software can synchronize toone degree or another. However, the software will, in general, not be able to phase- or frequency-lockprecisely to the bus clock given the current support for “real time-like” operating system schedulingsupport in most PC operating systems. Software running in the host can, however, know that data movedover the USB is packetized. For isochronous transfer types, a single packet of data is moved exactly onceper frame and the frame clock is reasonably precise. Providing the software with this information allows itto adjust the amount of data it processes to the actual frame time that has passed.

USB的包结构及包分类//网络资料

USB的传输总是低位在前,高位在后。USB的传输方向:从设备到主机的数据为输入;从主机到设备的数据叫做输出。

1. 包结构

以同步域开始,紧跟着一个包标识符PID(Packet Identifier),最终以包结束符

EOP(End of Packet)结束这个包。

同步域

?作用:①通知USB串行接口引擎数据要开始传输;②同步主机和设备之间的时钟。

?格式:①全速/低速设备的同步域为00000001;②高速设备的同步域为31个0,后面跟1个1;注意:这是对发送端的要求,接收端在解码时,0的

个数可以少于这个数。

?包标识符PID

?包标识符PID是用来标识一个包的类型。

?PID共有8位,目前USB协议仅使用4位(PID0~PID3),另外4位(PID4~PID7)是PID0~PID3的取反,用来校验PID。

?传输的顺序为PID0,PID1,PID2,PID3,...,PID7。

?包结束符EOP

?全速/高速模式的EOP是一个约为2个数据宽度的SE0;

?高速模式的EOP是通过故意的位填充错误实现的。

?单端0(SE0):D+和D-同时保持低电平。

?单端0的用处:①包结束;②复位信号(USB集线器对USB设备的复位操作,就是将总线设置为SE0约10ms)。

?Q: 如何一个位填充错误是EOP还是传输错误?A: 通过CRC校验,即如果CRC正确,则说明这个位填充是EOP;否则说明传输错误。

2. 包分类

根据包标识符PID的不同,包可以分为四种包:令牌包(token packet, PID1~0为01)、数据包(data packet, PID1~0为11)、握手包(handshake packet,

PID1~0为10)、特殊包(special packet, PID1~0为00)。

2.1 令牌包

令牌包用来启动一次USB传输。由于USB是主从结构的拓扑结构,所以所有的数据传输都是主机发起的(唯一的例外是支持远程唤醒的设备能够主动改变总线的状态,让集线器感知到设备的唤醒信号,但是这一过程并不发送数据,只是改变总线的状态)。

令牌包分4种:输出(OUT)、输入(IN)、建立(SETUP)、帧起始(SOF)。

?输出令牌包:主机将要向设备发送一个数据包。

?输入令牌包:主机将要从设备读取一个数据包。

?建立令牌包:与输出令牌包几乎相同,不同之处是建立令牌包只使用DATA0,并且发送到设备的控制端点,设备必须接收建立令牌包。

?帧起始令牌包:在每帧(或微帧)开始时发送,并且以广播的形式发送,使得总线上的所有USB全速/高速设备都可以接收到SOF令牌包。

OUT、IN、SETUP令牌包结构图

SOF令牌包结构图

数据包的结构图

?数据包类型不匹配主要发生在握手包。

握手包结构图

?ACK:正确接收数据,并且有足够的空间容纳数据。主机和设备都可以使用ACK来确认,而NAK、STALL、NYET只有设备才能够返回,主机不能使用这些握手包。

?NAK:①没有数据需要返回;②数据接收正确,但是没有足够的空间容纳数据。

?STALL:设备无法执行这个请求或者设备已挂起。设备返回STALL,需要主机干预才能解除这种STALL状态。

?NYET:只在USB2.0高速设备输出设备中使用,表示设备本次数据成功接收,但是没有足够的空间来接收下一次的数据。主机在下一次输出数据前,将使用PING令牌包来探测设备是否有足够的空间接收数据,以免浪费不必要的带宽和时间。

帧开始包,SOF,Start-of-Frame

主机以每1.00ms±0.0005ms一次的额定速率发出帧开始(SOF)包。如下图所示,SOF 包是由指示包类型的PID和其后的11位的帧号字段构成。

SOF标记组成了仅有的(token-only)事物,它以相对于每帧的开始精确计算的时间间隔发送SOF记号(Marker)和伴随的帧数。包括集线器的所有全速功能部件都可以收到SOF包。SOF标记不会使得接收功能部件产生返回包;因此,不能保证向任何给定的功能部件发送的SOF都能被收到。SOF包发送2个时间调配(Timing)信息。当功能部件探测到SOF的PID的时候,它被告知发生SOF。对帧时间敏感而不需要追踪帧数(例如集线器)的功能部件,仅需对SOF的PID译码,可忽略帧数和其CRC。如果功能部件需要追踪帧数,它必须对PID和时间戳都进行译码。对总线时间调配信息没有特别需要的全速设备可以忽略SOF包。

USB1.1 时间帧管理

当进行控制传输和批量传输时候,不用考虑从时间方面考虑。但是对于同步传输和中断传输,均要考虑时间帧管理。USB1.1中用帧frame来考量时间,USB2.0中添加了微帧microframe。每个frame代表1ms,每个microframe代表125us。

某一时间单元内的非周期性传输(控制传输和批量传输)的数量要随着这个时间单元内的周期性传输(同步传输和中断传输)的数量而改变。USB host在进行传输时候利用frame和microframe来考量时间。当与外设device进行中断,控制,批量传输时候,并不需要去考虑时间管理。但是,在进行同步传输时,比如说我们现在做的usb音频设备,就必须用frame和microframe来得到和系统同步。从这个角度出发,host发出SOF包来表明即将开始frame和microframe。SOF包的格式见另外一篇博文。对于中断同步传输,并不使用握手包,即对于数据是否正确接收,均不会再次发送数据。

如图1所示,高速的根集线器(HUB)将会使用额外的SOF来传输8个微帧。有些书籍会把这种高速的SOF,另命名为uSOF。这种增加的微帧,同时也替高速的连接带来了更复杂的控制方式。

图1 USB帧与微帧示意图

此外,再利用如图2所示的简图来说明主机所送出的一个SOF封包的格式。其中,SOF的封包标识符,PID数据域的值为0xA5。PID[7:4]=0101(5)与PID[3:o]=1010(A)所产生的,只不过它的传送顺序须由LSB→MSB。因此,即可推算出0xA5。以下,所有的PID数据域皆可由此推算而得到。

在USB接口中,主机执行了总线的管理、数据传输以及设备对主机所提出的要求命令作出响应的动作。这些所要传输的数据与要求命令是什么呢?因此,必须通过数据封包来执行这项工作。

而由SETUP、IN与OUT令牌封包所起始的数据传输,将会以DATAO、DATA1、DATA2与MD ATA封包来加以实现。一个数据封包含了4个数据域:SYNC、PID、DATA与CRC16。各个字段的意义之前已有介绍过。这即是54233的第2个数字:4。在这里,要稍微注意的是DATA字段内所放置的位值,须根据USB设备的传输设备(低速、高速与全速)以及传输类型(中断传输、批量传输与等时传输)而定,且须以所设置的MaxPackSize字节为基本单位。也即是,若传输的数据不足MaxPackSize字节,或是传输到最后所剩余的也不足MaxPackSize字节,则仍须传输MaxPackSize个字节的数据域。

列出由4个数据域所组合而成的数据封包。

数据封包的PID数据域(PID[1:0]=[1:1])包含了4种类型:DATA0、DATA1、DATA2与MDATA。而根据USB规范,最初的数据封包都以DATA0作为开始,其后才是DATA1,然后依此方式交替切换。这个动作称之为数据紧密连接(data toggle)。这个动作有点类似将数据紧密连接。如此就可确保整个传输过程中,主机能与设各维持同步,且作为帧错之用。例如,如果两个连续的DATA0 被接收到的话,意味着DATA1封包被遗漏掉,并产生了错误的状况。而DATA2与MDATA,则仅适用于高速的等时传输。

若主机要针对特别寻址的设备端点,送出取得设备描述符的命令,就可如图4所示,将含有命令的数据封包传出。其中,须特别注意的是,由于是控制传输,所以数据域中仅有8字节。至于“8006 0001 000040”的设备要求的意义。

就使用STALL握手封包响应。图5显示一个握手封包的格式,其中ACK的PID 数据域值为Ox4B,刚好与SETUP的PID数据域值相反。

图5 握手封包的各种组成字段

通过上述的3个封包,即可组成一个数据交易。当然,这即是54233的第4个数字:3。

对于高速设备,为了改善NAK的机制,特别支持了NYET握手封包。这是由于当数据已经传输至总线时,通过NAK这个OUT数据交易的动作是不够的。况且若是在总线上存在着高频率的NAK传输过程,将会使得整个总线逐渐地被拖累,带宽被分享掉。此时,高速设各就可以使用特殊的PING封包(稍后会提及)来询问,是否接收器还有缓冲区空间来接收OUT数据交易。如果设各以ACK 来响应,那么传送器就会安排

OUT传输。反之,如果响应的是NYET,那么传送器就会以PING封包来查询。如此,总线上就会有最佳的使用率。

5.特殊封包

总共包含了4个特殊封包(PRE、ERR、SPLIT与PING)。其中,一个仅使用在低速设备,一个仅使用在高速设各,其余两个则是针对当低速或是全速设备连接上USB 2.0集线器后,再以高速的方式与主机通信时,才会用到。

(1)PRE封包

这个特殊前置(Special Preamble,PRE)封包拥有独自的PID类型名称PRE,其仅适用于主机想要从高速传输变成低速传输时所送出来的情形。也就是主机对于下端端口送出低速封包与低速设备通信之前,所必须先送出的PRE封包。在该PRE封包中,包含了前置码以告诉集线器,下一个封包是低速。如此,集线器将会以即将接上的低速设备开始执行通信的工作。此时,PRE封包会放在导引至低速设各的所有令牌、数据以及握手封包之前。而高速设各是将PRE 以SPLIT封包来加以编码,因此不会重复地送出。对于原本已是低速的设备来说,不需要PRE封包。这种格式如下所列,仅包含两个8位的数据域:SYNC 与PRE。

(2)PING封包

仅存于高速设备所使用的特殊封包是PING封包。主机会送出PING封包来找出是否高速设各端点在以批量或是包含以多个数据封包的控制传输来送出下一个数据封包之前,是否为忙碌的状态。这是由于传统的USB数据交易时,若常以NAK来响应批量或控制的OUT传输,通常都会导致浪费太多的带宽。因此,为了减少高速或控制的OUT端点的损失,USB 2.0新增了PING封包。一旦批量或控制传输的OUT数据交易被NAK响应后,主机控制器将会使用PING封包来查询高速非周期性的端点是否有足够的内存来接收wMaxPacketSize大小容量的数据。如果此端点具有足够的缓冲区来使用,就以ACK来响应之;反之,继续以NAK响应为止。

此外,高速非周期性的OUT端点也可以使用NYET来加以响应,以通知主机所要加载的数据是可以接收的,但是端点没有足够的内存。此时,主机会使用PING令牌,直到端点表示了针对下一个OUT数据交易,已有足够的缓冲区内存。

(3)SPLIT封包

SPI LIT封包定义了令牌封包为分割数据交易(split transactI ON)的一部分。为了最佳地使用总线时间,USB 2.0主机与集线器会以高速来送出低速与全速的通信数据。至于为什么需要分割数据交易呢?这是由于当主机开始传输一个针对低速或是全速的设各所预定的数据交易时,那么最接近设备的2.0集线器就有责任去实现与此设各的数据交易。此外,也负责存储任何回传的数据或是

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接口协议简介 https://www.wendangku.net/doc/be10632075.html,b以及协议简介 usb(universalserialbus)是近年来应用在pc领域的新型接口技术,它是由一些pc大厂商如microsoft、intel 等为了解决日益增加的pc外设与有限的主板插槽和端口之间的矛盾而制定的一种通用串行接口。 数据通信协议部分是usb的核心内容。主要包括:以差模串行信号为载体传送二进制代码来传输信号;数据包作为最基本的完整信息单元,包含一系列数据信息。数据包可以分解为更小的单元—域;以包为基础,构成usb的三种事务。进而,组合不同的传输类型,传输各种类型的数据,实现usb 的各种功能。 https://www.wendangku.net/doc/be10632075.html,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。初识https://www.wendangku.net/doc/be10632075.html,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 接口协议简介 https://www.wendangku.net/doc/be10632075.html,B 以及协议简介 USB (Universal Serial Bus )是近年来应用在PC 领域的新型接口技术,它是由一些PC 大厂商如Microsoft 、Intel 等为了解决日益增加的PC 外设与有限的主板插槽和端口之间的矛盾而制定的一种通用串行接口。 数据通信协议部分是USB 的核心内容。主要包括:以差模串行信号为载体传送二进制代码来传输信号;数据包作为最基本的完整信息单元,包含一系列数据信息。 数据包可以分解为更小的单元—域;以包为基础,构成USB 的三种事务。进而,组合不同的传输类型,传输各种类型的数据,实现USB 的各种功能。 https://www.wendangku.net/doc/be10632075.html,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)传输,如何保证每次包传输不丢失数据等。 https://www.wendangku.net/doc/be10632075.html,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。初识https://www.wendangku.net/doc/be10632075.html,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

相关文档