USB控制传输

来源:互联网 发布:医学统计常用那些软件 编辑:程序博客网 时间:2024/05/18 01:52


控制传输

 

  控制传输是USB传输中最重要的传输,只有正确地执行完控制传输,才能进一步地执行其他的传输类型。这种传输是用来提供介于主机与设各之间的配置、命令或状态的通信协议。控制传输能够使能主机去读取相关设各的信息,去设置设各地址,以及选择配置与其他的设置等。此外,控制传输也能够送出自定义的要求,以针对任何的目的送出与接收数据。因此,须以双向传输来达到这个要求。当然,所有的USB设备必须支持控制传输。

  控制传输又包含了3种控制传输形态:控制读取、控制写人以及无数据控制。其中,又可再分为23个层:设置层、数据层(无数据控制没有此层)以及状态层。当然,根据通信协议的简易口诀,这最后的3则为实现一个控制传输所需的3个数据交易层。通过这样介绍,用户或许会有点模糊。

如图1所示。

usb-控制传输

  图1 USB控制传输的关联图

  每当设备第一次连接到主机时,控制传输就可用来交换信息,设置设各的地址或读取设备的描述符与要求。由于控制传输非常重要,所以必须确保传输的过程没有发生任何错误。这个帧错的过程可以使用CRCCyclic Redundancy Check,循环校验)错误检查方式来加以检测。如果这个错误无法恢复,只好再重新传输一次。

  每一个USB设备第一次执行控制传输时,占用了端点0以及地址0。其中,端点0是作为控制传输的特定端点,别的USB传输类型不能拿来使用;而地址0,则是一开始外围设备所占用的预留地址。

  控制传输都是采用对设各发出要求的方式,让设备可以遵循USB主机所起始的要求格式。而这种传输方式,主要就是将数据从设备传回至主机上。例如,当主机发出了一个设备要求去读取一个设备描述符时,就会执行控制传输。该要求的结构中包了SETP封包以及随后紧接着描述设各要求8字节数据的DATA0封包。

  以下,列出主机对外围设各产生起始作用的3种基本控制传输:

  ·控制读取;

  ·控制写人;

  ·无数据控制。

  这些控制传输能够再区分为3种不同的数据交易的型态:设置层、数据层以及咿层,如表所列。每一个阶段即是一个数据交易。一个控制传输共需3个数据交易,这即是54233的第5个数字“3”。用户也可同时参考表31的传输类型、数据交易与包的关系。

  表 控制传输

  另外,在执行控制传输的时候,还须使用数据紧密连接机制来确保整个的传输赳中,主机与设备能维持同步,并确保数据的正确性。而执行控制传输时的数据紧密连程序,如图2所示

usb-控制传输

 

  图2 执行控制传输时,数据紧急密连接程序

  其中,每一个层即是一个数据交易的过程。以下,依序介绍控制传输的各种层。

  1.设置层

  设置层的数据交易包含了:SETUP令牌封包与随后跟着的DATAO数据封包以及ACK握手封包共3个阶段。在DATA0封包内包含了用来描述从主机所要送给设备的要求,其所占用的8个数据宇节即可描述这个设各要求。若这个设各送出ACK令牌封包给主机,代表确认收到了数据。

  设置层是控制传输中的第一层,其作用是执行一个设置的数据交易,并定义此控制传输的内容是什么。此时,数据就会传至设各中,并指明是何种设各要求。如图3所示,显示了控制传输的设置层。其中,包含了起始封包(SOF)、令牌封包(SETUP)、数据封包(DATA0)以及握手封包(ACK)。其中,说明了起始封包、令牌封包以及数据封包是由PC主机所发出的,而紧接着设各再发出握手封包。除了起始封包外,根据前一章所提及的USB通信协议简易口诀,即是54233的第4个数字“3”

usb-控制传输

 

  图3 控制传输的第一层:设置层


 转自连接:http://blog.sina.com.cn/s/blog_3d6cdc390100iu9w.html


0 0