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.

[参考译文] C2000系列中的 CAN 通信总线占线检查

Guru**** 2928980 points

Other Parts Discussed in Thread: TMS320F2808

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/740409/can-communication-bus-busy-check-in-c2000-series

主题中讨论的其他器件:TMS320F2808

您好、Haresh、

如果丢失仲裁的节点一直在尝试总线访问、那么它将处于紧密循环中?

假设我有4个节点、并且所有节点都通过 CAN 连续发送数据(考虑到第一个节点具有最高优先级、并且它会持续剩余(2、3、4))。 那么、第四个节点的总线访问将很难实现? 或如何处理它?

对 Dheeraj Kunnath 的答复

数据传输将执行多少次重试?

answe-->如果仲裁失败、重试次数将永远不变。 如果发生错误、则会更加复杂一些、具体取决于错误的来源。

 

Hareesh

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

    Dheeraj、

               从理论上讲,MSGID 确实是可能的(请注意,我不使用“node”一词,但 MSGID 确实与一个节点相关联; 您不应在多个节点中使用相同的 MSGID)具有较高优先级的来占用总线、也不应让其他(具有)较低优先级 MSGID 的节点有机会进行传输。 当总线负载接近100%或100%时、这是可能的。 这必须在应用程序中处理。

     

    但在实际应用中、总线通常不是在100%总线负载下运行。 当具有较低优先级 MSGID 的节点应该能够传输时、将会有总线空闲时间。 在总线负载较高的情况下,较低优先级的消息肯定不会及时发出(或根本不会发出)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们是否需要配置总线空闲时间或它是通用的默认周期?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Haresh、
    感谢您的宝贵意见、
    如何计算总线负载?在 TMS320F2808中、有32个邮箱、因此一次尝试32条消息可被视为100%负载?
    总线空闲时间是如何配置的? 它是通过寄存器设置进行配置还是 CAN 通信的默认值?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最小总线空闲时间由协议确定。 最大值可以是任何值、由应用决定。

    总线负载再次由应用确定。 假设您配置2个邮箱进行传输。 您可以同时设置用于传输的标志、并在第一次传输结束后立即再次设置该标志。 这样、两个 MBXes 就会不停地传输数据。 如果您在总线分析仪上监控总线负载、您应该会看到100%总线负载。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dheeraj、

               有关协议本身的一般信息(我们的文档中未介绍)、我们提供了出色的在线资源。

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

    您好、Haresh、

    如果我将全部32个邮箱(TMS320F2808)配置为数据并向 TX 提供命令、那么每个消息框是否会同时尝试总线、还是总线访问的顺序?

    如果所有32个都尝试总线访问、那么仲裁是如何工作的? 仲裁与数据字段一起出现(因为所有32个邮箱都使用相同的消息 ID/标识符)?

    提前感谢..

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

    您的问题的答案在 eCAN 参考指南中:"如果两个邮箱具有相同的优先级、那么优先传输具有较高编号的邮箱。" 需要详细说明的是、如果您没有为邮箱设定传输优先级、即 TPL = 0 (或者 TPL 值相同)、那么数字更高的邮箱将获得优先级。 如果您同时从所有32 MBXes 启动传输,则传输顺序为 MBX31、MBX30、MBX29、...... MBX1、MBX0。 如果您从 app.note SPRA876运行示例 CAN_TRPRTSTP_A、则可以轻松理解这一点。

     

    CAN 世界中的"仲裁"一词是指竞争获得 CAN 总线访问权限的两个节点之间的仲裁。 它不是指同一节点内的邮箱。 仲裁完全基于与总线竞争的帧的 MSGID 来完成。 在一个节点内、传输优先级基于 MBX 编号(如果邮箱之间的 TPL 值相等)。 如果 TPL 值不同、则优先级基于 TPL 值。 请再次参阅我的 app.note 示例。

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