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.

[参考译文] TPS23880:I2C 总线上出现意外读取错误

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1027235/tps23880-unexpected-reading-errors-on-i2c-bus

器件型号:TPS23880
主题中讨论的其他器件: ISOW7841ISO7731BOOST-PSEMTHR-007TPS23881

在我们的器件中、某些寄存器的值由 Linux POE 守护程序定期从 TPS23880 POE 控制器中读取。 少量读取事务会返回意外的寄存器值。 根据测试实验、我们发现意外值是中断寄存器(00h)的内容。 例如- POE 守护程序读取温度寄存器(2Ch)、但读取的值是中断寄存器(00h)的内容。

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

    Jiri、您好、很抱歉、由于我们目前在应用程序支持上排了大量队、因此这里出现了延迟。 您是在自己的电路板上测试还是在 EVM 上测试? 如果您自己的电路板、您是否曾尝试在相同条件下在 EVM 上的 I2C 上进行通信、只需查看您是否可以重现问题? 谢谢!  

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

    您好、达尔文、

    测试 是在我们自己的电路板上进行的。 在实验过程中、验证了电隔离层两侧的信号完整性。 同时 、示波器对通信进行解码、以消除软件中出现误解的可能性。  理论上、我们可以尝试使用 EVM 复制实验、 但目前我的 SW 部门同事正在休假、因此我必须等待他返回工作岗位。  但是、我们确信通信清晰、不会受到干扰、并且在 I2C 事务级别上不符合预期。

    为了解释我们是如何发现问题的- 在测试设备时、我们观察到偶尔从电流测量寄存器中读出的值过低。 首先、我们测试了所测试的 POE 器件上是否存在电流下降。  当我们验证 POE 器件的电源是不间断且稳定的时、我们重点关注与 POE 控制器的通信。 经过多次实验、我们观察到、读取寄存器时的意外值与中断寄存器中当前的值相对应。  另一项调查结果是,有些登记册比其他登记册更容易受到这种误解。

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

    您好、Jiri、

    感谢您的回答。

    作为供参考、我想告诉您、我们的 PSE 专家将在8月30日这一周结束办公、他的回复将延迟到该时间。

     

    此致、

    Brett Colteaux

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

    你好、Jiri、很抱歉耽误你的时间。 这是非常不寻常的。 您能否发送原理图进行审阅? 为了了解问题的范围、您拥有的所有电路板是否都存在这种情况?

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

    您好、达尔文、

    随附了部分原理图。  

    在我们所有经过测试的电路板上都观察到了该问题。

    现在、我的同事在 TI EVM 板上准备了相同的测试。

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

    您好、Jiri、

    感谢更新、查看 EVM 是否也表现出这种行为将会很有趣。 如果您无法在 EVM 上进行复制、有几条评论吸引了我对原理图的注意、1.5k Ω 上拉电阻看起来很低、我通常看到5k 电阻。 此外、ISOW7841建议的最小电压为3V。 这非常接近3.3V 电压轨、而我们使用的是 ISO7731、它具有2.25V 的最小建议电压、并为3.3V 电压轨提供足够的裕量。

    如果您认为 EVM 工作正常、这些注释可能有助于进行调试。 这是我可以指出的主要硬件差异。

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

    您好、达尔文、

    感谢您的建议、但3V3电源轨在大功率储备下保持稳定。  当然-  我们首先检查的是 I2C 的信号完整性。  在具有 I2C 总线解码功能的示波器上监控所述的行为。  因此、我们可以说 I2C 通信是干净的、不会产生干扰(从模拟的角度来看) 、但控制器会意外响应(查看解码的通信序列)。 一旦我有新信息、我将给您写信。

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

    解锁

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

    感谢您解锁线程。

    我们能够再现使用带有子板 TPS23880EVM-008的评估模块 BOOST-PSEMTHR-007所描述的问题。
    该 EVM 通过 USB 接口适配器(J2)连接到器件的 I2C 总线、子板已将 I2C 地址设置为20h。
    我们使用 I2C 寄存器访问配置 A (8位访问)。

    我们能够以最快的方式重现行为的测试案例:
    我们打开 EVM、通过 I2C 写入以下寄存器、通过诊断/手动模式打开所有 PoE 通道:
    地址20h:
     运行模式寄存器(12h)值55h
     断开使能寄存器(13h)值00h
     功率优先级/2P-PCUT 禁用寄存器(15h)值0Fh
     2x 折返选择寄存器(40h)值 F0h
     电源使能寄存器(19h)值0Fh
    地址21h 也是如此。
    然后、我们在器件中运行代码、该代码从无限循环中的 I2C 地址20h 读取器件 ID 寄存器(43h)、并检查其值是否为0010、0001b (21h)。
    大多数读取的值检查都正常、但大约10分钟后、我们读取了83h。 在10分钟内、我们执行大约50000个读取周期。
    我们假设值83h 与中断寄存器(00h)的内容相对应-它在 PoE 通道开启后包含83h、当我们通过读取相应的事件寄存器清除某些位时、我们使用读取循环读取该值。

    为了更快地重现问题、所有 PoE 通道都需要打开、我们读取器件 ID 寄存器、我们只需检查该寄存器、问题就会在最短的时间内出现。

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

    您好、阿尔斯、

    一旦问题再次出现、0x43寄存器是否恢复或保留为0x83? 寄存器0x41的值是什么? 您是否从寄存器0x06、0x08、0x0A 中获得了任何其他故障? 谢谢。  

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

    尊敬的 Penny:

    我的同事 Ales 在1月3日之前不在办公室  但 我将尝试回答您的一些问题。

    检索意外值仅限于单次读取。  预期值0x21已在下一个读取周期中返回。 ID 寄存器的错误率约为1/500k 次读取。

    问题不限于 ID 寄存器。 读取器件 ID 寄存 器只是引起故障读取的最简单方法(因为我们知道要读取的值)。 但最初我们通过读取 电流测量寄存 器发现了该误差、当时我们的测试软件报告了 POE 负载上的电流下降。  根据测量结果和后续分析 、我们发现负载上的电流和电压稳定、 问题是从寄存器中读取错误值导致的。  在这些测量期间、我们在独立器件上捕获了 I2C 通信。  在通信分析过程中、μ Aleš 发现异常值与中断寄存器的当前值相关。  我想他说过,不同的登记册读数失败 ,概率也不同。  换言之,有些登记册比其他登记册更经常失败。

    谢谢、祝您愉快

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

    您好、Jiri、

    感谢您的更新。 我将等待阿尔斯回答其他问题。 我需要他确认0x41寄存器值和故障寄存器值、以确定在该故障阶段是否发生了 SRAM 故障。 我建议在每次读取之间添加一些延迟、看看问题是否可重现。 谢谢。  

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

    尊敬的 Penny:

    您的问题有解答:

    -寄存器恢复:
    正如 Jiri 所写的那样、在重现此问题后、0x43寄存器在下一次读取中恢复到默认值0x21。 问题是、平均周期为500k 次读取。

    -寄存器0x41的值:
    对于寄存器0x41、我们观察到了同样的问题-默认值为0x00、在几百次读取后、我们读取值0x83一次、寄存器在下一次读取中恢复到默认值0x00。

    -来自寄存器0x06、0x08、0x0A 的故障:
    对于寄存器0x06、0x08、我们观察到与寄存器0x43和0x41相同的问题-在对预期值进行数十万次读取后读取值0x83一次。
    对于寄存器0x0A、我们也观察到了这个问题、因为该寄存器是读取错误值的周期、甚至更短-我们观察到在几千次读取后读取值0x83一次。

    我们检查了更多的寄存器、没有观察到寄存器0x1B 的值发生变化-我们读取了正确的默认值0x55
    500多万次读取。

    我们在读取和使用寄存器0x0A 尝试之间增加了100ms 的延迟、该延迟周期较短-问题仍然可以重现
    在几千次读取后具有一次类似的速率(仅测试运行时间更长)。

    谢谢、祝您愉快。

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

    您好、阿尔斯、

    您好像没有将 SRAM 代码加载到 TPS23880中。 您能否尝试将 SRAM 代码加载到 TPS23880并查看问题是否仍然存在? 您可以访问 TPS23880产品文件夹 并请求访问 SRAM 代码。  请按照 此应用手册参考代码 加载 SRAM 代码。 谢谢。  

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

    尊敬的 Penny:

    我将 SRAM 代码加载到 TPS23880中、现在寄存器0x41的值为0x02、并执行相同的读取测试。
    该问题仍然存在、但某些寄存器存在差异:
     -寄存器0x43、0x41的行为相同-在几百次读取预期值后读取错误值一次。
     -寄存器0x0A 的行为相同-在几千次读取预期值后读取错误值一次。
     -对于寄存器0x06和0x08、我没有观察到改变的值。

    谢谢、祝您愉快。

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

    感谢 ALES 的更新。

    当您读取错误值时、错误值是否始终为0x83?  如果是这种情况、您能否添加一个权变措施、即如果读取0x83、则执行另一个读取以双精度检查该值? 谢谢。  

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

    尊敬的 Penny:

    我们发现错误的值与寄存器0x00的值相对应-在上述测试设置期间、它是值0x83、但它可以包含其他值、例如、在清除其位后、它将包含0x00、我们将读取错误的值0x00。
    我添加了对具有电流(0x30)和电压(0x32)的2字节寄存器的检查、并且我观察到了与寄存器0x43和0x41相同的问题-在几百次读取后、有一个字节发生了变化、例如、寄存器0x30的值为0x0000、 值0x0083错误、寄存器0x32的值0x3803错误、值0x3883错误。

    可能会使用基于另一个读取的权变措施、但在这种情况下会更复杂。

    是否可以在您的设施中重现此问题?

    谢谢、祝您愉快。

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

    您好、阿尔斯、

    抱歉。 我们的团队的带宽非常紧张、我们无法创建脚本并运行此测试。 短期 而言、是否可以 检查寄存器值是否包含低半字节或高半字节的0x83、以确定问题并执行第二次寄存器读取。 谢谢。

    此致、

    一分钱

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

    尊敬的 Penny:

    如前所述、从寄存器读取的意外值与中断寄存器的值相同。  芯片打开后、值0x83在中断寄存器中、但在运行期间、值可以是任何其他值。 因此、如果从寄存器读取0x83、则验证值不是可接受的问题修复方法。 例如- 如果我们处理所有挂起的中断、 意外的读取值将为0x00。

    Jiri

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

    您好、Jiri、

    是否可以使用 TPS23881运行测试? 这是一款较新的器件、与 TPS23880引脚连接至 PON (仅需将 Rsense 更改为200m Ω)。 除了当前读取因子和 SRAM 代码外、FW 应兼容。 谢谢。

    此致、

    一分钱

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

    尊敬的 Penny:

    是的、如果 您可以向我发送 TPS23881样片、我们可以使用 TPS23881运行测试。  该组件目前 无法从标准分销商处获得。

    Jiri

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

    您好、Jiri、

    您能否与您当地的 TI 代表合作、在 TI.com 上提交 ZS 订单申请? 谢谢。  

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

    您好、Jiri、

    我已联系 TI 当地代表、他们应联系您以支持样片申请。 谢谢。  

    此致、

    一分钱