CAN协议学习(一)

CAN协议学习(一)一、CAN协议的特点1)在总线空闲时,所有单元都可以发送消息,两个以上单元同时发送消息时,对各消息的Identifier进行逐位仲裁比较,仲裁获胜的单元(具有较高优先级)可继续发送消息,仲裁失败的单元停止发送。2)消息中没有地址,消息广播到总线上,任何总线上的单元都可以接收消息。在总线上增加单元,不会影响到其它的单元。3)最高数据传输速率1Mbps(距离小于40m),最远传输距离10k…

大家好,又见面了,我是你们的朋友全栈君。

一、CAN协议的特点

1)在总线空闲时,所有单元都可以发送消息,两个以上单元同时发送消息时,对各消息的Identifier进行逐位仲裁比较,仲裁获胜的单元(具有较高优先级)可继续发送消息,仲裁失败的单元停止发送。

2)消息中没有地址,消息广播到总线上,任何总线上的单元都可以接收消息。在总线上增加单元,不会影响到其它的单元。

3)最高数据传输速率1Mbps(距离小于40m),最远传输距离10km(速率低于5kbps)。CAN总线两个节点之间的通讯距离与波特率成反比。工程常用为500kbit/s的通信速率。

类型 最高速率 描述
高速CAN 1Mbit/s 最通用的CAN总线类型
低速CAN 125kbit/s 容错,在一条总线短路时仍能正常工作
单线CAN 50kbit/s 主要用低速的车身电子单元、舒适及娱乐控制领域

 

                                       CAN协议学习(一)

4)CAN总线上可挂载多个单元,理论上挂载单元数没有上限,但受总线的时间延迟和电气负载限制。降低通信速率,可增加单元数量。

5)所有单元具有错误检测功能,检测出错误后会立即通知其他单元。正在发送消息的单元一旦检测出错误,会结束当前的发送。

二、网络拓扑

CAN节点挂载在CAN_L和CAN_H之间,为降低反射,高速CAN在CAN总线两端增加了120Ω电阻,低速CAN和单线CAN在节点位置增加了电阻。低速CAN在总的终端电阻为100Ω时性能最佳,因此,确定低速CAN的终端电阻,需要先确定网络中的节点数,每个终端提供100Ω的一部分,并不要求每个终端有相同的阻值,但总值应该为100Ω。如总线中有3个CAN节点,则接到网络上的6个终端电阻值均为600Ω。

ææ¯å享å¾ç

对于高速CAN,当CAN_H – CAN_L < 0.5 时为隐性,即逻辑1;当 CAN_H-CAN_L>0.9V时为显性,即逻辑0。

对于低速CAN,当CAN_L = 5V, CAN_H = 0V时为隐性;当CAN_H = 3.6V,CAN_L = 1.4V时为显性。相较于高速CAN,低速CAN显性和隐性的电平差异更大,抗干扰能力更强,

单线CAN只有一根线,要求节点有较好的共地性,抗干扰能力较弱。

 三、总线仲裁

总线空闲时,任何节点都可以发送报文。如果同时有多个节点发送报文,会出现总线访问冲突,CAN使用逐位仲裁的方式解决冲突。在仲裁期间,每个发送器都对发送的 Identifier 电平与被监控的总线电平进行比较,如果电平相同,则继续发送报文。若发送器发送了一个隐性电平,而监视到一个显性电平,则节点仲裁失败,退出发送状态。因此,Identifier越小,消息的优先级越高。若在非仲裁期间出现发送电平与监视电平不一致的状况,将产生错误事件。

                            CAN协议学习(一)

四、消息机制

 CAN标准定义了四种消息类型,分别为数据帧、远程帧(也有称遥控帧)、错误帧和过载帧。

数据帧:发送器向接收器发送数据帧;

远程帧:接收器向发送器请求数据;

错误帧:任何单元检测到总线错误后发出错误帧;

过载帧:用于相邻数据帧和远程帧之间提供延时,由接收器发送,表示接收器来不及处理数据,请求延迟。

五、位填充

CAN总线使用非归零编码(NRZ),具有效率高的特点,但同步性能差。为保证同步通信中有足够的电平跳变,规范中应用位填充机制,在连续的5个相同电平后插入1个反相电平,接收节点收到消息后,自动将填充位删除。若检测到连续6个相同电平,则节点报错。

六、消息过滤

 消息在CAN总线上是以广播的形式传输的,但并不是所有节点都对总线上的信息感兴趣。节点可通过CAN控制器中的过滤码和掩码来检验消息的 Identifier 是否匹配,从而决定是否接收消息。

例:设置过滤码位 0x 00 00 15 60,设置掩码为 0x 1F FF FF F0,则节点只接收 Identifier 为 0x 00 00 15 60 ~0x 00 00 15 6F的消息。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154150.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Qt开发笔记之QCustomPlot:QCustomPlot介绍、编译与使用

    Qt开发笔记之QCustomPlot:QCustomPlot介绍、编译与使用欢迎技术交流和帮助,提供所有IT相关的服务,有需要请联系博主QQ:21497936,若该文为原创文章,未经允许不得转载原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/77847820目录效果​Demo下载地址QCustom…

    2022年10月17日
  • 邮件编辑指南

    邮件编辑指南

  • Burp Suite抓包使用步骤「建议收藏」

    Burp Suite抓包使用步骤「建议收藏」原创https://www.cnblogs.com/mihoutao/p/11690432.html金龟子大战猕猴桃BurpSuite抓包工具的操作步骤见安装步骤那篇博客检查是否存在漏洞,就看拦截之后修改过的数据是否写进了数据库举例一、上传文件1、打开Burp.调整Proxy-Intercept-Interceptison为‘Interceptisoff’(拦截器开关)2、在火狐中打开需要拦截的网页,(比如同charlse博客里面写到的上传1.txt文件),点击上传文件按钮3、回

  • adventureworksdw2012_示例数据库怎么导入

    adventureworksdw2012_示例数据库怎么导入1、http://sqlserversamples.codeplex.com/通过网站下载示例数据库,http://msftdbprodsamples.codeplex.com/releases/view/55926 为下载地址2、其中安装AdventureWorks2008R2(oltp)的时候,需要开启sqlserver的filestream功能。点击计算机-管理-右

  • 【Unity3D】自学之路2.0

    【Unity3D】自学之路2.0一、前言原文主要讲的是如何从零基础入门,然后一步一步进阶的文章,包括很多学习资料,学习的网址,研究方向等,内容还是比较全面的。大家多多支持一些克森大神,关注一下他的公众号。这篇文章就将原文的内容进行总结合并,然后转载过来跟大家一起学习。二、原文原文地址:https://mp.weixin.qq.com/s/nAaGAzT7NIPH4v6YOzBCRg原文作者:克森原文出处:微…

  • MFC_recvfrom

    MFC_recvfromrecvfrom():socket接收函数函数原型:ssize_trecvfrom(intsockfd,void*buf,size_tlen,unsignedintflags,structsockaddr*from,socket_t*fromlen);返回值:成功则返回接收到的字符数,失败返回-1.参数描述:sockfd:标识一个已连接套接口的描述字。buf:接收数据缓冲区。len:缓冲区长度。flags:调用操作方式。是以下一个或者多个标志的组合体,可通过“|

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号