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.

[参考译文] TUSB216:TUSB216 I2C 模式意外的初始 CFG_ACTIVE 值、且在 EQ/直流升压配置后信号无变化

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1520018/tusb216-tusb216-i2c-mode-unexpected-initial-cfg_active-value-and-no-signal-change-after-eq-dc-boost-configuration

器件型号:TUSB216
主题中讨论的其他器件:TUSB214TUSB214EVM

工具/软件:

DearTi、

I²C 目前正在根据数据表中概述的程序和 TI E2E 论坛主题以 μ H 模式测试 TUSB214。 但是、我们遇到了两个问题、希望您给予支持:

我们的原理图布局:

I²C 目前正在评估 TUSB216、但由于样片供货情况、我们正在使用类似的 T Ü V S Ü D 进行初步功能测试 TUSB214 频率。

复位后寄存器0x03 (CFG_ACTIVE)出现意外的初始值

根据数据表(第7.4.5节)和论坛中的另一个主题(请参阅 Ryan Kitto 的帖子)

尽管原理图中放置了 TUSB216、但由于  

tusb214数据表:

https://www.ti.com/lit/ds/symlink/tusb214.pdf?ts = 1748421012763&ref_url=https%253A%252F%252Fti.com%252Fproduct%252FTUSB214

和另一个 E2E 主题

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1272265/tusb212-interface-forum-tusb212-control-via-i2c

 Ryan 和数据表主题中提到的预期行为 如下:

  • RSTN 切换并进入 I²C Ω 模式后、寄存器0x03应返回0x35、这意味着位0被设置(配置模式)。

  • 配置后、将位0清除为0、使之0x03 = 0x34生效、从而启用状态机。

但是、在我们的电路板上、在复位并进入 μ I²C 模式后、我们观察到:

  • 0x03返回0x74、表示位0已经0(正常模式)。

  • 这与规范相矛盾、该规范规定位01在 μ I²C 模式下默认应为位0。

您能解释一下为什么0x03显示、0x74而不是0x35复位后的预期结果吗?

2. Eq/DC 设置对 USB 信号眼图没有影响

我编写了一个 I²C 脚本来自动执行寄存器写入:

  • 0x03设置为0x75(配置模式)

  • 0x01(EQ 增强)设置为0x07(级别3)

  • 0x0E(直流升压)设置为0x05(60mV)

  • 0x03设回0x74(正常模式)

    ======== TUSB216 Initialization Log ========
    [BEFORE enter active mode] cfg_active:
    0x74
    [AFTER enter active mode] cfg_active:
    0x75
    [SETTINGS] Set eq_boost = 3
    [SETTINGS] Set dc_boost = 60 mV
    [BEFORE exit active mode] eq_boost:
    0x7 (Level 3 (MAX))
    [BEFORE exit active mode] dc_boost:
    0x5 (60mV)
    [AFTER exit active mode] cfg_active:
    0x74
    [AFTER exit active mode] eq_boost:
    0x7 (Level 3 (MAX))
    [AFTER exit active mode] dc_boost:
    0x5 (60mV)
    ======== TUSB216 Log Done ========
    

尽管寄存器已更改、 USB 信号眼图没有观察到任何改善或变化 、而相同的硬件在自举模式下接线(非 I²C Ω) 显示了预期的增强功能


请帮助确定这两个问题。

谢谢

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

    您好、Wiser、

    我只想确认您的设置中的一些内容。 首先、SDA/SCL 线路上是否有正确的上拉电阻? 我在原理图上没有看到它们、因此我想确认它们已实现。

    接下来、当您使用 I2C 时、在将 CFG_Active 位设置为1之前、该寄存器的默认值是多少? 请确保仅调整该寄存器的 CFG_ACTIVE 位。  

    如果器件设置为非活动模式、CD/ENA_HS 引脚的状态是什么。 如前所述、在启动时、如果 SDA/SCL 引脚在 I2C 线路上出现上拉电阻、则器件应以 I2C 模式启动、否则可能是 SDA/SCL 引脚看不到 I2C 线路。

    您能否确认可以读回您通过 I2C 进行的任何写入并仔细检查是否已设置这些写入?

    Unknown 说:
    尽管寄存器发生了更改、 USB 信号眼图没有观察到任何改善或变化 、而相同的硬件在自举模式下接线(非 I²C Ω) 显示了预期的增强功能 .

    转接驱动器是否完全在 I2C 模式下打开、还是仅在引脚配置(strap)模式下打开? 在 CFG_ACTIVE 位上的0和1之间来回切换对信号完全没有影响?

    谢谢、

    Ryan

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

    您好、Ryan、

    感谢您的答复和澄清。

    1.关于的初始值CFG_ACTIVE:

    在 TUSB214电路板上进行重新测试后、我们就可以做到这一点 忽略初始 CFG_ACTIVE = 0问题
    我们确认了这一点 复位后立即开始 、则寄存器的值0x030x75 、这意味着设备正确输入 配置模式 在 μ I²C 模式下(位0 = 1)。

    2. I²C 总线状态:

    。 首先、SDA/SCL 线路上是否有正确的上拉电阻? 我在原理图上没有看到它们、

    SDA 和 SCL 被拉高 , 拉高电阻器 位于 主机 I2C 总线周围的其他原理图,  我们可以做到这一点 成功执行 I²C 读取/写入 I²C (例如、转储以及读回寄存器0x01、0x03、0x0E)、因此器件应正确进入 μ C 模式
    我们使用的是 运行 Android OS 的 MTK SoC 作为 μ I²C 主器件。
    之前提供的日志(标有") TUSB216 Initialization Log"通过 I²C 事务生成,由包括在脚本中的 i2c 读/写函数控制

    #!/system/bin/sh
    
    LOG_FILE="/data/local/tmp/duvel_debug.log"
    CFG_NODE="/sys/devices/platform/11e03000.i2c/i2c-3/3-002c/cfg_active"
    EQ_NODE="/sys/devices/platform/11e03000.i2c/i2c-3/3-002c/eq_boost"
    DC_NODE="/sys/devices/platform/11e03000.i2c/i2c-3/3-002c/dc_boost"
    
    EQ_VALUE="$1"  # EQ boost level: 0/1/2/3
    DC_VALUE="$2"  # DC boost in mV: 40/60/80
    
    if [ "$EQ_VALUE" = "" ] || [ "$DC_VALUE" = "" ]; then
      echo "Usage: $0 <eq_boost_level (0~3)> <dc_boost_mv (40|60|80)>"
      exit 1
    fi
    
    echo "======== TUSB216 Initialization Log ========" >> "$LOG_FILE"
    echo "======== TUSB216 Initialization Log ========"
    echo "[BEFORE enter active mode] cfg_active:" >> "$LOG_FILE"
    cat "$CFG_NODE" >> "$LOG_FILE"
    
    echo 1 > "$CFG_NODE"
    
    echo "[AFTER enter active mode] cfg_active:" >> "$LOG_FILE"
    cat "$CFG_NODE" >> "$LOG_FILE"
    
    echo "[SETTINGS] Set eq_boost = $EQ_VALUE" >> "$LOG_FILE"
    echo "$EQ_VALUE" > "$EQ_NODE"
    echo "[SETTINGS] Set dc_boost = $DC_VALUE mV" >> "$LOG_FILE"
    echo "$DC_VALUE" > "$DC_NODE"
    
    echo "[BEFORE exit active mode] eq_boost:" >> "$LOG_FILE"
    cat "$EQ_NODE" >> "$LOG_FILE"
    echo "[BEFORE exit active mode] dc_boost:" >> "$LOG_FILE"
    cat "$DC_NODE" >> "$LOG_FILE"
    
    echo 0 > "$CFG_NODE"
    
    echo "[AFTER exit active mode] cfg_active:" >> "$LOG_FILE"
    cat "$CFG_NODE" >> "$LOG_FILE"
    echo "[AFTER exit active mode] eq_boost:" >> "$LOG_FILE"
    cat "$EQ_NODE" >> "$LOG_FILE"
    echo "[AFTER exit active mode] dc_boost:" >> "$LOG_FILE"
    cat "$DC_NODE" >> "$LOG_FILE"
    
    echo "======== TUSB216 Log Done ========" >> "$LOG_FILE"
    echo "======== TUSB216 Log Done ========"

    ENA_HS 信号行为:

    如果器件设置为非活动模式、CD/ENA_HS 引脚的状态是什么。

    ENA_HS在返回后监测引脚 正常模式(位0 = 0) 、但是 它的电压电平没有改变 它仍然很低。
    我们想确认:

    在 I²C Ω 模式下、ENA_HS引脚的功能是否应该与引脚搭接模式中的功能相同(如所附原理图中所示)?
    还是这样 无需包含上拉/下拉电阻器 在 I²C Ω 模式下(如最初设计用于引脚配置(strap)控制的原理图中所示)该引脚上?

    4.没有可观察到的信号效应:

    转接驱动器是在 I2C 模式下打开、还是仅在引脚搭接模式下打开? 在 CFG_ACTIVE 位上的0和1之间来回切换对信号完全没有影响?

    是—正如您所怀疑的CFG_ACTIVE那样—尽管我们按照指定的方式在1和0之间切换:

    设置正确的 EQ 增强和直流升压寄存器值 、和

    我们可以通过读回来确认这些值仍然存在。

    不过、我们可以观察到 没有影响 保持一致(眼图保持不变)。


    更明智

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

    您好、Wiser、

    在 μ I²CENA_HS 模式下、引脚的功能是否应该与引脚搭接模式下相同(如附加原理图中所示)?
    还是这样 无需包含上拉/下拉电阻器 在该引脚上以 I²C Ω 模式(如最初设计用于引脚搭接控制的原理图中所示)?

    我仔细检查了、没错、该引脚在 I2C 模式下没有相同的功能。 如果需要、您可以保留上拉/下拉电阻、因为这些将决定 DC_Boost 的起始值。 否则、您无需监控该引脚。

    我遇到的一个问题是、为了确认时序控制和测试程序、您是否使用 XHSETT 通过 USB2线路发送测试数据包? 发送测试数据包时、您是在等待 TUSB214退出配置模式之后、还是发送数据包、然后启用 TUSB214/将其退出配置模式? TUSB214需要通电并退出我认为进行测试的配置模式。

    如果可能、您还可以使用 TUSB216EVM 或 TUSB214EVM 进行测试、看看您 的 EVM 是否也有问题?

    谢谢、

    Ryan

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

    您好、Ryan、

    我们 进行了一些额外的测试 TUSB214 比较两者的行为 引脚配置(strap)模式 I²C μ A 模式 调整时 直流升压  。   
    仿真结果如下。


     引脚搭接模式结果

    使用时 外部电阻器 要设置直流升压和 EQ、请执行以下操作:

    • 直流升压= 80mV (RDC1 = DNI、RDC2 = 47 kΩ)、 EQ0 (REQ = 100 Ω):
      ➜USB 眼图显示了清晰的信号改善—随附了示波器屏幕截图。

    • 直流升压= 40mV (RDC1 = 47 kΩ、RDC2 = DNI)、 EQ0 (REQ = DNI):
      ➜USB 眼图再次相应地更改-随附了示波器屏幕截图。


    μ I²C 模式结果

    当使用 I²C 时、请写入 在40mV 至80mV 之间更改 DC Boost

    • I²C 交易成功 、寄存器中的值通过读回验证。

    • 不过、 USB 眼图保持不变 、与相同 默认引脚配置(strap)直流升压= 80mV 即使通过 I²C μ F 切换直流升压时也是如此。

        

    此外、进入后 I²C μ A 模式 、   通过 i2c 从0x01/0x0E 读取的初始寄存器值  — 有关寄存器转储、请参阅以下日志。

    0x03为0x75、在进入 i2c 模式时保持在 CFG_ACTIVE 模式。

    console:/sys/devices/platform/11e03000.i2c/i2c-3/3-002c #
    at dc_boost                                                                   <
    0x3 (40mV)
    console:/sys/devices/platform/11e03000.i2c/i2c-3/3-002c #
    console:/sys/devices/platform/11e03000.i2c/i2c-3/3-002c #
    at eq_boost                                                                   <
    0x7 (Level 3 (MAX))

    此外、我们将尝试获得 官方 TUSB214/216 EVB 执行 测试结果相同 以便比较。

    如果有 具体调试检查  你会推荐,请随时提出建议

    谢谢

    更明智

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

    您好、Wiser、

    当使用 I²C 时、请写入 在40mV 至80mV 之间更改 DC Boost

    • I²C 交易成功 、寄存器中的值通过读回验证。

    • 不过、 USB 眼图保持不变 、与相同 默认引脚配置(strap)直流升压= 80mV 即使通过 I²C μ F 切换直流升压时也是如此。

        

    此外、进入后 I²C μ A 模式 、   通过 i2c 从0x01/0x0E 读取的初始寄存器值  — 有关寄存器转储、请参阅以下日志。

    0x03为0x75、在进入 i2c 模式时保持在 CFG_ACTIVE 模式。

    [/报价]

    看一下眼图、好像启用了转接驱动器、所以这很好。 但通常情况下、如果转接驱动器处于 I2C 模式、我认为当 CFG_ACTIVE 为高电平时会禁用转接驱动器、然后在该位设置为0时重新启用转接驱动器。 如果更改任何位都没有影响、我想知道转接驱动器是否进入 I2C 模式。 同时使用 TUSB216和 TUSB214EVM 对此进行尝试、将有助于确定其是否属于设计问题或器件问题。

    在此期间、您可以尝试此序列以再次检查吗?

    • 禁用测试数据包、然后启用转接驱动器
    • 将 CFG_ACTIVE 从1调整为0、然后再调整为1 (可选、请随时退出此步骤)
    • 根据需要调整寄存器的值
    • 使转接驱动器退出配置模式(1到0)
    • 发送数据包。

    您也可以在此处使用一些不同的时序进行测试、例如将其保留在配置模式下、看看这是否会影响性能。

    • 直流升压= 80mV (RDC1 = DNI、RDC2 = 47 kΩ)、 EQ0 (REQ = 100 Ω):
      ➜USB 眼图显示了清晰的信号改善—随附了示波器屏幕截图。

    • 直流升压= 40mV (RDC1 = 47 kΩ、RDC2 = DNI)、 EQ0 (REQ = DNI):
      ➜USB 眼图再次相应地更改-随附了示波器屏幕截图。

    [/报价]

    对于这些、我想仔细检查一下直流升压设置。 我认为下眼应该是80mV 眼图、顶部应该是40mV 眼图、按照它们在眼图上的样子。 (裕度越大、通常意味着直流升压越高)。

    谢谢、

    Ryan

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

    您好、Ryan:


    我们进行了另一轮测试。
    以下是 I²C 在我们的 SoC 系统驱动程序下运行(MTK Android 平台)

    修改  直流升压 中导出 40mV→80mV 然后将CFG_ACTIVE位0设置为0 (正常模式)。

    我们也尝试了改变 EQ 增强 传感器距离。

    在这两种情况下 USB 测试数据包信号 保持不变—在范围上没有明显的差异。

    # Read initial DC Boost value (after entering I²C mode)
    cat dc_boost
    --> 0x3 (40 mV)
    
    # Read initial CFG_ACTIVE value
    cat cfg_active
    --> 0x75 (Configuration mode)
    
    # Write DC Boost = 80 mV
    echo 80 > dc_boost
    
    # Read ,confirm updated DC Boost 
    cat dc_boost
    --> 0x7 (80 mV)
    
    # Write , switch to Normal mode
    echo 0 > cfg_active
    
    # Read ,confirm CFG_ACTIVE now is 0x74 (Normal mode)
    cat cfg_active
    --> 0x74

    请您帮助回顾一下我们的 寄存器写入序列 对于直流升压 和 CFG 有效 寄存器是正确的:

    寄存器 测量输出
    0x01 直流升压 位0 ~ 2
    0x03 CFG_ACTIVE 位0
    0x0E EQ 增强 位4 ~ 6

    // Write DC Boost = 80 mV
    // DC_BOOST register bits [2:0] , write val= 0x07(80mV) for case in above logs
    ret = regmap_read(data->regmap, TUSB216_REG_DC_BOOST, &val);
    val &= ~GENMASK(2, 0);
    val |= regval;
    ret = regmap_write(data->regmap, TUSB216_REG_DC_BOOST, val);
    
    
    //Switch to Normal mode
    // CFG_ACTIVE register bit 0 ,write val= 0x74(config active) for case in above logs
    ret = regmap_read(data->regmap, TUSB216_REG_CFG_ACTIVE, &val);
    if (on)
        val |= 0x01;
    else
        val &= ~0x01;
    ret = regmap_write(data->regmap, TUSB216_REG_CFG_ACTIVE, val);


    谢谢


    更明智

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

    您好、Wiser、

    我相信测序看起来很好。 如果有任何事情、我唯一的建议是重新写入该配置位、以确保器件处于配置模式。

    在这两种情况下 USB 测试数据包信号 保持不变—在范围上没有明显的差异。

    只需确认一下、当通过 I2C 写入转接驱动器时、您将关闭测试数据包、然后在转接驱动器退出 I2C 模式时重新启用测试数据包、对吗?

    谢谢、

    Ryan

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

    您好、Ryan:

    通过 I2C 写入转接驱动器时、您将关闭测试数据包、然后在转接驱动器退出 I2C 模式时重新启用测试数据包、正确?

    您好、Ryan、

    在与我们的硬件团队进行进一步检查后、我们意识到在之前的测试中、在调整寄存器值(直流升压、CFG_ACTIVE)时、是 USB 芯片持续传输测试数据包而不重新启动 —测试数据包流从未中断。

    今天、我们更正了测试程序:

    • 修改后 直流升压 CFG_ACTIVE 现在 停止并重新启动 USB 测试数据包传输 以确保 TUSB214重新锁定并应用新设置。

    通过这个更正的过程、我们观察到在更改时 40mV 至80mV 的直流升压 USB 眼图清楚地显示了更大的振幅 —确认转接驱动器按预期工作。


    非常感谢您的支持   
    更明智

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

    您好、Wiser、

    很高兴听到! 使用这些器件进行时序控制对于确保其正常工作非常重要、因此很高兴听到您将其弄清楚。

    如果您有任何其他问题、敬请告知。

    谢谢、

    Ryan