本文首发自微信公众号“汽车技术馆”。

在之前的一篇文章中我们给大家分享了LIN通讯的一些信息,不知道大家是否感兴趣,因为其实在整车的应用中LIN应用的范围不是特别广,只是在一些对实时性要求不是很高,相对来说比较小一点的控制器才会使用,而且这些小的零部件不太会被大家所关注,不过也不要紧,有用到最好,用不到就当拓展知识了。相比之下,CAN通讯在整车的应用还是非常广泛的,并且这个概念为大家所熟知,今天我们就和大家分享一下关于CAN通讯的一些信息。

什么是CAN通讯

CAN是Control Area Network,直译就是控制局域网,其实说白了和所有的网络都是类似的,大家应该知道我们经常使用的互联网,早期的时候在还没有出现无线网络形式之前都是通过网线连接的,而那时候的因特网是必须要有网线接入才可以访问,而如果你不需要访问外部的网络,只想在一个房间内的几台电脑之间建立网络的话,是可以建立局域网的,其形式如下图所示:

建立好局域网之后,各个终端之间就可以互相访问了,简单的说就是可以实现信息的交互了,信息之间的传递是通过网线来完成的。
而CAN通讯的出现也是借用网络的概念,所以它也是成为局域网,只不过它的局域网和我们电脑通常使用的局域网略有不同,CAN的信号传递介质是一对双绞线

建立起来的CAN网络其实是和前面提到的概念是类似的

各个节点都连接到一条CAN总线上,然后通过这一条总线实现信息的交互。

CAN的信号结构

还是那句老话,只要是通讯就需要有结构,CAN通讯也不例外,CAN的通讯和LIN其实都是基于帧的,CAN通讯的帧结构如下

这里需要说明一下,CAN的帧分为两种:标准帧和扩展帧。这也分别对应着两个不同的协议:CAN2.0A和CAN2.0B,由上图的结构可以看出,扩展帧和标准帧的区别在于ID的长度,标准帧是11位的长度,而扩展帧是29位的长度,具体的情况我们在后边介绍。
下面我们逐一地说明一下帧结构的组成部分:

01帧起始

帧起始是一个显性位电平,当总线空闲时,发送节点发送一个显性电平,所有的接收节点同步于该帧起始位。这里稍微补充一下,在CAN通讯中,低电平代表的是显性电平,高电平代表的是隐性电平,所以,一个总线显性电平的信号如下:

这一个显性电平的发出也代表着一帧信号的开始。

02仲裁段

由一开始我们分享给大家的帧结构可以看出,对于标准帧来说,仲裁段包含的部分是:ID和RTR,而对于扩展帧,仲裁段包含的部分是:ID、SRR、IDE和RTR

为什么这一段称为仲裁段呢?这里我们就要说一下CAN通讯的仲裁机制。之前对CAN通讯有所了解的朋友应该知道,CAN通讯在收发数据的时候是没有像LIN那样的调度机制的,理论上来说,任何一个CAN节点在任何一个时刻都可以向总线发送数据,那么如果多个节点同时向总线发送数据就需要对信号进行裁决,所谓的裁决就是决定出来谁的可以发,谁的不可以发,因为只有一条总线,所以同一个时刻只能发送一帧消息。

在进行裁决的时候,依据就是信号的ID,总线会对ID进行逐位的比较,比较的过程中显性电平胜出,隐形电平退出发送。举例如下:

通过两次裁决之后,A节点最终获得了信息的发送权,B和C节点则在裁决过程中逐一地退出发送模式,这就是CAN信息的仲裁,所以这一段称之为仲裁段。从这里大家应该也可以看出,其实CAN的ID就决定了这帧CAN消息发送的优先级,当然这也是在整车的网路架构开发时根据不同节点的应用定义出的优先级,然后再分配相应的ID。

✎ 小贴士

CAN的ID的数值越小,其优先级越高

仲裁机制对于标准帧和扩展帧是一样的

仲裁段中除了ID外,还有RTR,这个位是为了区分数据帧和远程帧的,当RTR为显性电平时代表的是数据帧,当RTR为隐形电平时代表的是远程帧。既然RTR也在仲裁段内,那么就会和消息的优先级有关系,如果在一帧消息内,ID都是完全一样的,到了RTR位的时候,数据帧是显性的,显然就击败了远程帧,所以同样ID下,数据帧的优先级高于远程帧,其仲裁过程如下:

接下来我们再看IDE这个标志位,这个位存在于标准帧的控制段,而存在于扩展帧的仲裁段,这个位在两个帧当中的相对位置是一样的,都是第十三位,所以在一个网络中如果既存在标准帧又存在扩展帧,而且两个帧类型的ID是一样的,那么标准数据帧的优先级是高于扩展数据帧的,因为仲裁到第十三位时,标准帧的IDE是显性电平,而扩展帧的IDE是隐性电平,所以标准数据位胜出。
在扩展帧当中还有一个SRR位,这个是在同样的位置替代远程请求帧的RTR的。

03控制段

两种类型的帧控制段的长度都是六位,在标准帧中的控制段包含IDE,保留位r0以及数据长度DLC;在扩展帧中的控制段包含保留位r0,r1以及数据长度DLC。

标准帧中包含的IDE在上一个章节中已经提到了,这里不再赘述。
保留位暂时没有特别的用途,所以一般都用隐性位填充。DLC代表的就是下一个部分数据段的长度,从编码的规则上来说是BCD编码,可以表示的长度范围是0到8,根据具体的应用长度定义即可。

04数据段

这一块没有什么需要特别说明的了,根据需要传输的数据长度传输相应的字节即可。

每次传输最多只有八个字节,至于多帧传输的问题,我们在后边的文章中再给大家介绍说明。

05CRC段

CRC中文的意思是循环冗余校验,其目的就是要对这一帧信号中前面的部分进行校验,以保证数据传输的正确性,校验的部分包括:帧起始、仲裁段、控制段以及数据段。

发送节点在发送数据时会把计算的校验值写到CRC段,接收节点在接收数据时,会在接收节点以同样的CRC校验方式进行计算,然后比对自己的计算结果和接收的计算结果,以判断数据在传输的过程中是否出现了位丢失或者其它位错误的情况,是一种通讯安全的机制。和其他的累加和校验什么的都是类似的,只是CRC校验的原理稍微复杂一点,在校验的安全性上更高。
至于其校验的原理,不在本文的内容范畴,如果大家有兴趣的话,我们可以专门写一篇关于校验机制的文章,分享给大家。

06ACK段

这一段和CRC是相关的,上一段进行了CRC校验的比对,如果CRC校验结果没有问题的话,接收节点会在总线发送一个显性电平。

最终总线的电平状态是显性电平。

07帧结束

和一开始的帧起始相呼应,帧结束是由七个连续的隐性电平组成。

在各种类型的CAN帧中,不管是数据帧还是远程帧,数据帧还是扩展帧都是包含相同的帧起始和帧结束。

CAN通讯的一些特点

它是一种多主总线,即每个节点机均可成为主机,且节点机之间也可进行通信。

通信介质可以是双绞线,通信速率最高可达1mb/s。

CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余校验、优先级仲裁等项工作。

数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而倮证了通信的实时性。

CAN协议采用crc检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN总线所具有的卓越性能、极高的可靠性和独特设计,特别适合工业设备测控单元互连。因此备受工业界的重视,并已公认为最有前途的现场总线之一。

今天主要给大家分享了CAN的一些基本概念,以及CAN帧的结构,为理解CAN通讯机制打下一个基础,我们在后续的文章中再为大家介绍CAN通讯的报错机制,CAN通讯在诊断上的应用等等,如果有兴趣的话就关注我们吧!

LIN总线增强型校验_相比于LIN通讯,大家可能对CAN更感兴趣相关推荐

  1. LIN总线增强型校验_雷洪钧:汽车总线及车载网技术概述

    点击蓝字,一键关注 走进<公共交通资讯>,及时掌握公交领域的行业政策.管理理论.科技信息.专家观点和先进经验... ... 张晓亮:我国城市公共交通智能化发展情况分析 王竹:浅谈公交驾驶员 ...

  2. LIN总线协议详解7(LIN帧收发的硬件实现)

    帧收发的硬件实现 目录 帧收发的硬件实现 一.组成 二.协议控制器 1.协议控制器介绍 2.实现方法 三.总线收发器 1.实现方案 2.采用IC厂家的集成方案 四.LIN 总线 五.时钟源 六.EMI ...

  3. LIN总线协议详解2(LIN总线报文帧结构)

    目录 一.LIN总线报文帧结构 (Message Frame ) 1.报文整体机构 2.同步间隔段(Break Field) 3.同步段(Sync Byte Field) 4.受保护 ID 段(Pro ...

  4. LIN总线协议详解10(LIN的API)

    目录 LIN的API 1.什么是API 2.LIN的API ​3.核心API ​4.传输层API 5.配置与识别API 6.注意事项 6.1.兼容性 6.2.开发工具 ​7.API使用示例 7.1从机 ...

  5. lin通讯从节点同步间隔场_低成本总线技术——LIN总线协议规范介绍

    专注原创汽车技术干货分享,小编求关注哦! 在前面一篇文章中"野百合也有春天"--低成本总线LIN介绍介绍了LIN总线的发展历程及其基本概念.现在这篇文章主要介绍LIN总线协议规范. ...

  6. lin通讯从节点同步间隔场_基于LIN总线的车身控制系统设计

    http://www.eepw.com.cn/article/262205.htm LIN(Local Interconnect Network)是一种低成本的串行通讯网络,用于实现汽车中的分布式电子 ...

  7. lin通讯从节点同步间隔场_Freescale MM908E625的LIN总线

    0  引言 LIN(Local Interconnect Network,本地互连网)由汽车厂商专为汽车工业开发(飞思卡尔半导体是在LIN原始协会成员中唯一的半导体器件供应商),是"一主(节 ...

  8. LIN总线uart形式实现lin通信

    LIN是Local Interconnect Network的缩写,是基于UART/SCI(Universal Asynchronous Receiver-Transmitter/Serial Com ...

  9. 从应用角度了解下LIN总线

    导读 本文将介绍LIN(Local Interconnect Network,本地连接网络)协议的基本知识,包括LIN总线和CAN总线的对比.LIN总线的应用案例.LIN是如何运行的以及LIN中的6种 ...

最新文章

  1. python+flask+vue开发(1)--虚拟环境创建
  2. easyui_动态添加隐藏toolbar按钮
  3. 渲染管道(1)整体流程
  4. VScode 1.4新版功能
  5. Entity Framework ---初见
  6. 1.12 深层循环神经网络
  7. HDU-4578 Transformation 线段树(两种方法)
  8. myisam为什么比innodb查询快_mysql存储引擎之MyISAM 和 InnoDB的比较
  9. mysql 6.2 安装教程_CentOS 6.2 安装 MySQL 5.7.28的教程(mysql 笔记)
  10. opencv数字图像处理(1) - 灰度变换函数
  11. 拓端tecdat|R语言异方差回归模型建模:用误差方差解释异方差
  12. 安卓桌面软件哪个好_有哪些好用的手机记事本软件?安卓手机便签哪个好用?
  13. vue3 axios 封装
  14. 程序员简历项目经验怎么写?
  15. 数控dda法直线插补程序c语言,DDA法直线插补
  16. ssh2连接linux超时,解决SSH会话连接超时问题
  17. svn绿色符号消失的解决办法
  18. HTML 打印table分页
  19. java zip 读取_java读取zip (含压缩包内的文件)
  20. ModuleNotFoundError: No module named ‘pip‘;ERROR: Could not find a version that satisfies the requir

热门文章

  1. Android仿学习强国填空题考试界面
  2. 【验证狼人杀三行定律】
  3. 使用dd命令切割文件
  4. 检测图片篡改困难?快来试试这款黑科技
  5. Cisco路由器的硬件结构、重要存储设备Flash和NVRAM
  6. Coder HDU - 4288
  7. 一键修改 PPT 所有页面的字体设置
  8. 为什么说串行比并行快
  9. bootstrap v4 toast轻提示正确用法
  10. (动归三剑客)打家劫舍 (动归三剑客)