USB集线器描述符——HUB TT模式的区别

一个USB2.0 集线器内部由三大部分组成,分别为:

1:线器中继器(the Hub Repeater):负责连接设置和断开,它还支持异常处理,例如总线故障检测和恢复以及连接/断开检测

2: 集线器控制器(the Hub Controller):提供主机到集线器通信的机制。特定于集线器的状态和控制命令允许主机配置集线器,并监视和控制其各个面向下游的端口。

3:事务转换器(the Transaction Translator):响应高速拆分split事务,并将其转换为全/低速事务,在面向下游的端口上连接全/低速设备。

其中事务转换器简称“TT”

本文重点讲述HUB在高速模式下,STT和MTT接口描述符区别,以及接口描述符中bAlternateSetting该字段的使用

对于这些USB标准的描述符,其一些字段已经通过预定义确定。

USB集线器会根据实际的连接情况会返回三类不同的描述符集:

一:设备工作在低速/全速模式下。

工作在低速或者全速模式下的HUB,其设备描述符的bDeviceProtocol必须为0,同时其接口描述符的bInterfaceProtocol也必须为0。

(以下为配置为全速的CH334H)

二:HUB设备工作在高速模式下

工作在高速模式下的HUB有两种描述符集,分别为单TT和多TT.所有的HUB必须支持单TT,故必须支持单TT描述符集。多TT集线器相对于单TT增加了一个额外的接口描述符(带有对应的端点描述符)。

TT(事务翻译器)主要作用是响应高速拆分事务,在面向下游的端口上的全速/低速设备时将其转换为全速/低速事务连接,使得连接到USB hub的全速USB设备的数据流转换为高速USB设备可以理解的数据流,以便高速USB设备能够与全速USB设备进行通信,它可以确保USB hub中的所有设备都可以与其他设备进行通信,并且可以保持高速USB设备的速度和效率,HUB也被分为单TT和多TT,顾名思义多个TT可以高效的处理多个低全速事务。

1:STT

单TT描述符集中,其设备描述符的bDeviceProtocol必须为1,并且其接口描述符中的bInterfaceProtocol必须为0;

(以下为创惟的HUB,GL850)

2:MTT

多TT描述符集中,设备描述符中的bDeviceProtocol值为2,第一个接口描述符中的bInterfaceProtocol为1,第二个接口描述符中的bInterfaceProtocol值为2。

如果设备配置支持具有两个备用设置的单个接口,则配置描述符后面跟着一个接口描述符,其中包含 bInterfaceNumber 和 bAlternateSetting字段设置为 0,然后是该设置的端点描述符,然后是另一个接口描述符及其关联的端点描述符。第二个接口描述符的 bInterfaceNumber 字段将也设置为 0,但第二个接口描述符的 bAlternateSetting 字段将设置为 1。

(以下为对标创惟产品的沁恒HUB,CH334H)

三:关于接口描述符中bAlternateSetting的使用

bAlternateSetting 用于在同一个接口中的多个描述符中进行切换:

在USB协议中同一个配置中的不同接口不能共用端点

同一个接口下可以有多个接口描述符(备用),用 bAlternateSetting 来识别,

每一个接口都有一个唯一确定的接口编号,但是一个接口却可以由不只一个接口描述符来描述它。USB 允许多个接口描述符来描述同一个接口,且这些描述符都可通过命令切换。控制传输中的 Get_Interface 命令可以用来得到目前正在使用的描述一个确定接口的接口描述符的编号,即对应 bAlternateSetting 字段,而 Set_Interface 命令则以此字段值为参数, 用来使相应的接口描述符描述某个确定的接口

例如:由上述高速模式下STT\MTT HUB的不同接口描述符可知,CH334有两个不同的接口描述符,其中STT HUB接口描述符集中bAlternateSetting字段默认状态配置为0,而MTT HUB在设置配置后,主机驱动会选择更高效的MTT方式, 通过01 0B 01 00 00 00 00 00方式设置接口命令bAlternateSetting此字段为1

此处验证,通过修改主机驱动和通过BUSHUND软件对应端点下发设备接口命令01 0B 00 00 00 00 00 00也可以主动修改不同的接口描述符以对应主机选择用STT还是MTT模式

附:以下是部分USB协议原文参考

posted @ 2024-11-08 14:06  WCHXCC  阅读(917)  评论(0)    收藏  举报