0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈CAN总线的一般冲突机制

CHANBAEK 来源:物联网知识 作者:跋扈洋 2023-11-21 14:47 次阅读

遇到的问题

问题的发现

最近在开发Canopen项目中,进行一主多从设备通信时,主站发送同步帧,两个从站往往只有帧ID优先级高的设备可以让主站接收到数据,而另一个从设备的数据往往接收不到。但当我关闭其中一个can从设备,另一个就可以和主站设备通信正常。经过排查发现,是由于Can的冲突解决机制的问题。

在CAN多机通信中,两个设备同时发送数据,帧ID优先级高的CAN设备会“抢占”总线,而另外的设备需要选择冲突解决策略。

CAN总线的一般冲突机制

  • 非破坏性抢占机制(Non-Destructive Arbitration): CAN 使用一种非破坏性的仲裁机制,这意味着当两个节点同时发送消息时,通过识别消息标识符中的位的值来确定哪个消息具有更高的优先级。具体来说,CAN总线上的每个节点都会根据其消息标识符的比特值来判断是否能够“抢占”总线。
  • 标识符比较: 在CAN总线上,每个节点在发送消息之前会监测总线上的信号电平。如果一个节点正在发送1,而另一个节点正在发送0,那么正在发送1的节点会发现冲突,并会停止发送消息。这种标识符比较机制有助于节点在发送消息时检测冲突并进行冲突解决。
  • 仲裁场(Arbitration Field): CAN消息包含一个仲裁场,它包含消息标识符。在这个字段中,CAN节点通过比较消息标识符中的位来决定哪个节点具有更高的优先级。较低优先级的节点将会自动停止发送,并等待较高优先级的节点完成其消息的发送。
  • 回退机制: 如果多个节点尝试同时发送消息,冲突解决后,较低优先级的节点会等待一段随机时间后重新尝试发送消息。这种回退机制有助于减少冲突的再次发生,提高总线的效率。

总的来说,CAN总线的冲突机制通过使用非破坏性的仲裁和标识符比较,以及回退机制,确保了多个节点之间的有序通信,使得总线上的消息能够按照优先级顺序进行传输。这种设计使得CAN总线非常适用于要求实时性和可靠性的应用,例如汽车控制系统。

STM32中的CAN冲突机制

我们在进行CAN的多机通信时,往往希望不会丢帧。遇到CAN总线冲突时,受阻的CAN从设备进行自动回传是我们需要的。而打开冲突回传只需要在CAN初始时对AutoRetransmission 进行使能。

hcan1.Init.AutoRetransmission = ENABLE;

AutoRetransmission 是用于配置CAN控制器的自动重传(Automatic Retransmission)功能。在CAN通信中,当节点发送消息但未收到确认时,可以选择是否自动进行重传。当 AutoRetransmission 被启用(ENABLE)时,如果CAN控制器未收到确认,则会自动重传先前的消息。这有助于提高消息的可靠性,特别是在有可能发生干扰或冲突的环境中。当 AutoRetransmission 被禁用(DISABLE)时,如果发送的消息未收到确认,控制器将不会自动进行重传。在这种情况下,需要由软件来处理重传逻辑,开发者可以通过程序来控制何时以及如何进行重传。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN总线
    +关注

    关注

    145

    文章

    1950

    浏览量

    130732
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2744

    浏览量

    463629
  • 通信
    +关注

    关注

    18

    文章

    6029

    浏览量

    135951
  • STM32
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355767
收藏 人收藏

    评论

    相关推荐

    浅谈CAN总线外围电路设计

    CAN总线接口外围电路设计一般按照上图进行绘制。一般主机厂商使用的是CAN控制器,对应的需要使用收发器。
    的头像 发表于 07-25 09:04 1.4w次阅读
    <b class='flag-5'>浅谈</b><b class='flag-5'>CAN</b><b class='flag-5'>总线</b>外围电路设计

    CAN 总线错误检测机制#can总线

    CAN 总线
    北汇信息POLELINK
    发布于 :2023年05月26日 13:54:03

    CAN总线的位定时与同步机制#汽车CAN总线 

    CAN总线
    北汇信息POLELINK
    发布于 :2023年07月17日 10:57:12

    CAN总线访问与仲裁机制#汽车CAN总线 

    CAN总线
    北汇信息POLELINK
    发布于 :2023年10月20日 15:33:02

    CAN总线学习①-总线仲裁机制 精选资料分享

    Controller Area Network简称CAN总线个在汽车电子上用得非常广泛的种协议,CAN
    发表于 08-20 06:08

    can总线故障一般原因及问题解决方法

    CAN总线系统中拥有CAN控制器、个信息收发器、两个数据传输终端及两条数据传输总线,除了数
    发表于 11-27 11:01 32.8w次阅读

    浅谈局部网络管理 基于CAN总线的局部网络管理机制设计

    CAN总线局部网络管理机制及实现 近年来, 汽车 的节能问题备受关注,消减不必要的能源损耗是种非常有效的方法。
    发表于 04-12 17:32 7024次阅读
    <b class='flag-5'>浅谈</b>局部网络管理 基于<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>的局部网络管理<b class='flag-5'>机制</b>设计

    can总线仲裁机制详解

    CAN总线种基于优先级的串行通信网络,采用载波监听多路转换冲突避免协议,CAN总线中传输的数
    发表于 04-24 17:48 2.2w次阅读
    <b class='flag-5'>can</b><b class='flag-5'>总线</b>仲裁<b class='flag-5'>机制</b>详解

    浅谈总线通讯数据冲突的问题的解决

    现场总线作为工业自动化系统中最后段通讯的桥梁,越来越多的传感器和执行机构都集成了CAN总线之类的通讯接口,但其固化的几个通讯数据格式,面对当前众多复杂的大系统,时常会给设计者带来底层
    发表于 11-13 11:18 3419次阅读

    CAN总线一般的通讯系统总线相比,它的优势是什么

    应用及与众不同的设计方案。 CAN总线一般的通讯系统总线对比,它的数据通讯具备突显的可信性、实用性和协调能力,是种合理适用分布式系统操纵
    发表于 11-18 17:17 2670次阅读

    CAN总线终端电阻为什么是120Ω

    CAN总线终端电阻,一般来说都是120欧姆,实际上在设计的时候,也是两个60欧姆的电阻串起来,而总线一般有两个120Ω的节点,基本上稍微知
    发表于 01-15 10:59 3345次阅读

    浅谈CAN总线终端电阻的作用

    CAN总线终端电阻,一般来说都是120欧姆,实际上在设计的时候,也是两个60欧姆的电阻串起来,而总线一般有两个120Ω的节点,基本上稍微知
    的头像 发表于 06-20 09:54 2024次阅读
    <b class='flag-5'>浅谈</b><b class='flag-5'>CAN</b><b class='flag-5'>总线</b>终端电阻的作用

    浅谈CAN总线入侵检测的精度

    浅谈CAN总线入侵检测的精度
    发表于 07-12 10:39 398次阅读
    <b class='flag-5'>浅谈</b><b class='flag-5'>CAN</b><b class='flag-5'>总线</b>入侵检测的精度

    can总线波特率一般采用多少?

    can总线波特率一般采用多少 Can总线是指Controller Area Network,是
    的头像 发表于 09-07 15:05 4303次阅读

    CAN总线控制器的工作原理

    CAN(Controller Area Network,控制器局域网)总线控制器的工作原理涉及多个方面,包括消息传输、冲突检测与解决、总线仲裁等关键
    的头像 发表于 09-30 11:33 819次阅读