This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TUSB8041:意外进入合规模式

Guru**** 657500 points
Other Parts Discussed in Thread: TUSB8042, TUSB8041, TUSB8041A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1080233/tusb8041-accidentally-entering-compliance-mode

部件号:TUSB8041
“线程”中讨论的其它部件:TUSB8042,, 测试

我们目前无法在将来获得用于我们的主板的 TUSB8042部件,但我们可以获得 TUSB8041 (非 A)版本。
我在前面的一段线中问过,发现它是引脚兼容的,所以这不是问题。
我们目前没有 I2C 总线连接到我们的零件,但可以在必要时这样做。 我们也没有连接外部 EPROM,也没有计划这样做。

我想知道的是:
1)我听说 USB3.0设备(8041)可能意外进入合规性测试模式,然后必须关闭电源或重置才能退出该模式。
这是一个大问题吗? 我如何对此进行测试?

2)如果是这样,我在前面的讨论中看到我可以在寄存器 A 高中写入'sportecr_en'位以防止合规模式进入:
引用自2年前的线程:
-----
DSPORT ECR 位(如果启用)会更改集线器下游端口行为,以便只有在主机控制器指示时才能进入合规模式。   TUSB8041A 的默认设置为  :https://www.ti.com/lit/an/slla377/slla377.pdf?&ts=1589219767223 ,引脚与 TUSB8041兼容。
-----

3) 如果我连接 I2C 总线以写入这个位高以防止出现问题,那么似乎我们必须写入部件以在开机后激活它,它不会加载默认值,并且会出现在上游总线上,除非 CFG_ACTIVE 被清除。 这是真的吗? 我们在第一个加载了 TUSB8042的原型中发现,如果我将 SMBUSZ/SS_SUSPENON 绑定到低位置以允许使用 I2C 总线,则集线器不会出现在上游端口上。 我必须浮动此销才能激活它。

如果8041意外地不容易进入合规模式,那么我看不到有理由在每次通电后都无法激活 I2C 接口并写入 CFG_ACTIVE 和 DSPORT_ECR 位; 但是,如果这是一个真正的问题,那么我想我们必须激活并测试接口,如果需要在通电后运行。
同样,我们要继续使用8042部件,我们现在就可以得到它。

感谢您的深入见解,
沃伦

P.S.我通过切断主板上的上游连接至 Linux 控制器,并使用来自 Windows10主机的电缆布线,从而完成了当前主板上 TUSB8042下游端口的合规性测试,我可以使用 HSETT 工具激活合规性。 这不是最简单的方法,但效果很好。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,沃伦,

    我今天写了一篇有关这方面的常见问题: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1080227/faq-tusb8041-how-do-i-test-usb-3-0-usb-3-1-usb-3-2-electrical-compliance-on-usb-hubs

    1.问题的常见程度如何?  这取决于应用程序,如果它是一个比较传统的集线器应用程序,下游端口暴露在该应用程序的位置,并且由集线器 PWRCTL 引脚控制电源,那么我们看不到它。  在报告问题的大多数情况下,该问题存在于具有永久连接的下游设备的嵌入式系统中,设备在启动时的方式是下游设备在准备好实际进行轮询之前启用 Rx 终端。  我建议执行电源循环或重新启动测试,并查看下游设备是否连接失败。  或者将集线器的上游连接从 USB 2.0切换到 USB 3.0,并确保所有 USB 3.0下游设备都能正常工作。

    2 / 3是,TUSB8041需要连接 EEPROM 或连接 I2C/SMBus 主机,以便在每次开机/重置事件后写入寄存器位 DSPORTECN_EN。  此外,是的,如果 SMBUSz 较低,则集线器在设置 cfgActive 位之前不会在上游端口上连接。

    此致,

    JMMN

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供信息。 四 个下游集线器中的三个暴露在外部3.0 A 型连接器上。 第四个是连接到一个2.0的触摸屏,而不是3.0设备,只有 D+/-连接,该端口的 TX/RX 线路是 NC。 因此,我们似乎不会有问题。 我想,如果在加电过程中有一个 USB3.0设备连接到其中一个外部端口,则可能有一个,但可能唯一的问题是闪存驱动器,因此我认为这不会导致合规模式激活。 总的来说,我们似乎永远不会看到这个问题。
    但是,我们可能会进行一些 SMB R/W 通信,以查看我们是否可以通电并编写寄存器以防止问题发生。 如果问题发生在加电时,即使 端口上连接了“坏”设备,将 DSPORTECN 位写入1,然后写入 CFG_ACTIVE 位高,是否仍不允许使用兼容模式? 此外 ,我假设如果我们将8042部件放在主板上,就可以编写寄存器0A,并且 DSPORTECN 位位置将被忽略,对吗?
    也许我对这个问题有些偏执,我们的设计不会出现这种情况,但我只是检查一下。
    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,沃伦,

    您的系统似乎看不到 基于实施的问题。

    因此,如果要编写 dsportecr_en 位以防止在开机时进入合规模式,则需要在主板上设置 SMBUSz 下限,以防止集线器连接,直到配置完毕为止。 然后设置 dsportecr_en,再设置 cfg_active 位-然后集线器将在下游端口上以合规模式连接,这种模式将被禁用。  如果集线器已被枚举,则将 dsportecr_en 设置为不会更改设备行为。   

    在 TUSB8042上设置位不会影响任何内容,因为它是硬编码的。

    此致,

    JMMN