首页 > 其他分享 >CAN笔记

CAN笔记

时间:2023-05-28 15:44:05浏览次数:61  
标签:CANFD 笔记 CRC 经典 速率 波特率 数据

一、为什么需要总线

1、人类需要交换信息的时候可以通过语言、文字,机器、电器设备之间需要交流该如何呢?是的需要一门他们能够读懂的语言,那就是通信协议,这也是在最早的汽车上都是使用了大量的线束,后来慢慢的通过各类的总线进行信息的交换。

2、人类的交流手段:文字、语言、动作 -> 视频、书信

3、ECU的交流手段:线束、电平 -> 各类总线(CAN、LIN、Ethernet、MOST等等)

二、什么是CAN总线

CAN全称Controller Area Network;是二十世纪八十年代初德国Bosch(博世)公司为解决现代汽车中众多电控单元(ECU)之间的数据交换而开发的一种串行通信协议。

三、为什么是CAN总线

1、人类需要交换信息的时候可以通过语言、文字,机器、电器设备之间需要交流该如何呢?是的需要一门他们能够读懂的语言,那就是通信协议,这也是在最早的汽车上都是使用了大量的线束,后来慢慢的通过各类的总线进行信息的交换。
2、人类的交流手段:文字、语言、动作 -> 视频、书信
3、ECU的交流手段:线束、电平 -> 各类总线(CAN、LIN、Ethernet、MOST等等)
低廉的价格(相较于硬线布置节省了无法估计的成本)+ 技术可复用性

四、当前的车用总线

    1、CAN 
    泛指经典CAN和CANFD协议,是当前车上使用最多的协议。

    2、LIN
    主要用在车窗、车门、灯光等时效性要求不是特别高的功能上,主打的就是一个便宜。

    3、FlexRay 
    弥补CAN带宽不足的问题(是CAN带宽的20倍),主要用在车身控制、动力总成、辅助驾驶的领域。

    4、MOST
    Media、Oriented、System、Transport(媒体、定向、系统、传输),这也是MOST总线名称的由来。MOST传输协议由分割成帧的数据块组成,每一帧包含流数据、分组数据和控制数据。

五、CAN和CANFD区别

1、保留位
经典CAN帧中的保留为在CANFD中变成了区别经典CAN和CANFD的标识位;

    0:显性值,表示经典CAN

    1:隐性值,表示CANFD(在使用CAPL组CANFD包时,一般需要将FDF和BRS同时为1,因为CANFD一般来说不会将数据段速率设置与起始段和控制段一致,那样就没必要使用CANFD了,直接使用经典CAN更好,当然我们不排除特殊情况)

2、FDF-FD格式
该位的新名称是FDF (Flexible Data Rate Format,FD格式),它为传输更大的有效载荷创造了可能。实际的数据场长度以及是否切换为更快传输速率取决于FDF位的后面部分。

六、高速传输机制

1、位速率切换 (Bit Rate Switch)
CAN FD的保留位之后接位速率切换 (BRS) 位,控制数据段的速率与控制段的差异:

    0:数据段与控制段速率一样

    1:数据段与控制段速率不同,数据段一般使用更高的速率。

    因此CANFD中,我们一般都会配置2个波特率,一个用于控制段和校验段的速率,一个用于数据段的速率,分开进行使用。

2、波特率5MBit/s
假如波特率2定义为5 Mbit/s(数据段速率为5Mbit/s),相当于5 Mbit/s,位及其物理表示形式(即电压电平)的持续时间相同。该数值并不是凭空得出的,因为经实验室的实验证明,经典CAN所用的大多数收发器也能够处理5 Mbit/s的速率。如果收发器性能允许,还可支持更高的传输速率。真实情况下,具体的传输速率取决于实际车辆所处的复杂电磁环境影响。
3、BRS和CRC界定符之间采用更高的波特率
从波特率1到波特率2的转换发生在BRS的采样点,从波特率2回到波特率1的转换发生在应答位之前的CRC界定符的采样点,为了使接收方即使在传输速率很高的情况下也可以与发送方完美同步,需要立即执行第二次硬同步。

七、CANFD数据场

1、经典CAN中DLC:9种可能的长度
无论是在经典CAN还是在CANFD中,数据长度段位置(DLC)均由4个位构成,共有16种可能存在的值,不过经典CAN仅使用了其中的值0 - 8,9 - 15未使用;即经典CAN的长度最大为8 byte,最小为0 byte。
2、CANFD中DLC:16种可能的长度
上面说了,经典CAN中使用数据长度值0 - 8,而DLC中其余的7个值9 - 15未使用,这时候聪明的朋友会发现CANFD最大为64byte的长度数据,而且CANFD又是兼容经典CAN的,因此就出现了在数据长度小于等于8 byte的时候,就是DLC的实际长度0 - 8;当数据长度大于8的时候,字节和DLC将不再是线性对应了,使用CANFD中专用的对应关系,

八、指示位错误

1、错误状态指示位 (Error State Indicator)
错误状态指示位(ESI)在位速率切换 (BRS)位之后。

    0:ESI显性,ECU处于主动错误状态

    1:ESI隐性,ECU处于被动错误状态

    该位以更加清晰的方式跟踪错误帧,并使网络管理更加简化。网络节点的主动错误和被动错误状态会在整个网络上广播。

九、安全性校验

1、更多的数据就需要更长的DLC
对比经典CAN来说,一帧CANFD报文中所使用的位将远远大于它,并且在数据段传输速率一般也会更快,显然这样也就导致出现错误的可能性也会增加;为了解决这个问题,就需要在CANFD报文帧中增加校验位的冗余,否则接收方无法鉴定数据是否出现错误。因此在数据场数据不超过16 byte的CANFD报文就由17个CRC校验位来保护,当数据超过16 byte,则需要CRC校验位增加到21个位。它们分别是CRC17(0x3685B)和CRC21(0x302899).

2、CRC校验机制
a、CAN的位填充
经典CAN报文中,从帧起始(SOF)一直到校验场末尾(CRC)都有可能添加填充位,规则就是每5个相同的位之后插入一个相反的位,这些位不计入校验CRC场中。
b、CAN FD的位填充
而在CAN FD中,从帧起始 (SOF) 到数据场末尾添加填充位。在计算校验场时,会将这些填充位也考虑进去。填充位计数器 (对7取模)和奇偶校验位在中紧接在数据场后。
c、CAN FD CRC场中的其他位填充
并且在CANFD中,CRC场本身也会加入填充位,并且频率相较于其他数据段会更高;规则是:

  1. CRC场始终以与前面的位相反的填充位开头。在接下来的每四个位 (无论是否相同)之后,插入与前一位相反的填充位。
  2. 在CRC之后,不再插入填充位,这一点与经典CAN中相同,

标签:CANFD,笔记,CRC,经典,速率,波特率,数据
From: https://www.cnblogs.com/Ye-Wei/p/17438321.html

相关文章

  • 用CRU给笔记本显示器超频刷新率
    https://www.monitortests.com/forum/Thread-Custom-Resolution-Utility-CRU1、下载下来解压后得到4个文件,双击CRU 2、点击Add3、在RefreshRate后面改超频刷新率,然后点OK 4、回到4个文件那里,双击restart64(你是32位系统就双击restart)5、等电脑闪屏后,重启电脑。(不重启......
  • HCIP学习笔记-云安全服务规划-6
    1.云上安全设计以及华为云安全体系1.1为什么要关注云上安全CSA:CloudSecurityAlliance,云安全联盟1.2云上企业安全诉求1.3五大安全维度应对云上安全诉求1.4华为云安全服务全景2.工作负载安全2.1企业主机安全HSS管理控制台是可视化的管理平台,便于用户集中下发配置信息,查看在同......
  • babylon.js 学习笔记(6)
    接上回继续,今天继续捣腾动画,上一节咱们让汽车的轮子动了起来,回顾一下核心代码://轮子转动constwheelAnimation=(scene,wheels)=>{//定义一个动画,每秒30帧,绕y轴转动constanimWheel=newBABYLON.Animation("wheelAnimation","rotation.y",30,BABYLO......
  • 「外出学习」数论学习笔记
    取模\[(1)\quad5\div3=1\cdots2\\a=b\cdotc+d\\(2)\quada\divb=c\cdotsd\\b>d\ge0\\(3)\quada,b,c=a/b,d=a\bmodb\\(4)\quad(a+b)\bmodc=[a\bmodc+b\bmodc]\bmodc\\a=x\cdot......
  • FFT学习笔记
    fft.1单位根的性质\[1.w^{dk}_{dN}=w^k_N\]\[2.\frac{1}{\omega_k}=\omega_k^{-1}=e^{-\frac{2\pii}{k}}=\cos\left(\frac{2\pi}{k}\right)+i\cdot\sin\left(-\frac{2\pi}{k}\right)\]递归求解\(F[\)\(]\)=\(1\)\(2\)\(3\)\(4\)\(5\)......
  • C#学习笔记 -- 匿名方法、Lambda表达式
    匿名方法前面的情况是方法被某个结构或者类的成员,可以调用方法如果方法只调用一次,用来实例化委托,在这种情况下,除了创建委托的语法需要,没有必要创建独立的具名方法,使用匿名方法即可匿名方法是实例化委托时内联声明的方法.classProgram{  delegatei......
  • python自学笔记
    变量类型:整型int,字符串str,浮点型float;算术运算:+、-、*、/、%、**(乘方)、//(整除);逻辑运算:not、and、or;布尔类型:True、False;比较运算:>、>=、<、<=、==、!=;变量命名规则:字母+数字+下划线、区分大小写、数字不开头、不能用空格、不能用保留字;输入input()、输出print();字符串拼接:prin......
  • html 学习笔记
    目录基础知识斜体强调行内容着重强调空元素插入图片的示例添加超链接属性布尔属性禁用表单输入剖析HTML文档头(head)在搜索引擎中description的使用在头里引用CSS文件在头里引用JavaScript文件创建超链接使用title属性添加支持信息这里有统一资源定位符(URL)与路径(path)快速入......
  • 数学巧思笔记(证明+概念组合)
    利用夹逼准则+三角函数公式,求证$\lim\limits_{x\to0}\frac{sinx→三角形}{x→角度}=1$......
  • 读书笔记
    读书笔记种树最好的时间是十年前,其次是现在简介:我决定从今天开始记录我读书的过程(也可能是从几天前),记录我读的书,书的相关信息,我的读书方法,一些好句,我的心得。三分读书法:这是我从up主阿鱼爱学习本人学来的技巧,我认为这是一种很好的读书笔记的形式,能让我们在阅读时保持清......