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.

[参考译文] TUSB4020BI:无法启用自定义序列号?

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1527240/tusb4020bi-cannot-enable-custom-serial-number

器件型号:TUSB4020BI
主题中讨论的其他器件:TUSB8042

工具/软件:

我正在 配置 TUSB4020 的 EEPROM(完整封装 TUSB4020BIHP) 。  我们有两个下游 USB MCU 和一个 USB-C 连接器、当我将其插入 PC 时、可以按预期获得两个 COM 端口。  我可以检查每个 COM 端口的“Bus Reported device description“、并验证我的定制产品字符串。  其中一个 MCU 还连接到 TUSB4020 EEPROM I2C 端口、因此我可以根据需要重写 EEPROM。

我可以在寄存器 5(器件控制)的位 7 中启用自定义字符串、但 TBH 我无法在 Windows 中找到位置以检查是否成功更改了字符串(而不是虚拟 COM 端口)。  但是、如果我设置寄存器 5 的位 6 来启用自定义序列号、TUSB4020 将无法正确枚举;Windows 会引发错误。

下面是我的 EEPROM 转储文件(自定义字符串,但无自定义序列号):

00000000: 55 51 04 25 80 90 00 03 03 00 22 00 00 00 00 00 | UQ.%......".....
00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00000020: 09 04 08 0C 0C 00 00 00 00 00 00 00 00 00 00 00 | ................
00000030: 31 32 33 34 35 36 37 38 00 00 00 00 00 00 00 00 | 12345678........
00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00000050: 4D 61 6E 75 66 61 63 74 75 72 65 72 00 00 00 00 | Manufacturer....
00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00000090: 50 72 6F 64 75 63 74 20 4E 61 6D 65 00 00 00 00 | Product Name....
000000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
000000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
000000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
000000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
000000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
000000F0: 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF | ................

下面是启用了自定义序列号的转储、它无法正确枚举:

00000000: 55 51 04 25 80 D0 00 03 03 00 22 00 00 00 00 00 | UQ.%......".....
00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00000020: 09 04 08 0C 0C 00 00 00 00 00 00 00 00 00 00 00 | ................
00000030: 31 32 33 34 35 36 37 38 00 00 00 00 00 00 00 00 | 12345678........
00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00000050: 4D 61 6E 75 66 61 63 74 75 72 65 72 00 00 00 00 | Manufacturer....
00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00000090: 50 72 6F 64 75 63 74 20 4E 61 6D 65 00 00 00 00 | Product Name....
000000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
000000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
000000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
000000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
000000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
000000F0: 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF | ................

唯一不同的字节(实际上是唯一的位)是寄存器 0x05 的位 6。  要启用自定义序列号、您应该执行什么特殊操作?

Dana M.

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

    尊敬的 Dana:

     让我来 详细地看看这个周末。 它不应导致枚举问题。

    好极了

    Brian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    其中一个 MCU 也连接到 TUSB4020 EEPROM I2C 端口、因此如果需要、我可以重写 EEPROM。

    集线器 EEPROM I2C 是主器件、您不能使用 MCU 来写入 EEPROM、因此我认为您没有 正确写入 EEPROM。

    什么是 STATUS 或 SMBus 引脚?

    好极了

    Brian

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

    我意识到我的讲话可能不准确... TUSB4020 可能正在 正确进行枚举;但是、当设置了“customSernum"位“位时、Windows 将 USB 集线器标记为无法运行、原因不清楚。

    SMBus 引脚通过 4.7K 被拉高、因此 TUSB4020 配置为从 EEPROM 引导。  我的 MCU 在系统启动后至少等待两秒钟、以确保 TUSB4020 在启动时有足够的时间读取其 EEPROM。  我可以从 MCU 读取/写入 EEPROM 的逻辑捕获、以及启动时读取完整 EEPROM 的 TUSB4020 捕获。  可以放心、我会正确地对 EEPROM 进行编程。

    我设置逻辑分析仪、以便在 TUSB4020 启动时捕获 EEPROM 流量。  我捕获了 TUSB4020 工作原理、TUSB4020 发生故障(在 Windows 中)。  仅差一位(自定义序列号位):

    以下是设置自定义序列号位时出现的错误:

      

    同样、我设置自定义序列号对我的应用程序并不重要;但是、设置此位会导致 Windows 拒绝设备、这似乎很奇怪。

    Dana M.

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

    更改 EERPOM 后、可以将 I2C 总线从 MCU 移除到 EEPROM 吗?

    好极了

    Brian

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

    没有切割布线的情况下。  当 MCU 不访问 EEPROM 时、其 I2C 引脚处于高阻态、不会影响总线运行。

    我觉得您担心、使用 MCU 作为系统内 EEPROM 编程器会以某种方式影响 TUSB4020 的运行。  我相信这不是。  因此、为了消除这一概念、我刚才做了以下事情:

    1. 使用“正常工作“TUSB4020 EEPROM 配置对 MCU 进行了编程。
    2. 使用 MCU 对 TUSB4020 EEPROM 应用“正常工作“配置(与上述完全相同)。
    3. 已使用 MCU 编程器 擦除 MCU。  我听到  USB 断开蜂鸣音、其中一个虚拟 COM 端口现在已消失。
    4. 将系统保持在复位状态几秒钟、直到我听到 USB 断开蜂鸣音。
    5. 释放复位状态并听到 TUSB4020 枚举、没有错误。  第二个虚拟 COM 端口仍然存在(另一个连接到 USB 集线器的 MCU)。
    6. 使用“损坏的“EEPROM 配置对 MCU 进行重新编程。
    7. 已使用 MCU 对 TUSB4020 EEPROM 应用“中断“的配置。
    8.   (再次)使用 MCU 编程器擦除 MCU。
    9. 将系统保持在复位状态几秒钟、直到我听到 USB 断开蜂鸣音。
    10. 释放 RESET、暂停片刻、听到 TUSB4020 枚举中出现错误弹出消息。  不存在虚拟 COM 端口。

    在这两个测试场景中、用于对 EEPROM 进行编程的 MCU 在重新启动 TUSB4020 之前完全停用。  我的逻辑分析仪会验证 TUSB4020 是否成功读取了整个 EEPROM(遗憾的是,您的论坛不会让我附加.Sal Saleae 逻辑捕获)。

    我知道您正在尝试消除此处的任何杂散因素。  但这不是我的第一次牛仔竞技表演、我看到的一切都表明我:1) 我正在写我认为写入 EEPROM 的内容;2) TUSB4020 读取 EEPROM 的整个内容没有问题。  我已经将范围缩小到这样一个事实:当偏移 5 处的 EEPROM 字节为 0x90 时、USB 集线器在 Windows 10 中成功启动、当字节为 0xD0 时、Windows 10 显示驱动程序故障。

    同样、这对我来说不是一个亮点;即使我无法设置自定义序列号、我们的应用程序也可以正常工作。  但很奇怪的是、在使用时、什么应该是标准芯片功能故障。

    我建议您使用 EEPROM 数据(见下文所附)、将其加载到 TUSB4020 末端、然后将其插入 Windows 10/11 PC、看看会发生什么情况。  如果您无法重现... 哦、好吧。  如果可以... 那么、您需要进行一些研究。

    e2e.ti.com/.../EEPROM-load-with-hub-OK.txt  e2e.ti.com/.../EEPROM-load-with-hub-error.txt

    Dana M.

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

    好的、我将 在本周某个时间尝试使用 EVM。

    好极了

    Brian

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

    FWIW、我能够将器件连接到嵌入式 Linux 主机、并且在没有自定义序列号的情况下成功进行枚举。  现在我有了不同的主机系统可以尝试、我将对不同的 EEPROM 设置进行实验、看看它们如何影响 Linux 主机。  我怀疑这种无意义的中文出现,因为主机需要 Unicode ,我把 ASCII。  我今天单独配置了 TUSB8042、可以在默认 I2C 寄存器中看到序列号显示为 Unicode。  我也会尝试不同的字符串和长度。

    [  680.704544] usb 1-1: new high-speed USB device number 3 using ci_hdrc
    [  680.907028] usb 1-1: New USB device found, idVendor=0451, idProduct=8027, bcdDevice= 1.10
    [  680.915502] usb 1-1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [  680.922807] usb 1-1: Product: 湉楦楮楴䤠摮捩瑡牯䠠扵
    [  680.928958] usb 1-1: Manufacturer: 慃瑮敲汬䜭楡据
    [  680.934451] usb 1-1: SerialNumber: CD0100615141

    Dana M.

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

    这是有趣的发现,我不能读这些中国传统的性格。

    好极了

    Brian

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

    是的,我把它插入到 Google Translate 中,它无法理解它。  我做了一些更多的阅读, USB 字符串需要用 UTF-16LE 编码。  例如、字符串“ABCD"将“将编码为 41 00 42 00 43 00 44 00。  我错误地将我的字符串以直 ASCII 格式输入、或 41 42 43 44。  这就是为什么他们出现随机的无意义的汉字。

    所以,我做了一些进一步的调查... Windows 10 似乎以暴力方式反对序列号字符串(UTF-16LE 格式) 0x3231 0x3433 0x3635 0x3837。  无论出于何种原因,该特定字符串给了 Windows Fit 足够,以至于它拒绝完全枚举集线器。   但如果我小心地将 ASCII 字符串转换为 UTF-16LE、Windows 将正确识别自定义字符串和自定义序列号。  请注意、偏移量 0x05 现在为值 0xD0、表示已启用自定义字符串和自定义序列号:

    00000000: 55 51 04 25  80 D0 00 03  03 00 22 00  00 00 00 00 | UQ.%......".....
    00000010: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................
    00000020: 09 04 14 18  18 00 00 00  00 00 00 00  00 00 00 00 | ................
    00000030: 31 00 32 00  33 00 34 00  35 00 36 00  37 00 38 00 | 1.2.3.4.5.6.7.8.
    00000040: 39 00 30 00  00 00 00 00  00 00 00 00  00 00 00 00 | 9.0.............
    00000050: 4D 00 61 00  6E 00 75 00  66 00 61 00  63 00 74 00 | M.a.n.u.f.a.c.t.
    00000060: 75 00 72 00  65 00 72 00  00 00 00 00  00 00 00 00 | u.r.e.r.........
    00000070: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................
    00000080: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................
    00000090: 50 00 72 00  6F 00 64 00  75 00 63 00  74 00 20 00 | P.r.o.d.u.c.t. .
    000000A0: 4E 00 61 00  6D 00 65 00  00 00 00 00  00 00 00 00 | N.a.m.e.........
    000000B0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................
    000000C0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................
    000000D0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................
    000000E0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................
    000000F0: 00 00 00 FF  FF FF FF FF  FF FF FF FF  FF FF FF FF | ................

    很抱歉给您发送了一个谷歌搜索、但至少我们现在知道这是 Windows 问题、而不是 TUSB4020 问题。  对于任何阅读此内容的人... 只需确保您的 ID 字符串始终为 UTF-16LE 格式。  我确实看到数据表提到了这一点;Windows 决定抛出错误而不是呈现毫无意义的字符串、这只是令人沮丧。  感谢您的帮助。

    Dana M.