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.

[参考译文] TCA9555:即使在复位事件后写入输出寄存器、输出也不总是切换

Guru**** 2482225 points
Other Parts Discussed in Thread: TCA9555

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/674545/tca9555-outputs-not-always-toggling-even-writing-to-output-registers-after-a-reset-event

器件型号:TCA9555

我遇到了 TCA9555 IO 扩展器的一个奇怪问题:有时、即使我们的微控制器正在写入扩展器的输出寄存器、它也会停止切换其输出。 此外、写入后、我们不仅会检查 I2C 传输是否成功、还会读取输出寄存器的状态、以确保它们保持所需的值、并且始终保持。 我们还始终在写入每个输出之前检查配置寄存器、以确保其正确配置。

我们的设置由两块板组成、一个板带有微控制器、另一个板带有 IO 扩展器。 当我们断开连接两个板的电缆时、会发生此问题、这两个板将电源和 I2C 总线连接到 TCA9555。 我们断开电缆以模拟需要从中恢复的间歇性 I2C 故障和随机电源事件。 有时、一旦重新连接电缆、IO 扩展器就会按预期工作、其他情况下、即使我们确认其内部寄存器已正确配置、它也不会更改其任何输出。

我们想知道这是否是 TCA9555的已知问题和/或其他方面是否有任何建议可缓解此问题并始终实现 IO 扩展器的完全恢复。

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

    嗨、Tiago、

    您是否可以向我们提供 TCA9555的原理图?

    -我想对其进行审核、以确保它看起来正常。

    "我们想知道 这是否是 TCA9555的已知问题 和/或其他方面是否有任何建议可缓解此问题、并始终实现 IO 扩展器的完全恢复。"

    这不是 TCA9555的已知问题、但我通常听不到客户以这种方式断开设备并重新连接设备。

    根据我的理解、您将快速断开 Vcc、然后通过该电缆重新连接。 这可能违反数据表第11节中该器件的电源相关建议。 您可能需要在器件的 Vcc 上放置一个示波器探针、并监控在这两个事件期间看到的情况。

    我可以想到的另一种可能性是、在这种情况下、您会在状态机中引起干扰。 我们可以尝试使用9~18 μ s 时钟脉冲对 SCL 引脚进行脉冲、然后尝试与器件通信。

    如果您可以在遇到此问题(I2C 总线)时发布波形图片、这可能有助于我们了解该问题。 有时、我们看到的是 I2C 总线上的停止条件未实现、器件的值存储在寄存器中、但在发送停止条件之前不执行。

    谢谢、

    -Bobby

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

    您好、Bobby、感谢您关注这一问题。  

    [引用用户="Bobby Nguyen ]

    嗨、Tiago、

    您是否可以向我们提供 TCA9555的原理图

    -我想对其进行审核、以确保它看起来正常。

    [/报价]

    >>这就是我们在电路板中连接 TCA9555的方式。 输出控制 NPN BJT。

     

    "根据我的理解、您将快速断开 Vcc、然后通过此电缆重新连接。 这可能违反数据表第11节中该器件的电源相关建议。 您可能希望在器件的 Vcc 上放置一个示波器探针、并监控在这两个事件期间看到的情况。"

    >>实际上、我没有快速重新连接、我在重新连接电缆之前等待了几秒钟、但在重新连接电缆时、我仍然需要检查电源的输出(电缆为 TCA 的电源提供使能信号、这可能是问题所在)。 如果电源出现问题、是否有任何方法强制使用 I2C 复位 TCA9555? 我们的主要关切是,虽然 TCA9555没有改变其产出,但它似乎已充分发挥作用。

    "我可以想到的另一种可能性是、在这种情况下、您会在状态机中引起干扰。 我们可以尝试用9~18 μ s 时钟脉冲对 SCL 引脚进行脉冲、然后尝试与器件通信。"

    >>是的、如果 TCA9555没有响应、我们有时会执行该脉冲以恢复总线(有时可能会错过时钟、但这种情况很少见)。 但是、我们似乎无法理解为什么它有时不切换输出、尽管它响应 I2C 读取和写入请求。 我们在每次切换前强制写入配置寄存器、并在每次写入前读取和打印输出寄存器的内容、以检查之前的写入操作是否成功。

    "如果您可以在遇到此问题时(I2C 总线)发布波形图片、这可能有助于我们看到问题。 有时、我们看到的是 I2C 总线上的停止条件未实现、器件的值存储在寄存器中、但在发送停止条件之前不执行。"

    >>我已经检查过这个、似乎我们在每次写入后都在执行一个停止条件。 我已包含一个包含 Salae 逻辑分析仪捕获的文件、希望您可以使用其软件并可视化 I2C 总线波形。 如果您更喜欢使用示波器波形来显示消息、请告诉我。

    再次感谢您、  

    Tiago

    e2e.ti.com/.../nok_5F00_tca9555.logicdata.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    PS:我在发送给您的文件中注意到、我们显然错误配置了 TCA9555的 IO 配置寄存器、这似乎有点奇怪。 我将仔细检查逻辑分析仪捕获...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨、Taigo、

    我似乎无法打开您在 zip 文件夹中发送的文件(文件类型未知)。 是否可以附加图片?

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

    您好、Bobby、

    可以使用此网站上提供的软件打开该文件: www.saleae.com/downloads。

    我终于解决了。 我们的代码中有一个错误、偶尔会向 TCA9555的输出配置寄存器发送错误的配置。
    当固件检测到电缆已断开连接时、这会随机将扩展器的所有 IO 引脚配置为输入、从而导致间歇行为。
    因此、我们的代码应该归咎于 TCA9555、而不是 TCA9555。

    很抱歉、我们对此进行了监督。 感谢您在这方面的帮助、正是您建议深入 I2C 总线、让我注意到正在发生的情况。 (我们之前已经验证过 I2C 代码、因此我们假设它没有问题、这是由最近的更改导致的错误。)

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

    嗨、Tiago、

    感谢您再次与我们联系、对于可能在我们的 e2e 数据库中搜索类似问题并使用经验证的解决方案查找主题帖的其他人而言、这种做法始终非常有用。

    再次感谢、

    -Bobby