CAN总线传输协议[通俗易懂]

CAN总线传输协议[通俗易懂]一、控制器局域网总线(CAN,ControllerAreaNetwork)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线、同轴电缆或光纤来传输信号,因其高性能、高可靠性和高实时性等特点,已经成为了世界上应用最广泛的现场总线之一。公元1991年,CAN总线技术规范(CANVersion2.0)制定并发布,该技术规范共包括A和B两部分,称为CAN2.0A和CAN2.0B。其中CAN2.0…

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

一、控制器局域网总线(CAN,Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线同轴电缆光纤来传输信号,因其高性能、高可靠性和高实时性等特点,已经成为了世界上应用最广泛的现场总线之一。公元1991年,CAN总线技术规范(CAN Version2.0)制定并发布,该技术规范共包括A和B两部分,称为CAN2.0ACAN2.0B。其中CAN2.0A给出了CAN报文的标准格式,CAN2.0B给出了标准格式扩展格式两种。CAN总线最高传输速率可达1Mbps(通信距离最长40m),如果降低传输速率,其直接通信的最远距离可达10km(速率5Kbps以下),其总线上的节点数可达110个


二、CAN总线工作原理:

1. CAN总线没有主从节点之分,所有CAN总线上的节点都是地位等价的。当CAN总线上的一个节点发送数据时,它以报文的形式广播给网络中的而所有节点;这样对于每个节点来说,无论数据是否发给自己,都对其进行接收。

2. CAN总线每组报文开头的11位字符为标识符,定义了报文的优先级;在同一个总线中,标识符是唯一的,不可能有两个节点发送具有相同标识符的报文。当然接收节点也会根据标识符来判断是否接收这帧信息,一般称这项技术为报文滤波技术。

3. CAN总线接收节点可以通过远程数据请求发送远程帧请求发送节点发送相应的数据,回应节点传送的数据帧与请求数据的远程帧具有相同的标识符。

4. CAN总线的优先权由发送数据报文中的标识符决定报文占用总线的优先权;标识符越小,优先权越高

5. CAN总线的仲裁机制:只要总线空闲,任何节点都可以向总线发送报文。如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。通过使用标识符逐位仲裁可以解决这个碰撞问题。而且当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧

6. 目前CAN总线通信协议仅仅包括OSI七层互联参考模型中的数据链路层物理层


三、CAN总线物理层:

1. CAN总线物理层主要采用两个差分传输信号线组成CAN总线网络,分别为CANHCANL,所有CAN总线上的节点都可以连接到这两条差分信号传输网络上进行通信。下图是CAN总线物理层的互联模型,其中每个ECU可以视为每个CAN节点

CAN总线传输协议[通俗易懂]

2. CAN节点一般由两部分组成:CAN收发器CAN控制器

CAN收发器负责将CAN控制器的TTL或CMOS的电平信号转换为CAN差分模拟电平信号进行数据传输;也将CAN的差分模拟电平信号转换为TTL/CMOS的电平信号送到CAN控制器,以实现完整的双向通信。

CAN控制器负责解析来自CAN收发器送来的数据,也将用户的数据传送到CAN收发器并发送出去;CAN控制器一般具备数据帧的解析与解码,数据屏蔽与滤波,数据帧的打包与封装等功能,是与用户交互的端口。

下图是一般的CAN节点的构造电路图。

CAN总线传输协议[通俗易懂]

3. CAN总线物理层标准:CAN协议经过ISO标准化后有ISO11898标准(高速CAN)ISO11519-2标准(低速CAN)两种,这两种标准的数据链路层是一样的,但是物理层不同。下图是两种标准的差异对比图。

CAN总线传输协议[通俗易懂]

高速CAN物理层协议应用最为广泛,而低速CAN物理层协议一般应用于可靠性要求较高的场合,这里不做详细介绍。

4. CAN总线显性与隐性:CAN2.0规范定义了两种互补的逻辑数值:显性和隐性。同时传送显性和隐性位时,总线呈现显性状态;同时传送显性状态位时,总线呈现显性状态;同时传送隐性状态位时,总线呈现隐性状态显性数值表示逻辑0,隐性数值表示逻辑1

如下图所示,CAN总线为隐性(逻辑1)时,CANH和CANL电平都为2.5V(电位差为0);CAN总线为显性(逻辑0)时,CANH和CANL电平分别为3.5V和1.5V(电位差为2V)。

CAN总线传输协议[通俗易懂]


四、CAN总线数据链路层:

1.下图是CAN标准数据帧:用于发送节点向接收节点传送数据的帧。当接收节点接收到帧起始到CRC字段的数据都没有错误时,接收节点将在确认间隙位发送一个显性电平(ACK),此时总线电平为发送节点的隐性和接收节点的显性线与为显性电平,表明数据传输无误,没有错误发生。

CAN总线传输协议[通俗易懂]

2.下图是CAN扩展数据帧:用于发送节点向接收节点传送数据的帧。当接收节点接收到帧起始到CRC字段的数据都没有错误时,接收节点将在确认间隙位发送一个显性电平(ACK),此时总线电平为发送节点的隐性和接收节点的显性线与为显性电平,表明数据传输无误,没有错误发生。

CAN总线传输协议[通俗易懂]

3. 下图是CAN远程帧:用于接收节点向具有相同ID的发送节点请求数据的帧。

CAN总线传输协议[通俗易懂]

4. 下图是CAN主动错误帧:用于发送节点或接收节点检测出错时向其他节点通知错误的帧。CAN总线一般存在五种错误:CRC错误、格式错误、应答错误、位发送错误、位填充错误。

CAN总线传输协议[通俗易懂]

5. 下图是CAN过载帧:用于接收节点通知发送节点其尚未做好接收准备的帧。由于存在多个节点同时过载且过载帧发送有时间差的问题,可能出现过载标志叠加后超过6个位的现象。

CAN总线传输协议[通俗易懂]


五、CAN总线延时分析:

1. CAN总线的数据传输总会有一定的延时,例如:隔离器件延时CAN控制器延时CAN收发器延时传输线延时等。下图是CAN总线传输过程的延时示意图。

CAN总线传输协议[通俗易懂]

如图可知,以发送节点发送数据,到接收节点接收数据后发送ACK应答信号,再到发送节点成功接收到ACK应答信号为止。这一整个数据通信过程的延时为:Tdelay = 2\ast (t1+t2+t3+t4+t5+t6+t7)。由此可见,CAN总线的通信距离通信速率是和CAN总线数据通信的传输延时密切相关的。

2. CAN总线的位定时与采样点:以1Mbps的传输速率为例,则速率的周期为1000ns,即CAN总线每传输一位数据需要1000ns的时间周期。但是CAN总线数据传输有一定的延时,因此必须合理考虑每一位数据的采样点位置,以满足延时的要求。下图是CAN总线网络通信的位定时与采样示意图,其中位时间为1000ns。

CAN总线传输协议[通俗易懂]

如图所示,CAN总线中每一位数据由四部分构成:同步段传播段相位缓冲段1相位缓冲段2

同步段:用于总线各个节点之间的同步。

传播段:用于补偿信号的物理传播延时。

相位缓冲段1 && 相位缓冲段2:用于补偿信号沿的相位误差,以便更精确地进行采样。可以联想到建立时间和保持时间,是不是很熟悉有没有?熟悉就好,不说了。

 

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

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

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

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

(0)


相关推荐

  • Darknet-53_darknet_track

    Darknet-53_darknet_track今天想下载这个文件,百度一搜,好多博主要收费才能下载,我就奇怪了,这玩意又不是他自己脑力活动创造的代码,收啥费啊,现在免费分享这个链接:链接:https://pan.baidu.com/s/17yywRWP-IaGXT6es1u5_-A提取码:fggd各位看官,拿走的时候顺便点个赞吧。20204.24…

    2022年10月30日
  • 网站系统开发需要掌握的技术有哪些_网页开发需要学什么

    网站系统开发需要掌握的技术有哪些_网页开发需要学什么1、JDBC技术在JavaWeb应用开发中,数据库管理系统(RDBMS)的使用是不可缺少的。JDBC(JavaDatabaseConnectivity)是一种用于执行SQL语句的Ja

  • servlet setattribute用法_servlet禁用session

    servlet setattribute用法_servlet禁用session这两天一直在做手机验证码的工作,ajax一下子就连通了,但是session存放发送给手机的随机验证码就无法读出来了(其实不是无法读出来,往下看),导致无法验证用户填写的手机验证码,于是我查了session的一些过期设置,还一度怀疑setMaxInteractiveInterval()的参数单位是不是毫秒。弄了下个下午之后实在受不了,我一直往session是不是第二次请求action时就过期了的方向去

    2022年10月11日
  • vue上传图片并预览

    vue上传图片并预览html代码:<divid=”headImg”><divid=”myPhoto”><divclass=”viewPhoto”@click=”monidianji”><icl…

  • 饿了么是阿里巴巴旗下的吗_阿里巴巴收购饿了么分析

    饿了么是阿里巴巴旗下的吗_阿里巴巴收购饿了么分析饿了么是阿里巴巴公司的,2018年4月2日,阿里巴巴以95亿美元全资收购饿了么。饿了么创始人张旭豪曾公开表示,这是饿了么的“最佳选择”。整体加入阿里之后,阿里的多元流量将为其带来更多收益。作为阿里新零

  • 基于java springboot android安卓点餐外卖系统源码(毕设)「建议收藏」

    基于java springboot android安卓点餐外卖系统源码(毕设)「建议收藏」开发环境及工具:大等于jdk1.8,大于mysql5.5,idea(eclipse),AndroidStudio技术说明:springbootmybatisandroid代码注释齐全,没有多余代码,适合学习(毕设),二次开发,包含论文技术相关文档。功能介绍:用户端:登录注册首页显示轮播图,菜品分类,根据分类展示菜品(可带推荐算法),点击入购物车,然后点击结算,计入下单界面,可选择自取和配送(配送需选择地址);也可以点击菜品进入详情,详情展示菜品评价,可以点击下单订单展示个人订单信息(包含取消,支付,完

发表回复

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

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