CANFD知识点整理

news/2024/9/27 23:29:04

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进行速率切换有一定关系,目的是为了减少传输延迟带来的错误。延迟的产生可以有很多种,速率切换延迟,物理传输延迟,片内处理延迟等。

第二采样点

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/47616.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

免费调用微信推送接口

注册测试公众号 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 扫码开通后,将会出现后台页面,拿到这四个值appIDappsecret接受消息者,扫码拿到 openId ,也就是接受者的id号template_id模板内容固定格式,演示的content是将要推送消息的key推送消息 第一…

NOI2019 Day1

NOI2019 Day1就准备这样面对你的 NOI 吗? 问题:对拍,极限数据,构造数据。不要老觉得过了大洋里就可以万事大吉跑路了。 自己觉得写不完的东西,一定不要上来就写。 读题。读题。读题。实在改不了就每题都先写个暴力验证题意。 学会放题。一个题实在想不明白就退而求其次。保…

霍格沃茨

11111 be convinced 被动。 深信 , 当时; overactive 过分积极。 过于天马行空,异想天开; 怪癖 quirk mortgage 按揭贷款 , 不足以陌生 scuttled off down 小碎步跑 ; 比喻; 最后奔向了古典学; 比喻最后的选择。2008 哈佛毕业典礼 flown academi…

当蓝牙键盘连不上电脑:一次意外的debug之旅

故事是真的,文章是 chatgpt写的,正文开始: 博主:大家好,今天我想和大家分享一个关于蓝牙键盘的小故事。有时候,即使是最简单的设备,也可能给我们带来意想不到的挑战。 读者:嗨,听起来挺有趣的。发生了什么事? 博主:最近,我换了台新电脑,我把旧电脑的东西都迁移过去…

Hive怎么调整优化Tez引擎的查询?在Tez上优化Hive查询的指南

在Tez上优化Hive查询无法采用一刀切的方法。查询性能取决于数据的大小、文件类型、查询设计和查询模式。在性能测试过程中,应评估和验证配置参数及任何SQL修改。建议在工作负载的性能测试过程中一次只进行一项更改,并最好在开发环境中评估调优更改的影响,然后再在生产环境中…

【代码】--库函数学习 ftp通信 相关

1. FTP介绍(1)主动模式(PORT): 服务器主动去连接客户端的数据端口(2)被动模式(PASV): 客户端主动去连接服务器的数据端口ftp客户端通信流程(编程流程)如下:1. 客户端用账号、密码进行登录。 2. 提交主动模式还是被动模式。 3. 如果是被动模式,需要去连接服务器开…

300PLC连接Modbus转Profibus网关与阀岛modbusRTU通讯

300PLC通过Modbus转Profibus网关(XD-MDPB100)实现与阀岛ModbusRTU通讯。300PLC作为常见的控制器设备,在与阀岛Modbus RTU通讯时,通常需要借助Modbus转Profibus网关(XD-MDPB100)来实现连接和数据交换。PLC通过Modbus转Profibus网关(XD-MDPB100)与阀岛Modbus RTU通讯是比…

Windows更新报错 0xc1900101 0x30018 解决方案

卸载自带的电脑管家(比如华硕、联想、华为等)通过禁用第三方驱动启动Windows(win+r 运行 msconfig),然后禁用掉第三方服务,重启系统。检查更新,应该问题就能解决记得重新运行msconfig,把禁用的驱动和服务再打开