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

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

3天内不再提示

【技术分享】不懂CAN协议?如何避免总线仲裁失败?

AGk5_ZLG_zhiyua 来源:未知 2023-02-03 08:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

CAN总线是可以挂载多个控制单元,每个单元均可以发送和接收数据,为了避免发生冲突,协议规定只有等信道空闲时刻优先级高的单元才能占有总线并发送数据,那么CAN单元是如何判断优先级的呢?

CAN仲裁的实现方式
1. CANID在CAN报文中的位置
每一个CAN报文的CANID有唯一标识的11bit/29bit构成,以标准CAN帧为例,11bitCANID在CAN帧中的位置如图1所示。SOF之后是Identifier,各个节点要外发的CANID通过CANID仲裁,优先级高的报文被优先发送。同时,对应节点优先获得CAN总线的使用权,而仲裁失败的节点则停止数据的发送,转而进行数据的接收,只能等待下一个SOF时刻再去仲裁。

图1标准CAN数据帧格式

2. CAN总线仲裁机制的实现

那么CANID的优先等级是如何判断的呢?其实CAN总线ID仲裁方式相当于一个“线与”的结构,显性(逻辑0)与隐形(逻辑1)相与变为显性即0&1=0,硬件电路简图可参考图2。标准CAN帧格式的总线仲裁方式如图3所示。因为高位在前,低位在后,故CAN标识符组成的数值越小优先级越高。

图2线与电路简图

图3总线仲裁方式图


CANID冲突发生的条件及现象
1.CANID冲突的条件

本文以我司协议转换模块CSM300为例进行介绍,CSM300是集成微处理器、CAN-bus控制器、CAN-bus收发器DC-DC转换、高速数字隔离于一体的嵌入式CAN与UART/SPI双向转换模块。如果我们将两个ID均为00000000的CSM300模块组成一个CAN总线网络系统,当这两个ID相同的模块同时往CAN总线端发送数据时将会造成仲裁失败。

2. CANID冲突的现象

以CSM300为例进行说明,电路硬件简易连接图如图4所示,用两个上位机通过两路串口同时给两个相同配置的模块发送一组数据,此时两模块会同时将RXD脚接收到的数据转换至CAN总线端。因为两个CAN节点的ID一样,CAN总线仲裁失败,两发送节点收不到反馈信号,将一直发送最后一帧数据,此时CAN总线端的波形如图5所示。
图4CSM300电路连接图

图5CAN总线波形图


CSM系列如何避免CANID冲突
为满足不同环境的应用,CSM300系列和CSM100系列均有透明转换、透明带标识转换、自定义协议转换三种转换方式供用户选配,如图6所示。

图6转换方式选配图

透明转换方式下用户可通过MCU或上位机将模块配置为不同的ID避免发生仲裁失败的情况,透明转换方式下,模块无需对数据进行额外处理,最大限度地提高了数据转换速度,也提高了缓冲区的利用率。不过此模式下每个模块的CANID在配置完成后不能更改除非用户再次配置,此外该模式下可能将两组时间间隔接近的UART帧识别为一组数据进行转换,造成数据转换错误。

透明带标识转换方式下,用户可以在配置时固定CANID在串行帧的位置和长度如图7所示,通过改变串行帧数据来控制所发数据的CAN帧ID,方便用户在同一节点发送不同ID的CAN数据。但是此模式下需要确保串行帧的时间间隔足够大,避免模块不能正确识别每组串行帧的结束造成数据转换错误。透明带标识模式下串行帧最小间隔具体要求可参考CSM100和CSM300的用户手册。

图7透明带标识转换配置图

有效的自定义协议转换串行帧包括了帧头、帧尾、帧ID和帧长度等,用户可通过改变串行帧数据来控制CAN帧ID,方便用户在同一节点发送不同ID的CAN数据。同时用户将在配置时固定帧头和帧尾如图8所示,此模式下用户通过串行帧数据告知模块串行帧的帧头、帧尾和数据长度,故此转换方式下可有效避免因串行帧间隔时间短造成的数据转换错误的情况。

图8自定义转换配置图


原文标题:【技术分享】不懂CAN协议?如何避免总线仲裁失败?

文章出处:【微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

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

    关注

    13

    文章

    421

    浏览量

    32375

原文标题:【技术分享】不懂CAN协议?如何避免总线仲裁失败?

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    直播回顾 | CAN XL新标准落地难?从协议解析到实践应用,虹科技术专家带您全面探索CAN XL的技术突破与落地

    IntroductionCANXL总线作为CAN网络的第三代协议,CANXL总线技术在兼容经典CAN
    的头像 发表于 11-12 17:32 1116次阅读
    直播回顾 |   <b class='flag-5'>CAN</b> XL新标准落地难?从<b class='flag-5'>协议</b>解析到实践应用,虹科<b class='flag-5'>技术</b>专家带您全面探索<b class='flag-5'>CAN</b> XL的<b class='flag-5'>技术</b>突破与落地

    CAN 总线自定义协议使用说明

    关于can总线的设置
    发表于 11-05 17:00 1次下载

    嵌入式接口通识知识之CAN接口

    如下:在正常工作时CAN总线上可能会挂载很多设备,如果两个设备同时发送信息,就会发生冲突,为了避免总线冲突,需由总线
    发表于 08-21 16:49

    打破协议壁垒,CAN转EtherCAT连接工业相机秒变跨国CP”!

    在工业自动化中,不同协议设备集成常面临兼容性难题。本文以CAN转EtherCAT连接工业相机为例,从技术原理到实践,提供一套严谨的解决方案,助力高效通信。 一、协议转换必要性
    发表于 07-14 16:20

    CAN总线采样点不一致的危害

    CAN协议规定,节点在检测到过多错误后会进入错误被动状态或总线关闭状态。在总线关闭状态下,节点停止参与通信,可能导致网络部分或完全失效。采样点不一致是导致此类状态的常见原因之一。
    发表于 06-07 08:55

    CAN总线协议网关模块与数据采集器:工业自动化数据交互中枢

    、航空航天、船舶、医疗设备等众多领域,并成为一种广泛使用的工业标准通信协议CAN 总线的数据帧由帧起始、仲裁场、控制场、数据场、CRC 场、应答场和帧结束等部分组成。其中,
    的头像 发表于 05-09 10:10 657次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>协议</b>网关模块与数据采集器:工业自动化数据交互中枢

    罗德与施瓦茨示波器在汽车CAN总线协议分析

    在当今汽车电子系统日益复杂的背景下,汽车CAN总线协议作为车辆电子设备之间的数据传输主干,已成为汽车行业的标准通信协议。随着智能化、自动驾驶技术
    的头像 发表于 02-11 16:36 743次阅读
    罗德与施瓦茨示波器在汽车<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>协议</b>分析

    浅谈CAN协议转换模块

    转换模块实现数据在不同系统间的无缝传输,提升系统的灵活性和可扩展性。 一、基本概念 CAN协议转换模块,简而言之,将CAN总线上的数据转换为其他通信
    的头像 发表于 02-05 16:37 741次阅读

    基于Vector工具进行CAN协议错误帧的分析实践

    CAN(ControllerAreaNetwork)协议是当前使用最普遍的车载通信协议之一,其优点不只体现在多主并行、最高达1Mbit/sec的传输速率(针对标准CAN)、基于优先级的
    的头像 发表于 01-15 10:03 992次阅读
    基于Vector工具进行<b class='flag-5'>CAN</b><b class='flag-5'>协议</b>错误帧的分析实践

    如何使用Arduino实现CAN总线通信呢

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 2816次阅读

    CAN总线的扩展功能及其应用

    的通信协议,它允许多个节点共享同一通信介质(如双绞线)。CAN总线的主要特点包括: 多主控制 :任何节点都可以在任何时间发送消息,无需中央控制。 差分信号传输 :提高信号的抗干扰能力。 非破坏性
    的头像 发表于 12-23 09:04 2250次阅读

    基于Xilinx的A7系列FPGA的CAN总线协议开发

    一、CAN总线协议介绍 CAN是 Controller Area Network 的缩写(以下称为 CAN ),是 ISO 国际标准化的串行
    的头像 发表于 12-21 14:49 3072次阅读
    基于Xilinx的A7系列FPGA的<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>协议</b>开发

    使用CAN总线进行数据采集的方法

    是汽车内部各个模块之间进行通信的一种协议,通过它可以获取到车辆的各种状态信息、传感器数据等。因此,在进行数据采集之前,需要熟悉CAN总线的工作原理、通信协议以及数据格式。 二、选择合适
    的头像 发表于 12-20 18:18 3460次阅读

    CAN总线与其他通信协议对比

    在现代工业和汽车领域,通信协议扮演着至关重要的角色。它们允许不同的电子控制单元(ECU)之间进行数据交换,确保系统的正常运行和协调。CAN总线作为一种成熟的现场总线
    的头像 发表于 12-20 17:59 2610次阅读