本文以三个采用CAN通信控制器SJA1000的CAN节点为例,分析CAN总线仲裁机制。

案例:

已知三个CAN节点分别发送以下数据帧报文:

  1. 数据帧报文1的ID: (ID.10) 0111 1110 110 (ID.0)
  2. 数据帧报文2的ID: (ID.10) 0010 1110 101 (ID.0)
  3. 数据帧报文3的ID: (ID.10) 1011 1110 111 (ID.0)

问题:

  1. 若CAN节点1能接收报文1、2、3,给出该节点验收AMR的值,使接收到的数据帧报文类别最少?
  2. 若CAN节点1、2、3同时分别向总线上发送数据帧报文1、2、3,则经过总线仲裁,哪个CAN节点可以继续向总线发送报文?为什么?

分析:

根据CAN总线的仲裁机制,CAN节点在发送数据帧报文时,会将报文的标识符逐位与总线上正在传输的标识符进行比较,按照以下规则进行仲裁:

  1. **仲裁优先级:**标识符中值为0的位优先级高于值为1的位。即在标识符相同的情况下,值为0的位具有更高的优先级。
  2. **仲裁段:**在标识符的每个位上,如果有节点发送0,而其他节点发送1,则发送0的节点获胜,可以继续发送报文。

解答:

  1. **验收AMR的值:**为了使接收到的数据帧报文类别最少,需要设置AMR为00000000000,即不屏蔽任何位,接收所有报文。

  2. 经过总线仲裁后可以继续发送报文的节点:

    • 由于报文1的标识符的第2位为0,而报文2和报文3的标识符的第2位都为1,因此报文1的节点具有最高的优先级,可以继续向总线发送报文。

结论:

通过分析CAN总线仲裁机制,我们可以得出以下结论:

  • 验收AMR的值决定了接收节点的过滤能力,设置不同的AMR值可以接收不同的数据帧报文类别。
  • 在多个节点同时发送数据帧报文时,标识符中值为0的位优先级高于值为1的位,优先级高的节点可以继续发送报文。

提示:

  • 本文仅为简单案例,实际应用中需要根据具体情况进行分析和设置。
  • CAN总线仲裁机制是CAN协议中非常重要的组成部分,理解仲裁机制对于正确使用CAN总线至关重要。
CAN总线仲裁机制分析:SJA1000控制器应用案例

原文地址: http://www.cveoy.top/t/topic/i1Bj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录