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.

[参考译文] TCAN332:通信问题

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/977918/tcan332-communication-issues

器件型号:TCAN332

大家好 、

TCAN332D 将在同时发送和接收数据时丢失数据。

如果甲方发送且乙方接收、则数据不会丢失。 如果甲方和乙方同时发送和接收数据、则数据将丢失。

是因为 TCAN332D 无法全双工通信吗? 还是其他东西?

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

    您好、Amy、

    从技术上讲、CAN 协议是一种半双工通信方法、因为节点将从总线发送或接收给定的 CAN 帧。 但是、这一术语并不是系统工作方式的最佳描述、因为在某些时间点、多个节点可以同时驱动总线。 这里看起来很重要的时间段是 CAN 帧的仲裁阶段。

    在仲裁过程中、每个需要在 CAN 总线上发送数据的节点都将发送其消息 ID。 同时、这些节点将监控总线、以查看是否有任何其他节点传输比其自身优先级更高的 ID。 如果节点识别出它没有最高优先级 ID、它将放弃总线以允许在总线上发送优先级消息。 请注意、这些消息 ID 是同时发送的、因此每个位都是重叠的。 这允许任意数量的节点(受电气特性限制)可以使用、而无需知道存在多少个其他节点或任何主/次层级结构。  

    对于您在两个节点尝试同时传输数据时出现的数据丢失问题、可能有两种原因。 1:仲裁未被 CAN 控制器正确处理、并且在这个阶段或2中未正确监控总线。 CAN 收发器无法在仲裁阶段准确传输或驱动总线状态。 由于只有一个节点尝试发送消息时通信工作正常、我认为第一种情况更有可能发生。

    • 这两种模式都使用符合 ISO 11898-1标准数据层规范的 CAN 控制器吗?
    • 如何识别数据丢失? 控制器是否会产生任何特定的错误? 数据是否损坏? 或者它是否只是没有通过?
    • 您表示从甲方到乙方的通信正常。 是否对 B 缔约方对 A 缔约方进行了类似的单向测试?
    • 如果以上都不是问题所在、则在数据丢失期间收集 CAN 总线的示波器截图可能会有所帮助。 看到节点上的 CANH、CANL、TXD 和 RXD 出现数据丢失、将有助于我们了解问题是否出在模拟 CAN 信号上。  

    请告诉我您发现了什么、或者您在此期间是否有任何其他问题。

    此致、
    Eric Schott

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

    尊敬的 Eric:

    非常感谢您的详细答复。  我从中学到了很多。

    下图是客户测量的波形。 您能帮您分析一下。 提前感谢您。

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

    您好、Amy、

    所有这些波形对我来说都很好。 CAN 总线显示有效的 CAN 数据、收发器似乎能够准确地解释总线的状态。 我不怀疑此处的收发器级别发生数据丢失。  

    我会检查以确保此系统中的 CAN 控制器配置正确、并且在传输消息时使用唯一的 ID。 这对于确保每个节点都能区分哪个单独节点在某个帧中赢得仲裁非常重要。  
    我还会检查代码逻辑、以确保处理每个消息并识别中断、即使节点也被配置为发送数据也是如此。 实现这一功能的方式可能因系统而异、因此我恐怕无法提供更多具体建议。  

    如果您在检查这些内容时遇到问题、我还可以推荐一些模拟调试方法来识别可能出现的问题。 在同一范围内捕获节点 A 和节点 B (TXD1、TXD2)以及 CAN 总线(CANH、CANL)的发送信号有助于确定哪个节点驱动哪个显性状态(在 CAN 总线上查看) (TXDn 上的低电平将与 CAN 总线上的多米诺骨牌相对应)。 如果两条 TXD 线在仲裁过程中完全相同(前几位)、并且都在该阶段之后继续(对于 CAN 帧的其余部分)、则仲裁失败、并且两个节点同时发送。 在正确的情况下、一条 TXDn 线将在仲裁后停止尝试发送、并等待下一帧再次尝试发送数据。  

    如果您认为我们可以为您提供更多帮助、请随时在此主题上提出更多问题。

    此致、
    Eric Schott