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
    +关注

    关注

    56

    文章

    2470

    浏览量

    459254
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87218
收藏 人收藏

    评论

    相关推荐

    canfd协议是什么?canfd协议的应用场景

    CAN FD(CAN with Flexible Data rate)协议是一种串行通讯协议,继承了CAN
    的头像 发表于 04-17 14:55 121次阅读

    CAN报文为什么会发送失败

    CAN总线调试过程中出现报文发送失败。很多工程师都对此只知其一不知其二,今天我们就以CAN报文发送失败的问题来做一次探讨。在了解
    的头像 发表于 04-12 08:25 190次阅读
    <b class='flag-5'>CAN</b>报文为什么会发送<b class='flag-5'>失败</b>?

    高速CAN总线和低速CAN总线的特性

    总线的特性。 首先,高速CAN总线是指数据传输速率较高的CAN总线,其中包括CAN 2.0A和
    的头像 发表于 01-31 14:09 824次阅读

    CAN总线协议简介及其常见的应用领域

    CAN总线协议是一种串行通讯协议,主要用于汽车和工业自动化领域,实现了实时应用的需求。 首先,CAN总线
    的头像 发表于 01-19 17:47 389次阅读

    CAN总线的发展历程 CAN XL总线的典型应用

    CAN总线通讯协议由德国博世于上世纪80年代发明,第一个使用CAN总线通讯协议的量产车型是199
    的头像 发表于 12-21 14:03 995次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>的发展历程 <b class='flag-5'>CAN</b> XL<b class='flag-5'>总线</b>的典型应用

    [ElfBoard] YOU CAN YOU UP 之CAN总线

    电压分别3.5V和1.5V,即压差为2V,经过收发器转换,MCU则可通过CAN_Rx读取到信号0。 通信的整个过程 空闲状态 在CAN协议中,当总线上的上出现连续的11位隐性电平(两根
    发表于 12-05 10:45

    [ElfBoard] YOU CAN YOU UP 之CAN总线分享

    电压分别3.5V和1.5V,即压差为2V,经过收发器转换,MCU则可通过CAN_Rx读取到信号0。 通信的整个过程 空闲状态 在CAN协议中,当总线上的上出现连续的11位隐性电平(两根
    发表于 12-04 14:47

    CAN协议栈与LIN协议栈介绍

    CAN协议栈 汽车CAN协议栈是一种软件组件,用于实现汽车电子系统中的CAN总线通信功能。它包含
    的头像 发表于 10-27 16:16 1768次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>协议</b>栈与LIN<b class='flag-5'>协议</b>栈介绍

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

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

    基于CAN总线的温度测控系统介绍

    驱动电路,目前可达110个。所以,基于CAN的分布式测控系统适合各种规模的应用场合,由于CAN现场总线采用非破坏总线仲裁
    发表于 09-19 06:45

    can总线的通信协议有哪些 CAN接口保护及工作原理

    CAN总线(Controller Area Network)是一种广泛应用于汽车、工业自动化和其他领域的串行通信协议。以下是几种常见的CAN总线
    的头像 发表于 08-18 14:40 1.2w次阅读
    <b class='flag-5'>can</b><b class='flag-5'>总线</b>的通信<b class='flag-5'>协议</b>有哪些 <b class='flag-5'>CAN</b>接口保护及工作原理

    认识CAN总线错误 CAN总线错误分析与解决

    认识CAN 总线错误的第一步就是了解认识CAN 总线协议和它的具体功能,这样才能更容易地理解CAN
    发表于 08-14 15:18 3618次阅读
    认识<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>错误 <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>错误分析与解决

    CAN协议数据帧的介绍

    通过 CAN 总线传输数据是需要按照一定协议进行的,CAN 协议提供了 5种帧格式来传输数据:数据帧、遥控帧、错误帧、过载帧和帧间隔。其中数
    的头像 发表于 07-25 10:36 6030次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>协议</b>数据帧的介绍

    I2C总线的同步、仲裁介绍

    发送控制字节和传送数据。 但是如果有两个或两个以上的节点都向总线上发送启动信号并开始传送数据,这样就形成了冲突。要解决这种冲突,就要进行仲裁的判决,这就是 I2C 总线上的仲裁。 I2
    的头像 发表于 07-22 16:36 1798次阅读
    I2C<b class='flag-5'>总线</b>的同步、<b class='flag-5'>仲裁</b>介绍

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

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