在USB接口的通信协议中,由于主机取得的主控权,所以对于设备而言,只有“听命行事”。因此,主机与设备之间就必须遵循某种已沟通的特定命令格式,以达到通信的目的。这个命令的格式就是USB规范中所制定的“标准要求”。这个标准要求的设置、清楚与取得都须通过控制传输的数据交易来达成。
在控制传输设置层的数据交易中包含了令牌封包→数据封包→握手封包这3个封包阶段。其中的数据封包就是放置“标准要求”的地方。它是一个8字节的DATA1数据封包。表1列出了标准要求的要求形态内容。
表1 执行设置层数据交易时,标准要求的要求形态内容
事实上,表1的8字节放置于跟随在SETUP令牌封包后的数据封包字段内。除此之外,表1的数据格式还须与表2的“标准要求”配合在一起才金额以执行完整的标准要求。
表2内的8字节放置于跟随在SETUP令牌封包后的数据封包字段内。为了取得这8字节的标准设各要求,一般的USB单片机通常使用一个数组或特定的FIFO来存储这个重要的SETUP数据;而在EZ-USB EX单片机中,使用定义为SETUP[7]数组来加以存储。
表2 标准要求的格式
若以之前所举的Get_Descriptor为例,就可以了解一个设备要求执行的过程。可以从图41和表2了解到bRequest的类型,而在此图中以Get_Descriptor为例,利用wValueH字段值延伸至DEVICE(设备)、CONΠGURATION(配置)以及STRING(字符串)等取得描述符标准要求,即分别为取得设备描述符、取得配置描述符以及取得字符串描述符等的标准要求。
综合了描述符与设各要求的章节,可以归纳一些重点,也就是说,这些设各要求与描述符在控制传输时,放置于何处呢?用户可以了解到设各要求放置于设置层的数据封包内的数据域位中:
设置层→数据封包→数据域位→设备要求
而描述符则放置于数据层的数据封包的数据域位中:
数据层→数据封包→数据域位→描述符
因此,用户必须执行一个完整的控制读取或写人传输,才可执行标准要求,以及取得真正所要的描述符内容。可以这样说,标准要求是个“命令”,而描述符所内含的内容才是所要取得的“数据”。当然,这个数据层可以根据描述符的数目,而以8字节为一组的方式,依序读取数个数据层的数据封包内的数据域位内含值。图2为控制传输的意义与目的。
换句话说,对于控制读取传输而言,SETUP封包(设置层),其后所跟随的数据封包的内含值,为所要设置的标准设各要求。在IN封包(数据层),其后所跟随的即为所要接收的设各的各种描述符。而OUT令牌封包(状态层),其后所跟随的数据封包的内含值为空的,以说明整个控制传输已经结束了。
以下,针对bmRequestType[4:0]位,再区分为3种类型:标准设备要求、标准配置要求以及标准端点要求。这些标准要求与各个描述符有相当大的关系。
图1 标准要求的架构示意图
图2 控制传输的意义与目的
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。