一、车载网络概述

1.1 车载网络起源及CAN诞生条件

  • 二十世纪九十年代前,传统汽车的电器系统中各个模块之间采用点对点的通信方式,造成了庞大的布线系统,加之汽车近年来电子化、智能化趋势,独立运行的ECU足以实现电子功能。但工程师们很快就意识到,ECU彼此协调工作可以极大地增强车辆功能。
  • 最初,ECU之间数据交换是以传统方式实现的,即为每一个传输信号分配一个物理通信通道,既布线规模大,又造成了数据交换、节点协助困难,因此解决这一难题的方法是通过单个通信通道(总线)进行串行位数据交换。
  • CAN具有数据传输非常可靠的特点,可以满足应用领域的实时要求。

1.1.1 ECU

ECU(electronic control unit)电子控制单元,简单理解就是汽车里控制某个具体功能的模块。常见的ECU比如:ABS(防抱死系统)、EMS(引擎管理系统)、电子防盗系统、自动空调等。各个ECU直接通过车载网络进行通信。

1.1.2 CAN总线概述

  • CAN(controller area network)控制器局域网络,最初CAN总线由德国Bosch(博世)公司设计,现在世界上几乎所有汽车制造商都在使用。

  • CAN发展简史

    1. 1983年,德国Bosch公司开发设计了CAN总线协议。
    2. 1987年,第一块CAN控制器芯片有Intel设计成功。
    3. 1991年,CAN2.0发布(A标准格式+B扩展格式,标准CAN 主要发布扩展帧来解决标准帧仲裁ID位数不够的问题)
    4. 1993年,CAN成为ISO标准,分ISO 11898高速应用和ISO 11519低速应用。
    5. 2012-2015年,CAN-FD发布。

二、CAN标准

CAN协议仅包括数据链路层和物理层。从下往上:

  1. CIA DS-102规定了CAN总线接头(推荐sub-D9,未强制使用)
  2. ISO 11898-3、ISO 11898-2区别于低速/高速CAN,对速率有要求。高速(如电机等)用ISO 11898-2(最高1M/S);低速(如雨刮等)用ISO 11898-3(125k/s)。
  3. ISO 11898-1对应controller控制器

边界条件

  1. 长度40米
  2. 速率最大1M/s
  3. 网络末端要有终端电阻(防止高频反射)
  4. 根据收发器负载能力挂载节点

CAN网络示意图:
对应ISO11898协议去看

物理构成:

host主机(人控制的部分)——CAN控制器——CAN收发器

控制器根据需要接收message。根据条件,有的需要携带对象存储器有的不需要(相当于收的信息多要加个内存,一般都有)。直接显示逻辑位(1/0)

收发器分为低速CAN和高速CAN收发器。收发器链接控制器和总线,如果总线上有很高的电平,只会破坏收发器而不会破坏到控制器(保护作用)

  • 低速CAN波特率0-125k/s,不需要终端电阻。看逻辑电平隐性1时是CAN_L比CAN_H要高5V,显性0时是CAN_H比CAN_L高2V左右。

  • 高速CAN波特率0-1M/s,要接一个120Ω的终端电阻。看逻辑电平隐性1时是CAN_L和CAN_H相同都是2.5V,压差为0;显性0时是CAN_H比CAN_L高2V。

  • 显性电平优先级高于隐性电平。当不同CAN节点同时发送显性和隐性总线电平时,CAN总线将呈现显性总线电平。只有当所有CAN节点都发送隐性电平时,CAN总线才呈现隐性总线电平。

三、CAN特性

3.1 双线差分信号

3.2 协议本身对节点数量无限制,ID决定报文优先级

多主方式工作,网络上任意一个节点均可以在任意时刻主动向网络上的其他节点发送信息,不分主从,方便灵活。广播式发送报文,各个节点可以同时接收。(为了保证报文正确性:发送前检测,发送中回读)

CAN中无“地址”概念,通过报文ID收发信息。广播——>单播/组播

优先级由报文ID确定,ID越小优先级越高(高位0覆盖1)

3.3 保证系统数据一致性

CAN提供了一套复杂的错误检测与错误处理机制,比如CRC检测、接口的抗电磁干扰能力、错误报文的自动重发、临时错误的恢复以及永久错误的关闭。

3.4 编码方式:NRZ+位填充

NRZ(Non return zero):不归零制,与曼彻斯特编码相比无跳变但是可携带更多信息,位填充解决了长时间无跳变易产生误差的问题。

位填充:五个相同电平跳变一次。(填充位置和帧结构有关,下节说明)

3.5 CSMA/CA协议支持(很重要)

3.5.1 CSMA/CA协议发展

CSMA/CA,(Carrier Sense Multiple Access with Collision Avoid),即带有 冲突避免 的 载波侦听 多路访问。

是一种数据传输时避免各站点之间数据传输冲突的算法,其特点是发送包的同时不能检测到信道上有无冲突,只能尽量“避免”。

CS:载波侦听,发送前听信道上有无报文在发送,有的话就等待。

MA:多路访问,允许多个节点同时向总线收发信息。

CA:冲突避免,这里主要通过“非破坏性仲裁机制”完成,后一节讲帧结构会详细讲解。

  • 发展
    纯ALOHA——时隙ALOHA——CSMA/CA

    1. 纯ALOHA:发前不检测,长时间未收到确认帧认为信道有冲突,随机退避等待后重发,直至收到确认帧发送成功。问题:容易一直冲突,信道吞吐量低。

    2. 时隙ALOHA:把各个节点在时间上同步起来,并把时间化成一段段等长时隙slot,规定在每个时隙开始时才能发送报文(发送前先不确认是否有节点同时正在发送,所以先缓存一个周期时隙再发送)当发送碰撞时策略不变(随机退避)。理论上效率翻倍。

    3. CSMA:相比就只多了个对信道的载波侦听装置,其余策略基本不变。

  • 三种CSMA

    1. 1-坚持CSMA:信道空闲就发送,忙则一直等待但一直监听信道,冲突随机退避。(产生冲突可能性大)

    2. 非坚持CSMA:信道空闲就发送,忙则放弃,随机退避后再侦听信道。(降低冲突发送概率,但是会增加平均时延)

    3. p-CSMA:如果信道空闲,会有P的概率发送报文,同时有(1-P)的概率在下一个时隙发送,如果下一个时隙信道仍然空闲,重复上述做法。(前两者的折中策略)

资料来源Vectoe官网:elearning.vector.com

【CAN总线学习01】CAN网络概述相关推荐

  1. 【设计模式学习01】设计模式概述,UML图,软件设计原则

    文章目录 1. 设计模式概述 1.1 软件设计模式的产生背景 1.2 软件设计模式的概念 1.3 学习设计模式的必要性 1.4 设计模式分类 2. UML图 2.1 类图概述 2.2 类图的作用 2. ...

  2. qspi AHB总线学习 - 01

    经过几天的学习发现如果不了解AHB总线有些知识get不到,下面是转 qixin_william的博客 http://blog.163.com/qixin_william/blog/static/240 ...

  3. 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow)

    图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow) 文章目录 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网 ...

  4. Docker 学习4 Docker容器虚拟化网络概述

    一.docker 虚拟化网络概述 1.OVS: OpenVSwitch,不仅能模拟二层网络,还能模拟三层网络,或者VLAN,VXLAN,流控 SDN软件定义网络技术等. 2.overlay netwo ...

  5. 计算机编码二进制0001,二进制学习01(二进制,进制运算,数据宽度,无符号位有符号位编码规则)...

    二进制学习01 进制 一.二进制简介 1)什么是二进制? 2)二进制的简写形式 二.进制运算 1)八进制运算表 (1) 加法运算表 (2)乘法运算表 (3)八进制简单运算题 三.数据宽度 1)什么是数 ...

  6. 【2017cs231n】课程笔记01:计算机视觉概述及历史背景

    [2017cs231n]课程笔记01:计算机视觉概述及历史背景 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.c ...

  7. 黑马程序员_java自学学习笔记(八)----网络编程

    黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...

  8. NLP深度学习:近期趋势概述

    NLP&深度学习:近期趋势概述 https://www.cnblogs.com/DicksonJYL/p/9686204.html 摘要:当NLP遇上深度学习,到底发生了什么样的变化呢? 在最 ...

  9. 【深度学习】孪生网络(Siamese Network)的模式和训练过程

    [深度学习]孪生网络(Siamese Network)的模式和训练过程 文章目录 1 概述 2 Siamese network 孪生神经网络 3 孪生神经网络和伪孪生神经网络分别适用于什么场景呢? 4 ...

  10. IOS学习笔记03---C语言概述

    IOS学习笔记03---C语言概述 0 3.C语言1-C语言概述         qq交流群:创梦技术交流群:251572072                        创梦网络赚钱群:2483 ...

最新文章

  1. AI领域「听风者」:声纹识别5大核心知识点!
  2. Django笔记(一)
  3. Python高效编程技巧
  4. XSLT简单教程--XSLT的实例
  5. wordpress archive.php,wordpress分类目录模板(archive.php)制作
  6. Robots.txt 协议详解及使用说明
  7. linux下修改当前目录下图像文件并删除
  8. C++中acculumate函数使用
  9. JDBC:深入理解PreparedStatement和Statement
  10. VNPY3.0 量化交易软件开源代码-探索更真实的量化交易世界,
  11. linux修复windows,Linux十大妙用:充当Windows修复工具
  12. vs中资源文件和外部依赖项是什么意思?
  13. a标签在微信iOS版本的解析没有问题,但是在安卓版就解析不出来
  14. 通俗理解LDA主题模型(转)
  15. Linux系统编程-进程概念、进程管理、信号处理
  16. 老外谈社交媒体:2015社交平台最新运营技巧
  17. zabbix配置邮件和微信部署
  18. 长处比短板更容易困住你,读《能力陷阱》有感
  19. 快手2019秋季校园招聘算法笔试A卷编程题 - 题解
  20. 软件测试的五个目的,你知道几个?

热门文章

  1. C# BitConverterExt 对BitConverter的GetBytes 方法扩展
  2. 机器学习技法-01-5-Reasons behind Large-Margin Hyperplane
  3. iOS第三方支付集成-支付宝支付
  4. 参考文献标号字体_毕业论文参考文献格式字体
  5. C#/VB.NET 读取条码类型及条码在图片中的坐标位置
  6. 如何调整图片分辨率大小(适用于电脑/手机)
  7. JS-SDK使用权限签名算法
  8. python元类 orm_Python3 元类与ORM
  9. 到底该如何看待“东数西算”?
  10. N元语言模型的解码算法