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.

[参考译文] TCA9545A:通道0-3侧无响应

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/693392/tca9545a-no-response-on-channel-0-3-side

器件型号:TCA9545A
主题中讨论的其他器件: AM5718LM63LM64LM96X63EVMLM96063PCA9545A

您好!

设置 或请求 I2C 有效通道时、开关按预期响应。 但是、在尝试与连接到任何通道的器件进行通信时、"通道侧"没有任何活动。 所有通道都卡在逻辑高电平。 它就像导通栅极晶体管永远不会导通并让任何东西通过。

根据数据表图17和第18页、右侧的2.6V 电压应该正常。 不过、我不确定未使用的中断和未使用的通道。 上拉至3.3V 是否会导致任何问题?

此致

F

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

    TCA9545A 有一个控制寄存器、此寄存器被用来确定哪些通道处于激活状态-它们在加电时被缺省禁用。 (有关详细信息、请参阅数据表的第15页。) 您是否正在写入该寄存器以启用要使用的通道?

    上拉未使用的端口应该正常。

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

    是的、我们将写入该寄存器以启用要激活的通道。 我们在同一电路板上安装了另一个 TCA9545A、该电路板可正常工作。 唯一的区别是"通道侧"在 SDA、SCL 和 INT 上具有4.02k 上拉至3.3V 的电压。 我们还在另一个 TCA9545A 实例上使用 INT 和复位 IO。

    我们还通过将 RESET 引脚与接地线短接来进行手动复位、但这并没有产生任何影响。 我们是否能够损坏不以某种方式工作的 TCA9545A? 您是否应该注意到我们错过了哪些预防措施?

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

    因此、在工作单元和非工作单元上 SDA/SCL 处理的唯一区别是通道侧上拉电阻/电压? 这是奇怪的、因为4.02k Ω 或2.2k Ω 都可以工作(至少、两者都不会导致总线卡在高电平)。

    我仍然对配置寄存器有一点担心、因此我有几个相关的问题。 您是否能够读回要写入的值以验证写入操作是否成功发生? (否则、最好探测 SDA/SCL 线路以进行验证。) 您是否一直禁用未使用的通道? (这对于减少总线上的负载很有用。)

    是的、虽然我不知道特定的灵敏度、但器件可能会损坏。 不过、您可能需要尝试更换工作中和非工作中的单元、以查看 IC 或 PCB 上的位置是否仍然存在问题。

    最大
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复。 没有其他区别... 是的、我们成功地读回配置寄存器。 在查看 I2C 主器件(AM5718)和使用逻辑分析仪探测总线时确认了这两种情况。 禁用未使用的通道。 一次仅启用一个通道。

    这真的不是一个复杂的器件/电路、所以是的、这很奇怪! 我们已经测试了两个不同的板、结果相同。 虽然不太可能、但两个电路板上的开关可能都损坏。 这可能是一个 ESD 问题、因为两个通道上的从器件通过电缆连接到开关。 开关对 ESD 有多敏感? 导通栅极晶体管是否会损坏、从而不会有任何东西通过? 这里的野猜测……

    /F
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ESD 等瞬变可能会发生并损坏芯片、从而使信号无法正确穿过开关晶体管、但这种情况在两个单元上似乎不太可能发生。 (这些引脚的额定 HBM ESD 为4kV、因此我不认为它们特别容易受到攻击。)

    在 SDA/SCL 上电时、您是否在通道侧看到任何移动? 我想知道他们是否会被下拉、而不是被拉至足够低的水平。 这会显示在示波器上、但可能不会显示在逻辑分析仪之类的设备上。

    我们最熟悉此设备的团队成员今天不在办公室、但我可以在他周二(周一是美国的假日)返回后与他进一步讨论这一点。

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

    我一直用示波器探测通道侧、它卡在2.6V。没有任何移动迹象。 就像上拉电阻器是零欧姆电阻器... (他们不是!)

     

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

    这里是一些来自主器件侧(引脚18和19)的示波器图像。 开关的地址为0x71 (不是原理图中所示的0x70)。

    主器件发送111 0001 0 (地址= 0x71、这是一个写操作)并且开关用一个 ACK 进行响应。 那么、从设备似乎会在主设备开始发送控制寄存器之前释放线路、这会导致短时干扰、但这无关紧要。 控制位为0000 0001、此位应激活开关上的通道0。 之后、时钟保持低电平。 不知道到底是什么情况、但开关似乎出于某种原因使时钟拉伸。

    下一幅图像是主器件读回控制寄存器。

    主器件发送111 0001 1 (地址= 0x71、这是一个读取)并且开关用一个 ACK 进行响应。 开关将0000 0001发送回主器件、这与主器件在第一步中写入的内容相对应。 主器件用 NACK 进行应答、表示它已完成对总线的读取。 再次进行。 开关似乎使用时钟拉伸。

    最后一个映像、主器件尝试与通道0上的器件通信。 地址为101 0000 (0x50)。 由于通道侧死区、没有任何答案、因此我们得到了一个 NACK。 紫色探针是通道侧的 SCL 线。

    此致

    /F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    忘记提到我们板上的另一个开关也可能是死的。 我们有一个地址冲突、这欺骗了我们、使我们相信我们在与开关另一侧的器件通信时、我们不会这样做。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更多信息。 交换机的另一个实例也表明不起作用:

    此开关上的下游器件是四 个 LM96063风扇控制器、该设计在很大程度上基于 LM63LM64LM96x63EVM。 此 EVM 可以正常工作、但使用 PCA9545A 开关代替 TCA9545A 开关。 它们应该是相同的、不是吗? 实际上、我们在 另一个定制电路板上使用 PCA9545A 开关、它在该电路板上也能正常工作。 这两个开关之间是否有任何差异会导致 PCA9545A 工作、但 不会导致 TCA9545A 工作?

    /F

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

    您好、Fredda、

    我发现奇怪的是、示波器显示 ACK 后时钟线锁存为低电平。 您已经指出、它看起来像是 TCA9545A 时钟拉伸、但据我所知、由于我们的器件不需要太多时间、因此该器件无法进行时钟拉伸、因为我们通常会移除器件 SCL 线路上的下拉 FET 解析他们接收到的数据。 我猜主器件是在我正确的情况下将 SCL 线路保持在低电平的器件(需要检查设计文件)。  

    我还注意到、当 SDA 再次拉低时、SCL 线路在一个点后确实会恢复为高电平。 由于 I2C 是漏极开路、因此器件无法主动将线路驱动为高电平、这意味着以下两点之一:

    答:如果从机执行了时钟扩展、那么它必须已经释放 SCL 线路并且主机重新开始控制

    B:主器件控制了整个时间并在重新通信之前等待了一段时间

    刚刚检查了设计文件,看起来我们的设备不能执行时钟扩展,因此很可能是主设备或与交换机地址相同的另一个设备执行时钟扩展.........

    我看到过主器件将 I2C 线路驱动为低电平(并保持低电平)并且仅在需要发送1时才将线路释放为高电平的情况(请检查下面的编辑)。 在成功检测到停止条件之前、我们的器件实际上不会启用开关的通道、因此我想知道主器件是否会将 SCL 上的线路拉低、从而导致器件永远不会看到停止条件、因此从不会实际开启通道。

    我建议检查主器件的代码、以确认它是否由于某些奇怪的原因而进行时钟拉伸。

    谢谢、

    -Bobby

    编辑:我记忆了类似的情况、但两条线都保持在低电平而不是 SCL。 不过、这可能是同一个问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答。 似乎它可能与没有停止条件有关。 您链接到的论坛主题在帖子中显示:

    "您需要在通道实际启动之前生成停止条件。 重复启动或仅空闲不会实际启动加载到寄存器空间中的内容。 "

    如果我这样解释、我们实际上可以使用激活的通道的"1"读回控制寄存器无关紧要。 "1"未生效。

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

    "如果我这样解释、我们实际上可以使用激活的通道的"1"读回控制寄存器无关紧要。 "1"未生效。"
    -在我链接的线程中,用户还说他能够读回他写的值,但看起来不像他正确启动了停止条件。

    "如果我这样解释、我们实际上可以使用激活的通道的"1"读回控制寄存器无关紧要。 "1"未生效。"
    -我认为是这样、但如果我们在 o 示波器上放置复位引脚并在您与器件通信时观察它、它也会有帮助(并且不会伤害)。 这是我唯一能想到的其他原因、即工作设备发生故障。 (如果复位由于某种原因变为低电平的时间过长、那么它可能会在我们写入和读取内部寄存器后更改内部寄存器以关闭已启用的通道)。

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

    谢谢! 事实证明、我们有完全相同的问题。 我们尝试在同一个 I2C 事务中写入和读取交换机。 I2C 驱动器通过在两个运行之间保持时钟低电平来锁定总线、从而导致缺少停止条件。 只在一个传输中进行写操作、写操作后立即出现停止条件、这使得开关启动控制字节中设置的通道。

    /F