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:用于补偿信号沿的相位误差,以便更精确地进行采样。可以联想到建立时间和保持时间,是不是很熟悉有没有?熟悉就好,不说了。

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 利用JS跨域做一个简单的页面訪问统计系统

    利用JS跨域做一个简单的页面訪问统计系统

    2021年12月8日
    53
  • ssd1315驱动oled屏_oled屏幕的手机有哪些

    ssd1315驱动oled屏_oled屏幕的手机有哪些淘宝隔壁老王家的OLED运动手环,非常的便宜2RMB一个。###Part0:可用器件列表0x00:OLDE屏幕:0.91inch,分辨率:12832,主控:SSD1306,接口:SPI,颜色:

    2022年8月4日
    2
  • 解决打印机报错:操作无法完成(错误0x00000709)。

    解决:操作无法完成(错误0x00000709)。再次检查打印机名称,并确保打印机已连接到…上午同时说,网络打印机打印不了,于是首先看一下打印服务器IP是不是给换了,结果没换。接着尝试重新添加一

    2021年12月22日
    78
  • asp.net 跳转页面[通俗易懂]

    asp.net 跳转页面[通俗易懂]①response.redirect这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护。但速度慢是其最大缺陷!redirect跳转机制:首先是发送一个http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端。需要注意的是跳转后内部空间保存的所有数据信息将会

    2022年7月20日
    13
  • 建立排序二叉树并中序遍历

    建立排序二叉树并中序遍历分析:中序遍历也叫中根遍历,顾名思义是把根节点放在中间来遍历,其遍历顺序为左子节点–>根节点–>右子节点。方法一:#includeusingnamespacestd;structnode//二叉树结点结构{intdata;node*left;//右子树结点指针n

    2022年7月25日
    4
  • 反射型XSS漏洞

    反射型XSS漏洞实验项目反射型XSS实验综合性实验2020年10月22日一、实验综述1.实验目的及要求(1)什么是XSSXSS,全称跨站脚本,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。(2)XSS分成两类:一类是来自内部的,主要指的是利用程序自身的漏洞,构造跨站语句。另一类则是来自外部的***,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要一个站点,我们自己构造一个有跨站漏洞的网页…

    2022年6月13日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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