首页 > 其他分享 >CANFD知识点整理

CANFD知识点整理

时间:2024-06-20 20:31:39浏览次数:18  
标签:知识点 填充 CRC 总线 CANFD 传输 FD 整理

CAN知识点整理

概述

CANFD提出

引入CAN总线的数十年中,汽车嵌入式系统的结构发生了深远的变化,最明显的变化是数量:如果在引入CAN时只需传输数百个信号,那么今天这个数字已达到五位数。

数据流量的增加导致CAN总线上的总线负载率越来越高。除了对带宽的需求在不断增加,对确定性系统行为的需求也在不断增长,这刺激了新总线系统的开发。因此,出于信息娱乐目的,开发了带宽高达150 Mbit/s的MOST总线。确定性FlexRay总线可提供10Mbit/s的带宽,用于驾驶员辅助功能。在带宽范围的低端,引入了LIN作为低成本解决方案,用于完成传感器-执行器-区域中的任务。这些新的总线系统覆盖了各个领域,但CAN仍然是主流的汽车总线系统。

只有极少数的CAN需要替换为传输速率更快的总线,例如FlexRay。但没有替换的主要原因是硬件成本较高以及将系统转化为新技术的开发工作巨大。使用更多路CAN总线通常可以规避CAN带宽不足,但这需要网关在总线之间传输数据。

CAN带宽的限制因素源于自身的一个核心属性:在报文传输的特定阶段,多个网络节点可能同时处于传输模式。仲裁阶段传输开始时可能就是这种情况,并且在报文末尾的应答场中也是始终如此。这意味着一个位的传输时间不得短于其电压电平从总线一端的节点传播到另一端的节点再返回所需的时间。例如:在长度为40米的CAN总线上,若要满足一个位所需的传输时间,最大传输速率应约为1 Mbit/s。

但在CAN报文仲裁阶段和应答场之间,仅允许一个发送节点。因此,这一部分对位时间的最小持续时间没有限制。那么在博世的工程师看来,如果在CAN报文这一部分提高传输速率会怎样?只需在两个不同的传输速率之间切换:在CAN报文的开头和末尾切换为慢速,在中间切换为快速。这就是CAN FD的基本概念。

CANFD引入后的问题

快地传输CAN FD帧的有效负载可缩短传输时间,即总线负载率降低。另一方面,可以同时传输更长的数据场,即只需使用一个CAN FD帧。例如,如果使用CAN FD以五倍的速度传输数据场,假设该帧包含的数据比普通CAN帧多五倍,则两者用时大致相同。因此,CAN FD帧可以传输五倍于CAN帧的信息,且不会增加总线负载率。

引入CAN FD将为开发过程带来许多好处:

  • 总线负载率问题将大大减少
  • 不再需要使用多条CAN总线
  • 即使未能消除对网关的需求,也会大大减少
  • 由于每一帧可以承担更多的有效负载,因此需要的数据段更少
  • 使用更少的帧,获得更理想的有效负载与开销数据比

但为了确保CAN FD正常工作,需要新的CAN FD控制器。CAN FD控制器是向下兼容的,并且能够处理经典CAN (Classical CAN)。CAN总线上的ECU可以逐步替换为支持CAN FD的ECU。当然,只要有一个具有常规CAN控制器的ECU,就必须使用经典CAN。这会导致硬件成本上升。

此外,与经典CAN类似,CAN FD同样采用两种类型的数据帧格式:具有11位标识符的标准帧和具有29位标识符的扩展帧。这可确保对CAN FD进行部分调整后即可使用CANopen和SAE J1939等基于CAN的高层协议。另外,CANFD没有远程帧,因为远程帧没有数据场,谈不上数据场加速。

CANFD虽然对Classic CAN+LIN的汽车架构提出了很多挑战,比如更高的EMC要求,更昂贵的收发器,更复杂的数据交互形式(PDU)。但CANFD仍能荣登殿室的原因是:千万工程师多年以来的CAN经验与相关知识仍然有效,这背后是数不清的教训与鲜活又凋谢的生命,难以割舍。

CANFD机制

RRS代替RTR

由于没有用于CAN FD的远程帧,因此RTR位不是必需的,所以被始终呈显性的RRS(Remote Request Substitution,远程请求替代位)所取代。帧起始(SOF)、标识符和标识符扩展位(IDE)保持不变。此外,CAN FD帧末尾的应答位(ACK)、相应的界定符(DEL)、帧结束(EOF)以及帧间间隔场(ITM)仍与经典CAN帧相同。CANFD拓展帧仍使用RRS。

CAN FD相对于经典CAN在IDE位与应答位之间的部分进行了修改。

用于区分CANFD的FDF

经典CAN帧的保留位成为经典CAN帧和CAN FD帧的区别标识。如果是显性值0,则表示经典CAN帧。如果是隐性值1,则表示CAN FD帧。

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

这也是为什么传统CAN控制器无法识别CANFD帧的原因:不允许保留位显性。

速率切换BRS

CAN FD的保留位之后接位速率切换(BRS)位。当BRS位为显性时,波特率2等同于波特率1,因此不会加速传输。对于一条总线上的所有CAN FD控制器,必须统一配置数据场与非数据场的波特率。

从波特率1到波特率2的转换发生在BRS的采样点,从波特率2回到波特率1的转换发生在应答位之前的CRC界定符的采样点。为了使接收方即使在传输速率很高的情况下也可以与发送方完美同步,需要立即执行第二次硬同步。

错误状态指示位

错误状态指示位(ESI)在位速率切换(BRS)位之后。如果该位为显性,则表明ECU处于主动错误状态。如果该位为隐性,则表明ECU处于被动错误状态。

该位旨在以更加透明的方式跟踪错误,并简化网络管理。网络节点的主动错误和被动错误状态会在整个网络上传播。

DLC长度变化

在经典CAN的基础上,DLC中其余的七个值(即9到15)用于CAN FD。如果DLC > 8,DLC与字节数之间将不是线性对应的关系。

下表显示了DLC对CAN和CAN FD中数据场大小的不同含义:

更长的CRC

相较于经典CAN,CAN FD帧中出现位错误的可能性有所增加。之所以如此,一方面是因为高速段的位时间更短,另一方面是因为数据场中的位数更多。解决此问题需要在CAN FD帧中实现更大的冗余,否则,接收方无法检测到错误的可能性就会增加。数据场不超过16个字节的CAN FD帧将由17个CRC位保护。数据场超过16个字节时,对应的CRC为21个位。

两个生成多项式分别是CRC17的0x3685B,以及CRC21的0x302899。

Stuff Count填充计数规则:

格雷码计算:CRC区域之前的填充位数除以8,得到的余数(Stuff bit count modulo 8)进行格雷码计算得到的值(Bit0-2)
奇偶校验:通过格雷码计算后的值的奇偶校验(偶校验,Parity)

位填充的变化

在传统的CAN帧中,从帧起始(SOF)到校验场末尾(CRC)添加填充位。在每五个相同的位之后插入一个相反的位。这些填充位不计入校验场。

在CAN FD中,从帧起始(SOF)到数据场末尾添加填充位。在计算校验场时,会将这些填充位也考虑进去。填充位计数器(对7取模)和奇偶校验位在帧中紧接在数据场后。

CRC场本身也会被填充,且频率更高。以下是适用规则:CRC场始终以与前面的位相反的填充位开头。在接下来的每四个位(无论是否相同)之后,插入与前一位相反的填充位。

在CRC之后,不再插入填充位,这一点与经典CAN中相同。

更加容忍的ACK

CANFD的ACK应答位只有一位,但是有效应答可以传输2个位时间,即在ACK紧随的DEL界定位时间内接收到应答仍视为有效应答。

设计此机制的原因与在ACK前一位的DEL进行速率切换有一定关系,目的是为了减少传输延迟带来的错误。延迟的产生可以有很多种,速率切换延迟,物理传输延迟,片内处理延迟等。

第二采样点

 

标签:知识点,填充,CRC,总线,CANFD,传输,FD,整理
From: https://www.cnblogs.com/YiMo9929/p/18259478

相关文章

  • 计算机网络知识点汇总(二)
    计算机网络知识点汇总第1章计算机网络体系结构1.1计算机网络概述1.1.1计算机网络的概念​计算机网络是由若干个结点(node)和连接这些结点的链路(link)组成。网络中的结点可以是就三级、集线器、交换机、或者路由器等,网络之间通过路由器进行互联,构建成一个覆盖范围更......
  • CAN通信(五)(CANFD介绍)
    目录九、CANFD1.介绍2.特点3.帧结构(1)帧起始(2)仲裁段(3)控制段(4)数据段(5)CRC段(6)ACK段(7)帧结束 4.如何从传统的CAN升级到CANFD?5.总结其他CAN文章:九、CANFD1.介绍       CANFD(控制器局域网灵活数据速率)是经典CAN协议的高级版本,旨在满足现代汽车和工业应用的......
  • 初学者学习AI大模型必看指南,一文尽览大模型知识点!绝对干货!!!
    一、什么是大模型?当我们提及大模型时,通常指的是大语言模型(LargeLanguageModel,简称LLM),即文字问答模型,其典型代表便是OpenAI的GPT系列。然而,随着技术的日新月异,大模型已经不单单局限于自然语言处理(NaturalLanguageProcessing)领域的发光发热,而是逐渐渗透到了其他多个领域......
  • JavaScript基础部分知识点总结(Part3)
    函数的概念1.函数的概念在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。虽然for循环语句也能实现一些简单的重复操作,但是比较具有局限性,此时我们就可以使用JS中的函数。函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可......
  • 整理好了!2024年最常见 20 道设计模式面试题(五)
    上一篇地址:整理好了!2024年最常见20道设计模式面试题(四)-CSDN博客九、什么是命令模式?它如何帮助实现解耦?命令模式(CommandPattern)是一种行为设计模式,它将一个请求或操作封装为一个对象。这种模式的主要目的是将发起请求的对象与执行请求的对象解耦,从而让不同的请求、队列或者......
  • JavaScript基础部分知识点总结(Part2)
    初识JavaScript1.JavaScript是什么JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script是脚本的意思)脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来进行解释并执行现在也可以基于Node.js技术进行服务器端编程2.JavaScript的作用表单动态校......
  • 关于几种语言(c#,php,python,javascript)字符串的gzip压缩与解压的整理
    背景介绍因为一直在处理restfulAPI,给移动端提供的数据需要考虑流量问题,优先考虑就是压缩现有的字符串,然后再考虑业务逻辑方面的减少流量。鉴于找这些资料也花了不少时间,所以整理了这篇文章,留作纪念。参考网址PHP与C#的压缩与解压http://www.oschina.net/question/2265205_181......
  • IPython 使用技巧整理
    IPython使用技巧整理IPython是一种强大的交互式Pythonshell,提供了许多增强功能,适合数据科学、机器学习和科学计算等多个领域。以下是一些常用的IPython使用技巧。目录基础功能魔法命令扩展和插件与JupyterNotebook的集成调试与错误处理性能优化基础功能1.自动......
  • 【万字精讲】软件工程与项目管理知识点速通(简答,综合题向)
    软件工程与项目管理知识点速通(简答,综合题向)时间记录:24.61.为什么瀑布模型,原型模型,螺旋模型支持迭代开发?回答该问题,首先需要知道他们分别是什么(1)瀑布模型(WaterfallModel)瀑布模型传统上被认为是线性、顺序的开发模型,即各个阶段(需求、设计、实现、测试、部署、维护)按顺序......
  • 北航研究生《矩阵理论》期末复习整理与2024考题记录
    课件线性空间定义:交换律+结合律+零元素+负元素特殊的矩阵:对称矩阵:\(A=A^T\)正交矩阵:\(AA^T=I\)Hermite矩阵:\(A^H=A\),对角元素为实数,特征值为实数反(斜)Hermite矩阵:\(A^H=-A\),对角元素为纯虚数,特征值为纯虚数或者0酉矩阵:\(A^HA=I\),酉相似\(U^HAU=B\),酉相抵\(UA......