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.

[参考译文] UCD90120A:I2C 通信故障

Guru**** 2535750 points
Other Parts Discussed in Thread: UCD90120A, SEGGER

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/776802/ucd90120a-i2c-communication-failure

器件型号:UCD90120A
主题中讨论的其他器件: SEGGER

我们生产了一批新的电路板、发现这个问题的时间~1%。

这次、我收到了5个出现故障的 UcD90120A、并在 UCD9064SEQ EVM 中对其进行了测试。

有几个有趣的观察结果:(全部5个行为相同)

I2C 地址检测不正确:

我已将 J13设置为两个84.5K 电阻器(不应该是90.9k?)。

-如果 UcD90120A 正常、这将按预期提供 I2C 地址0x68。

-对于错误的 UcD90120A、这将提供 I2C 地址0x5C、对应于下面两个 PMBus_ADDR 引脚的一个二进制文件。

在初始化期间测量 PMBus_ADDR 引脚上的电压时、OK 器件上的电压为0.86V、而坏器件上的电压仅为0.73V。

这表示对于超出规格的不良器件、10µA μ A (+ 1µA μ A)偏置电流源为8.6µA μ A。

EVM 可以与坏器件通信、但 I2C 通信看起来与良好器件的通信稍有不同:

在0.5µs 器件上、在 ACK 之前、SDA 上有一个短脉冲、并且在 SDA 上的脉冲之后、有时会在 SCK 上看到一个尖峰:

(该尖峰与我们板上的 I2C 控制器混淆、后者可检测时钟拉伸。 在 EVM 上、T (SCK、低电平)稍长(1.5µs μ s 与1.25µs μ s)、而在尖峰勉强达到时钟脉冲后、150ns 为低电平)

放大:

并且是一款出色的参考器件:

这些观察结果可能表明、通过 JTAG 对配置进行编程时、UcD90120A 的某些校准(PMBus_ADDR 偏置电流和 I2C 时序)可能会损坏。

这可能是什么原因、我可以采取什么措施来避免这种情况?

我将使用 Fusion Digital Power Designer 生成用于 JTAG 编程的 SVF、并使用 Windows 下的 openocd 使用 Segger j-link Base 对器件进行编程。

此致、

Søren M.

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

    SVF 指令不是一个工业标准、而是由 JTAG 工具与脚本文件的集成方式决定的。 根据您所需要的内容、器件的地址以某种方式更改。 ADC 修整数据可能已损坏。

    您能否联系您当地的 TI 销售人员、以便我们可以分享测试步骤来确认这一点?
    此致
    Yihe
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我和当地经销商 Arrow 谈过、他们告诉我当地没有 TI 代表、因为 TI 不再提供当地支持。

    因此、我不知道要联系谁。

    您是否收到 TI 代表的电子邮件、我可以联系?

    此致、

    Søren μ A

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

    你好

    请 在设备上运行 UCD 器件调试工具、报告将告诉您修整是否正常。 如果无法解析报告,也可以共享该报告。

    此致

    Yihe

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

    好的、

    UCD 器件调试工具报告说、不良器件具有无效的完整性代码(0xFFFF)、所有修整都处于最大值 (0x7f、0x3F、0x7F 和0x7)。

    一个很好的器件是0x61BC、0x45、0x12、0x52和0x5。

    这解释了我看到的问题。

    我想我无法修复坏器件、因为它们是单独修整的。 对吧?

    但是、如何防止这种情况发生呢?

    我们的所有电路板均在自动生产测试期间进行编程。 因此、每次对 UcD90120A 进行编程时的情况都是相同的。

    此致、

    Søren μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好
    从调试报告中可以看到、坏单元的修整损坏、这将影响 ADC 精度、导致地址错误
    如前所述、SVF (JTAG)不是一个工业标准、而是由 JTAG 工具来完成安装。 我们以前从其他客户那里看到过这个问题、他们正在向 PMBus 而不是 JTAG 程序进行电影放映。
    您的 JTAG 工具供应商是什么? 请提供 yoru 选择控制阀文件吗?

    此致

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

    您好!

    遗憾的是、PMBus 未通电(因此处于低电平)、直到 UcD90120A 为系统供电。 因此、我们无法在生产中使用 PMBus、但我们可以稍后从系统中更新 UcD90120A。

    我将使用 Fusion Digital Power Designer 生成用于 JTAG 编程的 SVF、并使用 Windows 下的 openocd 0.10.0使用 Segger J-link Base 对器件进行编程:

    https://www.segger.com/products/debug-probes/j-link/models/j-link-base/

    http://openocd.org/

    我已附上我们在生产中使用的 openocd.cfg 和.SVF。

    此致、

    Søren μ A

    e2e.ti.com/.../Power_2D00_sequencer.zip

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

    你好
    感谢您的分享。
    此致
    Yihe

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好
    在 SVF 文件中、使用一种状态方法。 是否可以尝试运行测试模式?
    此致
    Yihe
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    实际上、我使用的是两种状态方法、因为 RunTest 始终会因该错误而失败:

    错误:第111行的 TDO 检查错误
    错误:读取= 0x000020b8e
    错误:Want = 0x138458554
    错误:MASK = 0x1fffffffe
    错误:无法在第1352行运行命令
    错误:第111行的 TDO 检查错误
    错误:读取= 0x000020b8e
    错误:Want = 0x138458554
    错误:MASK = 0x1fffffffe

    我在“一国”的工作上也遇到了一些问题,但现在看来,“两国”的工作效果是一样好的。

    此致、

    Søren μ A

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

    这就是使用 JTAG 的复杂过程。 JTAG 供应商如何解释 SVF 文件、有时他们不支持 SVF 文件中的命令、或者使用不当会导致编程问题。


    这是我们观察到的情况

    我发现 OpenOCD 的 Jlink 代码中存在潜在问题。 在 jlink.c 文件中,程序管理来自 SVF 的 RunTest 命令 jlink_RunTest(),它表示如果 RunTest 在您不处于空闲状态时开始,则转换为空闲,然后执行 RunTest。

    因此、这意味着从我们的文件中生成如下所示的 SVF 命令块:

    状态空闲;
    州 IRPAUSE;
    RunTest IRPAUSE 25E-6 SEC 结束状态 IRPAUSE;

    在 IRPAUSE 然后 IDLE 之后、IRPAUSE 等待25 μ s 然后进入 IRPAUSE、当它应该执行如下操作时、它应该执行以下操作:
    空闲然后进入 IRPAUSE、然后保持在 IRPAUSE 等待25 μ s、然后进入 IRPAUSE

    额外的空闲转换将导致指令执行过程(执行编程)不以非确定性方式执行或执行、因为这会启动执行加载指令的重新启动

    jlink.c 中存在问题的代码是

    if (tap、get_state ()!= tap、idle){
    jlink_end_state (tap:idle);
    jlink_state_move();
    /* num_cycles --;*/


    在 jlink_RunTest()中

    我认为删除该代码可能会修复它、但我无法对其进行测试和验证。 我也不知道是否还有其他副作用

    我认为、检查实际上应该是确定您是否处于稳定状态(空闲、暂停)、以及是否不转至稳定状态


    目前、Jlink/OpenOCD/SVF 和 UCD 器件的组合将不起作用


    此致

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

    您好、Yihe、

    是的、遗憾的是、SVF 是一种特定于供应商的"标准"格式。

    感谢您对 OpenOCD 和 RunTest 问题的详尽解释。
    这可能是使用 RunTest 选项生成的 SVF 无法与 OpenOCD 一起工作的原因。

    如果找不到其他解决方案、我可能会考虑编译 OpenOCD 的固定版本。

    但是、我仍然需要验证当前重置的修整值问题是否已解决。

    我已经尝试过 Segger JlinkLoad、但这不支持 TRST、因此我研究了替代方案。

    使用"两态"选项生成的带有 SVF 文件的 OpenOCD/Jlink 在99%的时间内都能正常工作、并在1%的时间内使芯片砖化。 这可能是最便宜的选择、因为必须更换1%的芯片。

    另一种选择是从 TI 购买预编程器件。 有可能吗?

    或者、您能否建议在生产过程中通过 JTAG 对器件进行另一种编程方式?
    我认为生产测试系统使用的是 Windows PC 控制的 NI 设备。

    是否可以使用 EVM 将修整值重新写入芯片? (或通过 JTAG)
    如果我选择修复 OpenOCD、我可能需要能够这样做。

    此致、
    Søren μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    TI 不预加载用户配置器件。
    在最终测试期间对修整数据进行特性化、数据是按器件分类的。 除非您知道该值、否则无法重写修整值。

    您可以尝试修改 SVF 文件以删除 RunTest IRPAUSE 1 SEC endstate IRPAUSE 之前的两个前面的行、以解决 openOCD 问题。 这只是一个试验。

    状态空闲;(删除)
    陈述 IRPAUSE;(删除)
    RunTest IRPAUSE 1 SEC 结束状态 IRPAUSE;

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

    您好、Yihe、

    我想我必须通过更改.SVF 或更改 SVF 的 OpenOCD 处理来更改 JTAG 编程。
    或者可能使用 jlink 和 OpenOCD 以外的其他功能。

    但是、为了进行测试、我需要多次通过 JTAG 重新编程、因为当前的故障率只有1/100、我将使用 EVM 进行此操作。

    因此、如果 JTAG 编程将修整数据删除、我可以将其写入器件中、这将非常有用。

    我可以使用 UCD 器件调试工具和 EVM 读取修整数据。

    但是、如果我知道要使用的值、能否使用 EVM 重新编程修整数据?


    此致、
    Søren μ A

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

    您好!

    如果我从目标控制器/编程器列表中选择 JTAG 编程器(Agilent 3070、Asset RIC-1000、Asset USB-100、Corelis、GOEPEEL ELECTRONIC、 JTAG 技术或 Teradyne)并使用其软件对 UcD90120A 进行编程、您能保证它能正常工作吗?

    此致、

    Søren μ A

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

    对于那些具有 UCD 器件的目标控制器和编程器、没有广泛的测试。

    此致

    Yihe
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好
    我没有听到您的反馈、并假设您找到了一种解决方法。 如果不是、请回复。
    此致
    Yihe