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

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均为00 00 00 00的csm300模块组成一个can总线网络系统,当这两个id相同的模块同时往can总线端发送数据时将会造成仲裁失败。
2. canid冲突的现象
以csm300为例进行说明,电路硬件简易连接图如图4所示,用两个上位机通过两路串口同时给两个相同配置的模块发送一组数据,此时两模块会同时将rxd脚接收到的数据转换至can总线端。因为两个can节点的id一样,can总线仲裁失败,两发送节点收不到反馈信号,将一直发送最后一帧数据,此时can总线端的波形如图5所示。图4 csm300电路连接图
图5 can总线波形图
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 自定义转换配置图

小米宣布将于12月推出全新的5G手机Redmi K30
Mindspeed完成对picoChip收购案
小米最强旗舰机小米6,涨价500却被网友一致叫好!
超薄PFC电源的高频设计,这道难题如何解?
美海军陆战队正在将远征无人机系统项目拆分成一个系统
【技术分享】不懂CAN协议?如何避免总线仲裁失败?
AR与HUD两者相结合,会诞生怎样的智慧化产品?
全球PCB产业景气回升,国内PCB行业潜力巨大
意法半导体产品在汽车方面的应用
智慧工地:工程机械及环境监测物联网解决方案
uln2003的两种用途
如何有效的提高LED照明的亮度
一文知道开源技术10大发展趋势
开放式标准是IoT增长的关键
康佳转型将进军半导体产业,格力电器则表示将在集成电路产业布局
Vokenization是一种比GPT-3更智能的视觉语言模型
霍尼韦尔完成威尔明顿市由经济刺激法案支持的太阳能计划
通过风向风速仪可更好地研究风的变化
诺基亚3、诺基亚5两款入门手机台湾发布 价格亲民
智能巡检机器人开始上岗 保证电网更加安全可靠地运行