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.

[参考译文] TUSB7340:检测 USB 设备时出现问题

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1421877/tusb7340-problems-detecting-usb-devices

器件型号:TUSB7340
主题中讨论的其他器件: TPS62825ATUSB522P

工具与软件:

您好!
我们在 VPX 扩展卡中使用了 TUSB7340来为单板计算机提供额外的 USB3.0接口。 我们的设计基于 TI 的参考设计、但有一些 微小的差异。
目前、我们正处于原型集成阶段、并且卡的 USB3部分存在一些问题。 行为因操作系统而异:

Ubuntu 20.04 LTS:
xHCI 控制器始终正确枚举、并在 lspci 中列出为:

德州仪器(TI) TUSB73x0超高速 USB 3.0 xHCI 主机控制器(修订版02)

但通常它在启动时无法正常工作。 尽管控制器显示在 lspci 输出中、但如果我们将 USB 设备(3.0或2.0)连接到其端口之一、则无法识别该设备。

当发生这种情况时、dmesg 显示一个在 器件初始化之后启动时发生的错误:

[ 0.860835] PCI 0000:08:00.0:[104C:8241]类型00类0x0c0330
[ 0.860864] PCI 0000:08:00.0:寄存器0x10:[MEM 0x52b00000-0x52b0ffff 64bit]
[ 0.860883] PCI 0000:08:00.0:寄存器0x18:[MEM 0x52b10000-0x52b11fff 64位]
[ 0.860925] PCI 0000:08:00.0:最大有效负载大小设置为256 (以前为128、最大为1024)
[ 0.861033] PCI 0000:08:00.0:支持 D1 D2
[ 0.861035] PCI 0000:08:00.0:D0 D1 D2 D3hot 支持 PME#
[ 1.112818] PCI 0000:08:00.0:quirk_usb_early_handoff+0x0/0x6a0花费117132 us
[ 1.596541] xhci_hcd 0000:08:00.0:xHCI 主机控制器
[ 1.596558] xhci_hcd 0000:08:00.0:已注册新 USB 总线、已分配总线编号5
[ 1.596708] xhci_hcd 0000:08:00.0:HCC 参数0x0270f06d HCI 版本0x96 quirks 0x0000000004000000
[ 1.597744] xhci_hcd 0000:08:00.0:xHCI 主机控制器
[ 1.597754] xhci_hcd 0000:08:00.0:已注册新 USB 总线、已分配总线编号6
[ 1.597758] xhci_hcd 0000:08:00.0:主机支持 USB 3.0超高速
[ 1.597848] USB USB5:SerialNumber:0000:08:00.0
[ 1.59871] USB usb6:SerialNumber:0000:08:00.0
[ 1.806552] xhci_hcd 0000:08:00.0:xHCI 主机控制器无响应、假设已经损坏
[ 1.806563] xhci_hcd 0000:08:00.0:HC 已死;正在清理

如果在启动时未发生此错误、则器件正常运行、并且 USB3和 USB2器件均正常运行。

通过将 USB 器件连接到其中一个 TUSB7340端口进行引导似乎可以降低 发生错误的可能性。

Windows 10 Enterprise LTSC:


启动时、在设备管理器(德州仪器(TI) USB3.0 xHCI 主机控制器)中一直报告 xHCI 控制器正常工作。
当 USB 设备连接到其中一个 USB 端口时、设备管理器中的 xHCI 控制器附近会出现一个黄色标记、并且出现错误:

"此设备不存在、无法正常工作或未安装其所有驱动程序。 (代码24)"

器件属性中报告。 永远无法识别 USB 设备。

在 UEFI BIOS 中、无法识别连接到 TUSB7340端口的 USB 设备、因此我们无法使用这些端口从 USB 引导。

似乎在 PCIe 端检测到器件、但某种程度会阻止其正确初始化。  这是否与 BIOS ACPI 设置有关?

我们的设计与 TI 参考设计之间的主要差异是:

使用 TPS62825A 代替 TPS74401RGW 提供1.1V 电源
2- GRST 源自无延迟的1.1V 电源正常信号(仅10K 上拉电阻、无电容器至 GND)
3 - AUX_DET 通过10k 电阻接地

关于第2点、我们可以使用微控制器驱动 GRSTZ。 我们尝试更改该信号的时序但没有效果。
您对调试此问题有什么建议吗?

谢谢你

Davide

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

    大卫、您好:

     您可以在上电期间获取3.3V、1.1V 和 GRSTz 信号的波形吗?

    此致

    Brian

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

    Brian、您好!

    这是上电序列:红色轨迹为3.3V、蓝色为1.1V、绿色为 GRST

    此致

    Davide

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

    您好、Davide:

     是否可以在 GRSTz 上添加2uf 电容?

    好的

    Brian

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

    Brian、您好!

    1uF:

    使用2.2 μ F 时:

    两种情况下问题仍然存在。

    此致

    Davide

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

    您能否发送原理图进行审阅?

    好的

     Brian

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

    Brian、

    USB3部分:

    1.1V 电源部分:

    和 GRSTz:

    USB3_RST 是 ARM 微控制器提供的数字输出、可 连接到 TUSB7340 GRST。 目前该信号连接到 1.1V 稳压器的 PG 输出。

    谢谢

    Davide

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

    您好、Davide:

      我没有看到任何原理图问题。

    1: 是否可以删除已安装的 EEPROM?

    2: 您能否检查 XIN 48Mhz clk 和 PCIe clk 是否符合以下时序规格?

    好的

    Brian

      

      

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

    Brian、您好!

    1:未安装 EEPROM

    2:这是时钟启动顺序:

    (蓝色:3.3V、红色:GRSTZ、绿色:PCIe REFCLK、棕色:48MHz 时钟)

    PERST 是由单板计算机控制的、在此序列中被置为无效的时间很长(>3s)。  

    100Mhz 时钟由单板计算机生成、并分布在 VPX 总线上。 我们还可以 为 PCIe 时钟使用本地100MHz 振荡器。

    我还尝试使用本地时钟、但在本例中未在 PCIe 总线上检测到主机控制器。 分布式时钟的唯一区别是、它在3.3V 稳定后大约6ms 开始、而分布式时钟在上电时立即启动。

    此致

    Davide  

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

    您好、Davide:

     对于 Windows、您是否尝试过  在 TI.com 上使用 TI 驱动程序?

    好的

    Brian

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

    Brian、您好!

    是的、我们仅安装了  SLLC448  适用于 Win8/8.1/10的 TUSB73x0 xHCI 滤波器驱动程序、可从 TI.com 下载。

    谢谢

    Davide

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

    您好、Davide:

     您可以尝试使用 Windows 默认 xHCI 转接驱动器吗?

    好的

    Brian

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

    Brian、您好!

    删除 TI 驱动程序时没有变化、仅保留标准 W10 xHCI 驱动程序

    我认为问题是在 USB 端、而不是在 PCIe 端。  

    在我之前的说明中、我遗漏了一个详细信息:端口1和端口2 (这 是我们设计中唯一使用的端口)不直接连接到 USB3连接器。 我们在 USB3连接器之前就有一个 TUSB522PI 转接驱动器。 这是原理图:

    在实际配置中、未安装 R108、R111、R113、R115和 R117:当该器件被识别(在 Linux 中)时、它以 USB3速度工作、所以我认为均衡/去加重输入设置正确。 我们过去使用过这种转接驱动器、但没有出现任何问题 (使用不同的主机控制器)。

    此问题似乎在设备初始化中。  

    正如我写的、如果在启动时已连接 USB 设备、这似乎有助于控制器正确初始化

    转接驱动器 在此行为中是否会产生一定的影响?

    此致

    Davide

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

    您好、Davide:

       端口1/2到 TUSB522之间的布线长度、可能是 EQ 设置不正确。

     我还注意到、  TPS62825A  是 以 2.2Mhz 开关的直流转换器、该噪声 会影响内部 PLL 性能。  您需要添加   至少适用于直流转换器的铁氧体磁珠。  

    此致

    Brian

       

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

    Brian、您好!

    转接驱动器和 USB3连接器之间的布线长度约为15mm。 但我们必须管理一根连接到此类端口的0.5m 电缆。

    我们在以前的设计中使用了相同的 EQ 设置和元件放置、其中我们有相似的信号路径、并且它们运行良好。  当前设计的新条目 是 TUSB7340。

    关于直流/直流转换器、您是否意味着在直流/直流输出和 TUSB7340 1.1V 电源线之间添加铁氧体? 在当前的 PCB 版本中、我们没有执行此操作的物理空间。 我可以尝试移除 TPS62825A 并从外部连接1.1V LDO 来代替它。

    此致

    Davide

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

    Davide:

       您是否知道2.5GHz 时的电缆损耗是多少?

      值得尝试使用外部 LDO。

    好的

    Brian

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

    还有更新吗?

    好的

    Brian

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

    Brian、您好!

    但仍然必须尝试使用外部 LDO。  

    我计划在接下来的几天内这样做。 我会尽快更新。

    谢谢!  

    Davide

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

    Git。

    好的

    Brian

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

    Brian、  

    使用1.1V LDO 进行测试。 行为也是一样的。

    如果操作系统在未连接任何器件的情况下启动、当 USB 器件插入其中一个 TUSB7340端口时、似乎会出现此问题。 但是、如果在启动时已插入至少一个器件、则将正确检测到该器件、并且其他端口也将正常工作(至少在 Linux 下)。

    这是否可以与勘误文档中描述的以下问题在某种程度上相关。 SLLZ067B?  

    "对已被禁用端口的 PORTSC 或 PORTMSC 寄存器的访问
    通过 PCI 配置地址0xE0处的 PORT (x)_DIS 位可能会导致
    控制器无响应。"

    此致

    Davide

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

    您是否 尝试过控制 PORT (x)_DIS 位?

    好的

    Brian

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

    Brian、您好!

    我试过  

    setpci -s 08:00.0 e0.l

    结果是000000000000、 在错误" xHCI 主机控制器无响应、假设已死机"  出现在 dmesg 输出中。

    因此、 当错误发生时、所有 PORT (x)_DIS 位似乎都被复位(启用所有端口)。

    目前、与 TI 参考设计唯一相关的差异是 TUSB522转接驱动器。  

    即使我无法理解 在 Linux 启动时是否已连接 USB 设备、如何才能正常工作。

    此致
    Davide

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

    让我们返回到 TUSb522p 设置:

    电缆损耗是多少? 电缆位于 TUSb522P 与连接器之间?

    好的

    Brian

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

    USB3连接器放置在距离 TUSB522大约15mm 的位置、直接焊接在 PCB 上。

    电缆从外部连接。 它是标准 COTS USB3延长电缆(插头/插座)、我不知道损耗。 但它在 我使用该器件测试的任何其他 USB3端口上运行良好。

    无论如何、如果我在没有电缆的情况下将 USB 器件直接连接到 PCB 连接器、问题也是一样的。

    如果此行为与转接驱动器相关、我认为问题在于控制器和转接驱动器之间的部分、而不是转接驱动器和连接器/电缆之间的部分。 

    Rgds

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

    您是否可以直接在 USB 连接器上测试任何其他 USB3设备,所以不涉及电缆?

    好的

    Brian

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

    Brian、已经完成了。 这没有区别。 无论是否有外部电缆、其行为都是相同的。

    Davide

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

    您是否有 USB 分析仪来测量 USB 连接器与测试设备之间的 USB 迹线?

    此致

    Brian

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

    Brian、 很遗憾、我们没有 USB 协议分析器可用。

    我们可以用一个 USB2.0分析器。 "你以为你赢了吗?

    Davide

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

    USB2器件是否正常工作?

    好的

    Brian

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

    否、USB2和 USB3器件的行为是相同的。

    此致

    Davide

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

    因此这可能不是 USB3转接驱动器问题、让我在周末思考一下。

    好的

    Brian

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

    Brian、您好!

    以下是一些新闻:我尝试通过移除朝向 TUSB7340的 RX 和 TX 线路上的耦合电容器来完全隔离转接驱动器。 这样、SuperSpeed 线路保持悬空、仅 USB2路由到连接器。

    同样的行为、仅当 USB2摆动盘在引导时已连接时、才会正确检测到它。 因此我可以确认这不是转接驱动器问题。

    请注意、只需重新启动 Linux、也会发生这种情况。 在这种情况下、 不会将 GRST 置为有效、因为1.1V 电源已存在。 单板计算机重新启动时、只有 PERST 有效。

    如果在 PERST 置为无效时未连接任何 USB 设备、则控制器可能处于某种不可恢复的状态。

    我们还有一个基于 TUSB7340控制器的 COTS XMC 模块。 该模块可与我们的单板计算机在 Windows 和 Linux 中正常运行。 我注意到这样的模块安装了 EEPROM、但我们不知道其内容。

    是否有任何 寄存器设置可以在外部闪存中编程、这可能与 我们的问题相关?

    此致、

    Davide

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

    Brian、我必须更正 我的最后一篇文章。

    当我从 Linux 重新引导时、GRST 和 PERST 都不会生效。 因此 器件没有硬件复位。

    但我想 它由 BIOS 通过 PCIe 寄存器重新初始化。

     此阶段必须有所不同、具体取决于 我们是否连接了 USB 设备。

    是否可能是 ACPI 电源管理问题?

    Davide  

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

    您好、Davide:

     您是否有  XMC 模块的 EEPROM 文件?

     您是否尝试  在未 连接设备的情况下完全关闭系统电源并打开电源?

     

    这可能是 ACPI 电源管理问题吗?

      您只需禁用 ACPI 并尝试。

    此致

    Brian

      

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

    Brian、  

    •  我们没有 XMC 模块的 EEPROM 文件。 这是一个 COTS、所以我们没有它的技术细节
    • 首次上电时的行为与重新引导后的行为相同。 仅当系统开始引导时、至少已插入一个 USB 器件时、TUSB7340才会工作。

    我已经尝试更改一些 BIOS ACPI 设置而没有任何结果,但实际上我不 知道这些设置中的哪些可能会影响 TUSB7340的操作。

    此致

    Davide

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

    我可能会给您发送一个 EVM、以便对您的系统进行测试、看看是否存在同样的问题。

     您在美国吗?

    好的

    Brian

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

    谢谢 Brian、我们已购买了用于评估 Linux 支持的 TUSB7340 EVM。  

    遗憾的是、我们无法在我们当前的项目中进行尝试、因为它基于 VPX 架构、而 EVM 需要标准 PCIe x1连接器。

    同时、我设法从工作中的 XMC 模块中读取 EEPROM、但似乎在所有寄存器中预加载了自定义的默认值(子系统 ID 和供应商 ID 除外)。

    总之、通过在启动后立即比较 TUSB7340的电路板寄存器和 XMC 模块、我发现了 PCIe 延迟设置和 ASPM 支持方面的一些差异。 在我们的板中、这些值与重置后应具有的默认值不同。  

    我正在尝试了解这些寄存器何时在启动阶段被覆盖。 此外、我还会尝试在我们的板中安装一个具有默认寄存器值的 EEPROM、以查看是否有任何变化。  

    此致

    Davide

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

    好的、完成测试后请更新。

    好的

    Brian

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

    Brian、

    测试已完成。 我安装了一个 EEPROM、该 EEPROM 在复位时已使用配置寄存器的默认值进行了编程、如数据表所示。  

    这修复了问题。 我并不是很清楚原因、但看起来如果控制器从 EEPROM 加载配置寄存器、会正确初始化、尽管 EEPROM 中的内容与配置寄存器在复位后应该具有的内容相同。

    感谢您的支持。

    此致

    Davide

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

    Brian、

    我在 本论坛的一个旧主题中读到 、有一个闪存 烧录软件可直接使用 TUSB7340对连接的 EEPROM 进行编程:

    https://e2e.ti.com/support/interface-group/interface/f/interface-forum/496678/flash-burner-program-for-tusb7340

    该软件仍然可用吗? 对于处于生产阶段的我们来说、在将 EEPROM 安装 到 PCB 上之前、避免对 EEPROM 进行编程将非常有用。

    谢谢

    Davide

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

    您好、Davide:

       我们只有通过 USB 连接的集线器 EEPROM 工具、我们永远不会获得用于托管上述 E2E 票证的 EEPROM 工具。

    好的

    Brian