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

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

3天内不再提示

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

ZLG致远电子 2023-02-02 10:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

CAN总线是可以挂载多个控制单元,每个单元均可以发送和接收数据,为了避免发生冲突,协议规定只有等信道空闲时刻优先级高的单元才能占有总线并发送数据,那么CAN单元是如何判断优先级的呢?c6161c16-a278-11ed-ad0d-dac502259ad0.jpg CAN仲裁的实现方式1. CANID在CAN报文中的位置每一个CAN报文的CANID有唯一标识的11bit/29bit构成,以标准CAN帧为例,11bitCANID在CAN帧中的位置如图1所示。SOF之后是Identifier,各个节点要外发的CANID通过CANID仲裁,优先级高的报文被优先发送。同时,对应节点优先获得CAN总线的使用权,而仲裁失败的节点则停止数据的发送,转而进行数据的接收,只能等待下一个SOF时刻再去仲裁。

c624c5c2-a278-11ed-ad0d-dac502259ad0.jpg

图1标准CAN数据帧格式

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

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

c642e8fe-a278-11ed-ad0d-dac502259ad0.jpg

图2线与电路简图c652d318-a278-11ed-ad0d-dac502259ad0.jpg

图3总线仲裁方式图


c6161c16-a278-11ed-ad0d-dac502259ad0.jpg 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所示。c67308f4-a278-11ed-ad0d-dac502259ad0.jpg图4CSM300电路连接图c6814aea-a278-11ed-ad0d-dac502259ad0.png

图5CAN总线波形图


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

图6转换方式选配图

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

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

c6c3110a-a278-11ed-ad0d-dac502259ad0.png

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

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

c6d3182a-a278-11ed-ad0d-dac502259ad0.png图8自定义转换配置图

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

    关注

    59

    文章

    3097

    浏览量

    473461
  • 总线
    +关注

    关注

    10

    文章

    3057

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于FPGA的轻量级CAN总线控制器实现方案

    CAN总线作为工业和汽车领域最常用的通信总线,具有拓扑结构简洁、可靠性高、传输距离长等优点。CAN总线的非破坏性
    的头像 发表于 04-03 10:10 1908次阅读
    基于FPGA的轻量级<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>控制器实现方案

    CAN总线报错看不懂?5种错误帧+5步排查法一次讲清

    CAN总线通信异常?错误帧频繁出现?本文详解五种错误帧类型,并提供五步排查法,助你快速定位问题根源。错误帧的作用错误帧是CAN总线用于错误通知的报文。当任一节点检测到通信错误时,会立即
    的头像 发表于 03-16 11:36 385次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>报错看<b class='flag-5'>不懂</b>?5种错误帧+5步排查法一次讲清

    开源项目汽车CAN总线分析仪总体介绍

    在做车载、工业控制项目时,CAN 总线调试总遇到协议不兼容、数据抓不全的问题?
    的头像 发表于 02-05 10:03 724次阅读
    开源项目汽车<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>分析仪总体介绍

    瑞芯微(EASY EAI)RV1126B CAN使用

    1.CAN简介使用SocketCAN的主要目的就是为用户空间的应用程序提供基于Linux网络层的套接字接口。与广为人知的TCP/IP协议以及以太网不同,CAN总线没有类似以太网的MAC
    的头像 发表于 01-07 10:14 2898次阅读
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>CAN</b>使用

    I2C的SDA仲裁介绍

    I2C 支持 SDA 冲突检测和仲裁,可以保证在多个主机企图控制 I2C 总线时,I2C 总线上的数据不被破坏。每个主机发送数据时,都会同时比较总线上的数据与自己发送的数据是否一致,不
    发表于 12-16 06:25

    圆满收官 | 虹科CAN总线专题全系列直播精华回顾已上线!

    虹科CAN总线系列直播圆满收官!HongKeWebinars作为汽车电子通信领域的核心协议CAN总线
    的头像 发表于 11-24 17:55 2979次阅读
    圆满收官 | 虹科<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>专题全系列直播精华回顾已上线!

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

    IntroductionCANXL总线作为CAN网络的第三代协议,CANXL总线技术在兼容经典CAN
    的头像 发表于 11-12 17:32 1702次阅读
    直播回顾 |   <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 2次下载

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

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

    120Ω的秘密:CAN总线终端电阻的重要性

    CAN总线作为一种广泛应用的工业通信协议,其终端电阻的作用不容忽视。本文将详细探讨CAN总线终端电阻的重要性及其在通信中的关键作用。
    的头像 发表于 08-08 11:35 1465次阅读
    120Ω的秘密:<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>终端电阻的重要性

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

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

    一文读懂CAN XL协议

    随着汽车和工业应用中数据通信量的增加,传统的CAN协议已无法满足更高的数据速率需求。传统CAN协议在数据速率和总线负载能力方面存在限制,难以
    的头像 发表于 07-03 14:53 4646次阅读
    一文读懂<b class='flag-5'>CAN</b> XL<b class='flag-5'>协议</b>

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

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

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

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